Snowflake 仓库中的推理

默认情况下,Snowflake Model Registry 在仓库中运行模型方法。在仓库中运行模型仅适用于中小型仅限 CPU 的模型,其依赖项可以通过 Snowflake conda 通道中提供的包来满足。

备注

您还可以在 Snowpark Container Services (SPCS) 计算池上运行模型。此方法更适合于可以受益于分布式推理的大型模型。有关更多信息,请参阅 Snowpark Container Services 中的 Model Serving

要开始使用,请在模型注册表中 记录模型。只有已在注册表中记录的模型才能进行推理。记录模型,或者通过 registry.get_model(...).version(...) 从注册表中加载现有模型,会返回一个 ModelVersion 对象,对该对象您可以调用 run 方法。

来自 Python 的推理

要调用模型版本的方法,请使用 mv.run,其中 mvModelVersion 对象。指定要调用的函数的名称,并传递包含推理数据的 Snowpark 或 pandas DataFrame,以及任何必需的参数。该方法在 Snowflake 仓库中执行。

该方法的返回值是 Snowpark 或 pandas DataFrame,匹配传入的 DataFrame 的类型。Snowpark DataFrames 采用延迟计算的方式,因此只有在调用 DataFrame 的 collectshowto_pandas 方法时才会运行此类方法。

备注

调用方法时,该方法会在连接注册表时所用会话内指定的仓库中运行。请参阅 指定仓库

下面的示例阐释了模型的 predict 方法的运行。除了推理数据(此处的 test_features)之外,此模型的 predict 方法不需要任何参数。如果确实需要,其他参数将作为附加参数在推理数据之后传递。

remote_prediction = mv.run(test_features, function_name="predict")
remote_prediction.show()   # assuming test_features is Snowpark DataFrame
Copy

要查看在给定模型上可以调用哪些方法,请调用 mv.show_functions。此方法的返回值是一个 ModelFunctionInfo 对象列表。这些对象中的每一个都包括以下属性:

  • name:可从 Python 或 SQL 调用的函数的名称。

  • target_method:原始登记的模型中 Python 方法的名称。

来自 SQL 的推理

您可以使用 model_name!method_name(...) 语法调用模型的方法。模型上可用的方法由底层 Python 模型类确定。例如,许多类型的模型都使用名为 predict 的方法进行推理。

要调用默认模型的方法,请使用以下语法。在括号中包含任何方法实参,并在 FROM 子句中指定包含推理数据的表。

SELECT <model_name>!<method_name>(...) FROM <table_name>;
Copy

要从模型的特定版本调用方法,请为模型的特定版本创建别名,然后通过别名调用该方法。

使用以下语法从模型的特定版本调用方法。

WITH <model_version_alias> AS MODEL <model_name> VERSION <version_or_alias_name>
    SELECT <model_version_alias>!<method_name>(...) FROM <table_name>;
Copy

以下示例使用 LAST 别名调用模型的最新版本。

WITH latest AS MODEL my_model VERSION LAST
    SELECT latest!predict(...) FROM my_table;
Copy

小技巧

在此处 参阅 SQL API 参考。

语言: 中文