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。snowflake.ml.cortex
中的“CamelCase”函数名称已弃用,将在未来版本中移除。改为使用这些函数的“snake_case”名称。例如,使用classify_text
代替ClassifyText
。partitioned_inefrerence_api
装饰器已弃用,并将在未来版本中移除。请改用custom_model.partitioned_api
。
版本 1.8.5(2025 年 5 月 27 日)¶
行为变更¶
ML 作业行为变更:
在作业提交 APIs 中,实参
num_instances
已重命名为target_instances
,现在为必填项。
错误修复¶
模型注册表错误修复:
修复了列出和删除容器服务时的一个错误。
修复了记录未创建
explain
函数的 scikit-learn 管道时的错误。记录纯容器模型不会再检查所需
snowflake-ml-python
版本在 Snowflake conda 通道中是否可用。
可解释性错误修复:
为了提高兼容性,最低
streamlit
版本已降至 1.30。
建模错误修复:
xgboost
再次成为必要依赖项(在 v1.8.4 中是可选的)。
新功能¶
ML 作业新功能:
作业装饰器现在具有
min_instances
实参,可以让作业等待指定数量的工作器准备就绪后再开始。
版本 1.8.5(2025 年 5 月 12 日)¶
行为变更¶
ML 作业行为变更:
id
属性现在是任务的完全限定名称。引入了一个新属性name
来表示 ML 作业名称。list_jobs
方法现在返回 ML 作业名称,而非作业 ID。
模型注册表行为变更:
在
log_model
中,当模型仅部署到 Snowpark Container Services 时启用可解释性现在属于错误而非警告,并且会阻止日志操作完成。
错误修复¶
模型注册表错误修复:
修复了日志记录 PyTorch 和 TensorFlow 模型导致
UnboundLocalError: local variable 'multiple_inputs' referenced before assignment.
的一个错误
新功能¶
新的模型注册表功能:
自动为可部署到仓库的模型启用可解释性。
全新可解释性功能:
笔记本的
snowflake.ml.monitoring
绘图解释中的全新可视化功能。支持 scikit-learn 管道中的分类转换。
新的建模功能:
支持 XGBoost 模型中
xgboost.DMatrix
输入的分类类型。
版本 1.8.3(2025 年 4 月 28 日)¶
新功能¶
新的模型注册表功能:
将支持 GPU 的模型记录到 Container Runtime for ML 以进行部署时,将默认使用 CUDA 容器镜像(如可用)。
模型版本拥有一个
run_job
方法,该方法可以将推理方法作为单节点 Snowpark Container Services 作业运行。此方法适用于所有模型,包括那些未部署到 Container Runtime for ML 的模型。在记录分区模型时,目标平台默认为 Snowflake 仓库。
版本 1.8.2(2025 年 4 月 15 日)¶
新功能¶
允许您在本地工作站运行 Container Runtime for ML 上的代码的 ML Jobs API 现已提供预览版。此 API 的文档可在 Snowflake ML API 参考资料中找到,对此 API 的更改也会反映在这些版本说明中。ML Jobs API 中的新功能在正式发布前可能不会显示在此处,但会首先在 API 参考资料中提供。
新的模型注册表功能:
您可以使用
log_model
方法中的save_location
选项,来指定存储在模型 Snowflake 暂存区中的模型版本文件的写入路径。现在,在 Container Runtime for ML 中记录模型日志时,模型依赖项默认会包含在
pip_requirements
中。
版本 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。
错误修复¶
注册表错误修复:
修复了使用不正确的数据类型加载 Hugging Face 管道时的问题。
修复了在推断模型签名时实际上仅使用一行的问题。
新功能¶
新的 Cortex 功能:
Complete
函数的全新guardrails
选项。
版本 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
错误。
监控错误修复:
修复了使用完全限定名称创建监控的问题。