Inferência em warehouses Snowflake¶
O Snowflake Model Registry executa métodos de modelo em um warehouse por padrão. A execução de modelos em um warehouse é apropriada para modelos somente CPU de pequeno a médio porte cujas dependências podem ser atendidas por pacotes disponíveis no canal conda do Snowflake.
Nota
Você também pode executar modelos em um pool de computação Snowpark Container Services (SPCS). Essa abordagem é mais apropriada para modelos grandes que podem se beneficiar da inferência distribuída. Consulte Model Serving no Snowpark Container Services para obter mais informações.
Para começar, registra o log do modelo no registro do modelo. Somente os modelos que foram registrados em log no registro estão disponíveis para inferência. O registro de um modelo ou o carregamento de um modelo existente do registro por meio de registry.get_model(...).version(...)
retorna um objeto ModelVersion
no qual é possível chamar o método run
.
Inferência a partir do Python¶
Para chamar um método de uma versão de modelo, use mv.run
, em que mv
é um objeto ModelVersion
. Especifique o nome da função a ser chamada e passe um Snowpark ou pandas DataFrame que contenha os dados de inferência, juntamente com os parâmetros necessários. O método é executado em um warehouse Snowflake.
O valor de retorno do método é um Snowpark ou pandas DataFrame, que corresponde ao tipo de DataFrame passado. DataFrames Snowpark são avaliados lentamente, então o método é executado somente quando o método do DataFrame collect
, show
ou to_pandas
for chamado.
Nota
Invocar um método executa-o no warehouse especificado na sessão que você está usando para se conectar ao registro. Consulte Especificação de um warehouse.
O exemplo a seguir ilustra a execução do método predict
de um modelo. O método predict
deste modelo não requer nenhum parâmetro além dos dados de inferência (test_features
aqui). Se assim fosse, eles seriam passados como argumentos adicionais após os dados de inferência.
remote_prediction = mv.run(test_features, function_name="predict")
remote_prediction.show() # assuming test_features is Snowpark DataFrame
Para ver quais métodos podem ser chamados em um determinado modelo, chame mv.show_functions
. O valor de retorno deste método é uma lista de objetos ModelFunctionInfo
. Cada um desses objetos inclui os seguintes atributos:
name
: o nome da função que pode ser chamada em Python ou SQL.target_method
: o nome do método Python no modelo registrado original.
Inferência a partir de SQL¶
Use a sintaxe model_name!method_name(...)
para chamar ou invocar métodos de um modelo. Os métodos disponíveis em um modelo são determinados pela classe de modelo Python subjacente. Por exemplo, muitos tipos de modelos usam um método chamado predict para inferência.
Para chamar um método do modelo padrão, use a seguinte sintaxe. Inclua qualquer argumento de método entre parênteses e especifique a tabela que contém os dados de inferência na cláusula FROM
.
SELECT <model_name>!<method_name>(...) FROM <table_name>;
Para invocar um método de uma versão específica de um modelo, crie um alias para a versão específica do modelo e chame o método por meio do alias.
Use a seguinte sintaxe para chamar um método de uma versão específica de um modelo.
WITH <model_version_alias> AS MODEL <model_name> VERSION <version_or_alias_name>
SELECT <model_version_alias>!<method_name>(...) FROM <table_name>;
O exemplo a seguir usa o alias LAST
para chamar a versão mais recente de um modelo.
WITH latest AS MODEL my_model VERSION LAST
SELECT latest!predict(...) FROM my_table;
Dica
Veja a referência de SQL API completa do modelo aqui.