Snowflake ML 版本说明¶
本文包含 Snowflake ML 的版本说明,包括以下内容(如果适用):
行为变更
新功能
面向客户的错误修复
备注
这些说明未包含尚未公开宣布的功能的变更。此类功能可能会显示在 Snowflake ML 源代码中,但不会显示在公开的文档中。
有关文档,请参阅 Snowflake ML:端到端机器学习。
验证 snowflake-ml-python
包¶
所有 Snowflake 包都带有签名,允许您验证其来源。要验证 snowflake.ml.python
包,请按照以下步骤操作:
安装
cosign
。此示例使用 Go 安装:使用 Go 安装 cosign (https://edu.chainguard.dev/open-source/sigstore/cosign/how-to-install-cosign/#installing-cosign-with-go)。从 PyPi (https://pypi.org/project/snowflake-ml-python/#files) 等存储库下载文件。
从 GitHub 版本页面 (https://github.com/snowflakedb/snowflake-ml-python/releases/) 下载该版本的
.sig
文件。使用
cosign
验证签名。例如:
cosign verify-blob snowflake_ml_python-1.7.0.tar.gz --key snowflake-ml-python-1.7.0.pub --signature resources.linux.snowflake_ml_python-1.7.0.tar.gz.sig
cosign verify-blob snowflake_ml_python-1.7.0.tar.gz --key snowflake-ml-python-1.7.0.pub --signature resources.linux.snowflake_ml_python-1.7.0
备注
此示例使用包版本 1.7.0 的库和签名。使用您正在验证的版本的文件名。
弃用声明¶
snowflake.ml.fileset.FileSet
已弃用,并将在未来版本中移除。改为使用 snowflake.ml.dataset.Dataset 和 `snowflake.ml.data.DataConnector<https://docs.snowflake.com/en/developer-guide/snowpark-ml/reference/latest/api/data/snowflake.ml.data.data_connector.DataConnector>`_。snowflake.ml.cortex
中的“CamelCase”函数名称已弃用,将在未来版本中移除。使用“snake_case”名称取而代之。例如,使用classify_text
代替ClassifyText
。
版本 1.8.1(2025 年 3 月 20 日)¶
错误修复¶
模型注册表错误修复:
修复了使用
score_samples
推理方法记录 scikit-learn 模型日志时的unsupported model type
错误。修复了在现有挂起服务上创建推理服务失败的问题。
新功能¶
新的模型注册表功能:
创建使用
log_model
的模型版本副本时,如果实参不受支持,现会引发异常。
版本 1.80(2025 年 3 月 20 日)¶
行为变更¶
模型注册表行为变更:
transformers.Pipeline
中的自动推理签名已更改为使用FeatureGroupSpec
任务类,包括:Fill-mask 任务的签名:
ModelSignature( inputs=[ FeatureSpec(name="inputs", dtype=DataType.STRING), ], outputs=[ FeatureSpec(name="outputs", dtype=DataType.STRING), ], )
ModelSignature( inputs=[ FeatureSpec(name="inputs", dtype=DataType.STRING), ], outputs=[ FeatureGroupSpec( name="outputs", specs=[ FeatureSpec(name="sequence", dtype=DataType.STRING), FeatureSpec(name="score", dtype=DataType.DOUBLE), FeatureSpec(name="token", dtype=DataType.INT64), FeatureSpec(name="token_str", dtype=DataType.STRING), ], shape=(-1,), ), ], )
词元分类任务的签名:
ModelSignature( inputs=[ FeatureSpec(name="inputs", dtype=DataType.STRING), ], outputs=[ FeatureSpec(name="outputs", dtype=DataType.STRING), ], )
ModelSignature( inputs=[FeatureSpec(name="inputs", dtype=DataType.STRING)], outputs=[ FeatureGroupSpec( name="outputs", specs=[ FeatureSpec(name="word", dtype=DataType.STRING), FeatureSpec(name="score", dtype=DataType.DOUBLE), FeatureSpec(name="entity", dtype=DataType.STRING), FeatureSpec(name="index", dtype=DataType.INT64), FeatureSpec(name="start", dtype=DataType.INT64), FeatureSpec(name="end", dtype=DataType.INT64), ], shape=(-1,), ), ], )
问答任务的签名:
ModelSignature( inputs=[ FeatureSpec(name="question", dtype=DataType.STRING), FeatureSpec(name="context", dtype=DataType.STRING), ], outputs=[ FeatureSpec(name="outputs", dtype=DataType.STRING), ], )
ModelSignature( inputs=[ FeatureSpec(name="question", dtype=DataType.STRING), FeatureSpec(name="context", dtype=DataType.STRING), ], outputs=[ FeatureGroupSpec( name="answers", specs=[ FeatureSpec(name="score", dtype=DataType.DOUBLE), FeatureSpec(name="start", dtype=DataType.INT64), FeatureSpec(name="end", dtype=DataType.INT64), FeatureSpec(name="answer", dtype=DataType.STRING), ], shape=(-1,), ), ], )
当
top_k
大于 1 时,用于问答任务的签名:ModelSignature( inputs=[ FeatureSpec(name="question", dtype=DataType.STRING), FeatureSpec(name="context", dtype=DataType.STRING), ], outputs=[ FeatureSpec(name="outputs", dtype=DataType.STRING), ], )
ModelSignature( inputs=[ FeatureSpec(name="question", dtype=DataType.STRING), FeatureSpec(name="context", dtype=DataType.STRING), ], outputs=[ FeatureGroupSpec( name="answers", specs=[ FeatureSpec(name="score", dtype=DataType.DOUBLE), FeatureSpec(name="start", dtype=DataType.INT64), FeatureSpec(name="end", dtype=DataType.INT64), FeatureSpec(name="answer", dtype=DataType.STRING), ], shape=(-1,), ), ], )
当
top_k
为None
时,文本分类任务的签名:ModelSignature( inputs=[ FeatureSpec(name="text", dtype=DataType.STRING), FeatureSpec(name="text_pair", dtype=DataType.STRING), ], outputs=[ FeatureSpec(name="label", dtype=DataType.STRING), FeatureSpec(name="score", dtype=DataType.DOUBLE), ], )
ModelSignature( inputs=[ FeatureSpec(name="text", dtype=DataType.STRING), ], outputs=[ FeatureSpec(name="label", dtype=DataType.STRING), FeatureSpec(name="score", dtype=DataType.DOUBLE), ], )
当
top_k
不是None
时,文本分类任务的签名:ModelSignature( inputs=[ FeatureSpec(name="text", dtype=DataType.STRING), FeatureSpec(name="text_pair", dtype=DataType.STRING), ], outputs=[ FeatureSpec(name="outputs", dtype=DataType.STRING), ], )
ModelSignature( inputs=[ FeatureSpec(name="text", dtype=DataType.STRING), ], outputs=[ FeatureGroupSpec( name="labels", specs=[ FeatureSpec(name="label", dtype=DataType.STRING), FeatureSpec(name="score", dtype=DataType.DOUBLE), ], shape=(-1,), ), ], )
文本生成任务的签名:
ModelSignature( inputs=[FeatureSpec(name="inputs", dtype=DataType.STRING)], outputs=[ FeatureSpec(name="outputs", dtype=DataType.STRING), ], )
ModelSignature( inputs=[ FeatureGroupSpec( name="inputs", specs=[ FeatureSpec(name="role", dtype=DataType.STRING), FeatureSpec(name="content", dtype=DataType.STRING), ], shape=(-1,), ), ], outputs=[ FeatureGroupSpec( name="outputs", specs=[ FeatureSpec(name="generated_text", dtype=DataType.STRING), ], shape=(-1,), ) ], )
现在,PyTorch 和 TensorFlow 模型在记录到模型注册表时,默认期望单个张量输入和输出。要使用多个张量(以前的行为方式),请设置
options={"multiple_inputs": True}
。单张量输入的示例:
import torch class TorchModel(torch.nn.Module): def __init__(self, n_input: int, n_hidden: int, n_out: int, dtype: torch.dtype = torch.float32) -> None: super().__init__() self.model = torch.nn.Sequential( torch.nn.Linear(n_input, n_hidden, dtype=dtype), torch.nn.ReLU(), torch.nn.Linear(n_hidden, n_out, dtype=dtype), torch.nn.Sigmoid(), ) def forward(self, tensor: torch.Tensor) -> torch.Tensor: return cast(torch.Tensor, self.model(tensor)) # Sample usage: data_x = torch.rand(size=(batch_size, n_input)) # Log model with single tensor reg.log_model( model=model, ..., sample_input_data=data_x ) # Run inference with single tensor mv.run(data_x)
对于多张量输入或输出,请使用:
reg.log_model( model=model, ..., sample_input_data=[data_x_1, data_x_2], options={"multiple_inputs": True} )
当模型可以部署到 Snowpark Container Services 时,
enable_explainability
现在默认为False
。
错误修复¶
建模错误修复:
修复了某些指标中的以下错误:允许在存储过程中自动安装不受支持的 numpy 版本,从而导致在执行时出现 numpy 错误。
模型注册表错误修复:
修复了以下错误:将受支持的模型指定为
CustomModel
属性时,会造成不正确的Model does not have _is_inference_api
错误消息。修复了以下错误:当具有 500 个以上的输入特征的模型部署到 SPCS 时,推理不起作用。
新功能¶
新的模型注册表功能:
支持使用单个
torch.Tensor
、tensorflow.Tensor
和tensorflow.Variable
作为输入或输出数据。支持 XGBoost 模型的
xgboost.DMatrix datatype
。
版本 1.7.5(2025 年 3 月 6 日)¶
snowflake-ml-python
1.7.5 添加了对 Python 3.12 的支持。
错误修复¶
模型注册表错误修复:
修复了一个兼容性问题,当使用
snowflake-ml-python
1.7.0 或更高版本保存采用 keras 2.x 的tensorflow.keras
模型时,该模型无法在 Snowflake 中运行。当relax_version
设置为True``(或默认值)并且有新版本的 ``snowflake-ml-python
可用时,会发生此问题。如果您已在日志中记录受影响的模型,则可以使用ModelVerison.load
加载模型,然后使用最新版本的snowflake-ml-python
重新记录模型日志,从而恢复该模型。移除了阻止将不具有非 null 值的数据传递给
ModelVersion.run
的验证。
新功能¶
新的模型注册表功能:
支持具有自动映射功能的 Hugging Face 模型配置。
支持使用 ternsorflow 和 pytorch 后端的 keras 3.x 模型。
新的模型可解释性功能:
支持原生和
snowflake-ml-python
sklearn 管道。
版本 1.7.4(2025 年 1 月 28 日)¶
重要
snowflake.ml.fileset.FileSet
已弃用,并将在未来版本中移除。改为使用 snowflake.ml.dataset.Dataset 和 `snowflake.ml.data.DataConnector<https://docs.snowflake.com/en/developer-guide/snowpark-ml/reference/latest/api/data/snowflake.ml.data.data_connector.DataConnector>`_。
错误修复¶
注册表错误修复:
修复了使用不正确的数据类型加载 Hugging Face 管道时的问题。
修复了在推断模型签名时实际上仅使用一行的问题。
新功能¶
新的 Cortex 功能:
Complete
函数新增guardrails
选项,用于启用 Cortex Guard。
版本 1.7.3(2025 年 1 月 9 日)¶
依赖项升级¶
fsspec
和s3fs
必须是 2024.6.1 或更高版本,不得低于 2026 版本。mlflow
必须是 2.16.0 或更高版本,并且低于 3 版本。
新功能¶
新的 Cortex 功能:
Cortex 函数现在具有“snake_case”名称。 例如,
ClassifyText
现在是classify_text
。旧的“CamelCase”名称仍然有效,但将从未来版本中移除。
新的模型注册表功能:
注册表现在支持超过 500,000 个功能。
向
Registry.log_model
添加了user_files
实参以在模型中包含图像或其他文件。添加了对处理具有自动映射功能的 Hugging Face 模型配置的支持。
新数据特性:
添加了
DataConnector.from_sql
构造函数。
错误修复¶
注册表错误修复:
修复了在将非范围索引 pandas DataFrame 作为
ModelVersion.run
输入时发生的错误。改进了随机模型注册名称生成,以避免冲突。
修复了在使用具有 ARRAY 列类型且包含 NULL 值的 Snowpark DataFrame 推断签名或运行引用时出现的问题
ModelVersion.run
现在接受完全限定的服务名称。修复了任何仅包含数据预处理的 scikit-learn 模型(包括仅预处理的管道模型)中的
log_model
错误。
监控错误修复:
修复了使用完全限定名称创建监控的问题。