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 的库和签名。使用您正在验证的版本的文件名。
版本 1.7.0(2024 年 10 月 22 日)¶
行为变更¶
常规行为变更:
Python 3.9 现在是所需的最低版本。
数据连接器行为变更:
to_torch_dataset
和to_torch_datapipe
现在为标量数据创建一个维度 1。这使得能够与 PyTorch DataLoader 实现更加无缝的集成,后者可以通过堆叠输入来创建批次。下面的示例说明了其中的区别。ds = connector.to_torch_dataset(shuffle=False, batch_size=3)
输入数据:
"col1": [10, 11, 12]
上一个结果:
array([10., 11., 12.])
,形状为(3,)
新结果:
array([[10.], [11.], [12.]])
,形状为(3, 1)
输入数据:
[[0, 100], [1, 110], [2, 200]]
上一个结果:
array([[ 0, 100], [ 1, 110], [ 2, 200]])
,形状为(3,2)
新结果:无变化
您现在可以在
to_torch_dataset
中将批处理大小指定为None
,将维度压缩为 1,从而更好地与 PyTorch DataLoader 互操作。::code::None
是新的默认批处理大小。
模型开发行为变更:
eps
(epsilon) 实参不再与log_loss
指标一起使用。为了向后兼容,系统仍然会接受该实参,但会忽略其值,并且 epsilon 现在由底层 scikit-lean 实施来计算。
模型注册表行为变更:
在 Snowflake 8.40 或更高版本中创建推理服务时,不再需要外部访问集成。
新功能¶
新的模型注册表功能:
您现在可以在实例化
ModelContext
时传递关键字实参以提供数量可变的上下文值。例如:mc = custom_model.ModelContext( config = 'local_model_dir/config.json', m1 = model1 ) class ExamplePipelineModel(custom_model.CustomModel): def __init__(self, context: custom_model.ModelContext) -> None: super().__init__(context) v = open(self.context['config']).read() self.bias = json.loads(v)['bias'] @custom_model.inference_api def predict(self, input: pd.DataFrame) -> pd.DataFrame: model_output = self.context['m1'].predict(input) return pd.DataFrame({'output': model_output + self.bias})
支持 pandas 的
CategoricalDtype
用于分类列。log_model
方法现在接受signature
和sample_input_data
参数,以从可说明性和数据沿袭中捕获背景数据。
错误修复¶
数据连接器错误修复:
对于多维数据,
to_torch_dataset
和to_torch_datapipe
现在返回具有适当数据类型的 NumPy 数组,而不是列表。
特征商店错误修复:
修复了
ExampleHelper
使用不完整表名称的问题。将天气特征聚合时间从 1 天更改为 1 小时。
模型可解释性错误修复:
使用新的 SHAP 库版本,修复了 XGBoost 模型的可解释性问题。
版本 1.6.4(2024 年 10 月 17 日)¶
错误修复¶
模型注册表错误修复:
修复使用
ModelVersion.run
和模型服务时(基于 SPCS 的推理)的问题。
版本 1.6.3(2024 年 10 月 7 日)¶
行为变更¶
模型注册表行为变更:
此版本不再包含预览版模型注册表 API。在
snowflake.ml.model_registry
中使用公共 API。
错误修复¶
模型注册表错误修复:
修复记录模型时不遵守 PEP-508 (https://peps.python.org/pep-0508/) 约定的包的意外包名称规范化问题。
修复记录 MLflow 模型时的“远程 URI 无效”问题。
修复对
ModelVersion.run
的嵌套调用。修复本地包版本号包含基本版本以外的部分时的
log_model
故障。
新功能¶
新的模型注册表功能:
现在,您可以在
log_model
中通过task
参数设置模型的任务类型。
新的特征商店功能:
FeatureView
现在支持ON_CREATE
和ON_SCHEDULE
初始化模式。
版本 1.6.2(2024 年 9 月 4 日)¶
错误修复¶
修复了涉及在需要完全限定名称的位置传递无效名称的问题。这些问题现在可以正确引发异常。
建模错误修复:
使用 XGBoost 版本 2 及更高版本正确记录模型。
模型可解释性错误修复:
XGBoost 版本 2.1.0 及更高版本引入了解决方法和更好的错误处理。
正确处理多类别 XGBoost 分类模型
新功能¶
新的特征商店功能:
update_feature_view
方法现在接受FeatureView
对象作为名称和版本的替代。
版本 1.6.1(2024 年 8 月 13 日)¶
错误修复¶
特征商店错误修复:
生成数据集时,元数据大小不再受到限制。
模型注册表错误修复:
修复当未给出函数名称且模型具有多个目标方法时,模型版本的
run
方法中的错误消息。
新功能¶
新的建模功能:
如果已安装 Snowpark ML 模型,
set_params
方法现在可用于设置底层 scikit-learn 估算器的参数。
新的模型注册表功能:
支持
shap
库支持的 XGBoost、LightGBM、CatBoost 和 scikit-learn 模型的模型可解释性。
版本 1.6.0(2024 年 7 月 29 日)¶
行为变更¶
特征商店行为变更:
许多位置实参现在变为关键字实参。下表列出了每种方法受影响的实参。
方法
实参
Entity
初始值设定项desc
FeatureView
初始值设定项timestamp_col
、refresh_freq
、desc
FeatureStore
初始值设定项creation_mode
FeatureStore.update_entity
desc
FeatureStore.register_feature_view
block
、overwrite
FeatureStore.list_feature_views
entity_name
、feature_view_name
FeatureStore.get_refresh_history
verbose
Feature:Store.retrieve_feature_values
spine_timestamp_col
、exclude_columns
、include_feature_view_timestamp_col
FeatureStore.generate_training_set
save_as
、spine_timestamp_col
、spine_label_cols
、exclude_columns
、include_feature_view_timestamp_col
FeatureStore.generate_dataset
version
、spine_timestamp_col
、spine_label_cols
、exclude_columns
、include_feature_view_timestamp_col
、desc
、output_type
向
list_feature_views
的输出添加新列warehouse
。
错误修复¶
建模错误修复:
修复了
SimpleImputer
无法使用整型值插补整型列的问题。
模型注册表错误修复:
修复了提供基于非零索引的 pandas 数据帧
ModelVersion.run
时出现的问题。
新功能¶
新的特征商店功能:
向某些方法添加了过载,以接受
FeatureView
和名称/版本字符串。受影响的 APIs 包括read_feature_view
、refresh_feature_view
、get_refresh_history
、resume_feature_view
、suspend_feature_view
和delete_feature_view
。为所有公共 APIs 添加了 docstring 内联示例。
添加了
ExampleHelper
实用程序类来帮助加载源数据,以简化公共笔记本。添加了
update_entity
方法。为
FeatureView
构造函数添加了warehouse
实参,来替换默认仓库。
新的模型注册表功能:
添加了在注册 XGBoost、LightGBM 和 Catboost 模型时启用可解释性的选项。
添加了对从
ModelVersion
对象记录模型的支持。
新的建模功能:
您可以禁用分布式超参数优化中的 10GB 训练数据大小限制,方法是执行:
from snowflake.ml.modeling._internal.snowpark_implementations import ( distributed_hpo_trainer, ) distributed_hpo_trainer.ENABLE_EFFICIENT_MEMORY_USAGE = False
版本 1.5.4(2024 年 7 月 11 日)¶
错误修复¶
模型注册表错误修复:
修复了将模型部署到 Snowpark Container Services 时的“401 Unauthorized”问题。
特征商店错误修复:
属性设置器中的一些异常已降级为警告,让您可以在“Draft”功能视图中更改
desc
、refresh_freq
和warehouse
。
建模错误修复:
修复了将字典作为
categories
参数和 pandas DataFrame 中的数据,调用OneHotEncoder
和OrdinalEncoder
的问题。
新功能¶
新的模型注册表功能:
加载 Hugging Face Pipeline 模型时允许覆盖
device_map
和device
。添加
set_alias
和unset_alias
方法到ModelVersion
实例,用于管理模型版本的别名。添加
partitioned_inference_api
装饰器,以在模型中创建分区推理方法。
新的特征商店功能:
已为
list_feature_views
方法的输出添加新列refresh_freq
、refresh_mode
和scheduling_state
。update_feature_view
方法现在支持更新功能视图的描述。新方法
refresh_feature_view
和get_refresh_history
可管理功能视图的更新。新方法
generate_training_set
可生成表支持的功能快照。generate_dataset(..., output_type="table")
已弃用,并生成DeprecationWarning
。
新的建模功能:
OneHotEncoder
和OrdinalEncoder
的categories
实参现在接受数组类值。
版本 1.5.3(2024 年 6 月 17 日)¶
错误修复¶
模型注册表错误修复:
修复了使用超过 100,000 行的 pandas 数据帧作为存储过程中
ModelVersion.run
方法的输入时导致的不正确结果问题。
建模错误修复:
修复了将类别作为字典或 pandas DataFrame 传递给
OneHotEncoder
和OrdinalEncoder
的问题。
新功能¶
新的模型注册表功能:
模型注册表现在支持输入和输出数据中的时间戳 (TIMESTAMP_NTZ) 列。
新的建模功能:
OneHotEncoder
和OrdinalEncoder
现在支持categories
实参的数组类值列表。
新的数据集功能:
DatasetVersion
实例现在具有label_cols
和exclude_cols
属性。
版本 1.5.2(2024 年 6 月 10 日)¶
错误修复¶
模型注册表错误修复:
修复了阻止在存储过程中调用
log_model
的问题。
建模错误修复:
快速修复
import snowflake.ml.modeling.parameters.enable_anonymous_sproc
由于包依赖项错误而无法正常工作的问题。
版本 1.5.1(2024 年 5 月 22 日)¶
新功能¶
新的模型注册表功能:
log_model
、get_model
和delete_model
方法现在支持完全限定的名称。
新的建模功能:
现在,您可以在拟合期间使用匿名存储过程,使建模无需权限即可对注册表架构进行操作。调用
import snowflake.ml.modeling.parameters.enable_anonymous_sproc
以启用此功能。
错误修复¶
模型注册表错误修复:
修复了加载旧模型时出现的问题。
版本 1.5.0(2024 年 5 月 1 日)¶
行为变更¶
模型注册表行为变更:
fit_transform
方法现在可以返回 Snowpark DataFrame 或 Pandas DataFrame,与传递给该方法的 DataFrame 类型相匹配。
新功能¶
新的模型注册表功能:
添加了对从注册表导出模型 (
ModelVersion.export
) 的支持。添加了对加载底层模型对象 (
ModelVersion.load
) 的支持。添加了对重命名模型 (
Model.rename
) 的支持。
错误修复¶
模型注册表错误修复:
修复了“invalid parameter
SHOW_MODEL_DETAILS_IN_SHOW_VERSIONS_IN_MODEL
”错误。
版本 1.4.1(2024 年 4 月 18 日)¶
新功能¶
新的模型注册表功能:
添加了对 catboost 模型(
catboost.CatBoostClassifier
、catboost.CatBoostRegressor
)的支持。添加了对 lightgbm 模型(
lightgbm.Booster
、lightgbm.LightGBMClassifier
、lightgbm.LightGBMRegressor
)的支持。
错误修复¶
模型注册表错误修复:
修复了导致
relax_version
选项不起作用的错误。
版本 1.4.0(2024 年 4 月 8 日)¶
行为变更¶
模型注册表行为变更:
记录 XGBoost 模型时,默认情况下,
apply
方法不再作为目标方法包括在内。如果您需要在记录的模型中使用此方法,请手动将其纳入target-methods
选项中:log_model(..., options={"target_methods": ["apply", ...]})
新功能¶
新的模型注册表功能:
注册表现在支持记录句子转换器模型 (
sentence_transformers.SentenceTransformer
)。记录模型时不再需要
version_name
实参。如果未提供任何 ID,则会生成随机的人类可读 ID。
错误修复¶
模型注册表错误修复:
修复了在同一个查询中调用多个模型时,第一个模型之后的模型返回错误结果的问题。此修复在记录模型时适用,不适用于现有模型;您必须再次记录模型才能更正此行为。
建模错误修复:
修复了注册模型时出现的,仅将
save_model
中提到的方法添加到 Snowpark ML 模型的模型签名中的错误。修复批量推理方法(例如
predict
和predict_log_probe
)中的错误,该错误导致当n_jobs
不是 1 时,这些方法将无法执行。修复了批量推理方法中,第一行数据包含 NULL 时无法推理出数据类型的错误。
分布式超参数优化的输出列名称现在可以与 Snowflake 标识符正确匹配。
放宽了分布式超参数优化方法的依赖项版本;依赖项过于严格,会导致这些方法失败。
scikit-learn 现在被列为 LightGBM 包的依赖项。
版本 1.3.1(2024 年 3 月 21 日)¶
新功能¶
FileSet/FileSystem 更新:
snowflake.ml.fileset.sfcfs.SFFileSystem
现在可以在 UDFs 和存储过程中使用。
版本 1.3.0(2024 年 3 月 12 日)¶
行为变更¶
模型注册表行为变更:
如前所述,
relax_version
选项(在log_model
的options
实参中)的默认设置现在是True
,通过允许 Snowflake 中可用的依赖项版本,在大多数情况下实现更可靠的部署。运行模型方法时,基于值范围的输入验证(可防止输入溢出)现在可选。这应该可以提高性能,并且不会导致大多数类型的模型出现问题。要启用验证,请在调用模型的
run
方法时传递命名参数strict_input_validation=True
。
模型开发行为变更:
现在,
fit_predict
方法会返回 Pandas 或 Snowpark DataFrame,具体取决于输入数据的类型,并且适用于所有在底层 scikit-learn、xgboost 或 lightgbm 类中可用的类。
新功能和更新¶
FileSet/FileSystem 更新:
snowflake.ml.fileset.sfcfs.SFFileSystem
的实例现在可以使用pickle
实现序列化。
错误修复¶
模型注册表错误修复:
修复了某些情况下导入
log_model
的问题。修复了使用数组功能验证输入 Snowpark DataFrame 时出现的不正确的错误消息。
模型开发错误修复:
当 Snowflake conda 通道中没有安装的依赖项版本时,放宽所有推理方法的包版本。
版本 1.2.3(2024 年 2 月 26 日)¶
新功能和更新¶
模型开发更新:
现在,所有建模类都包含一种计算给定样本对数似然的
score_samples
方法。
模型注册表更新:
十进制类型特征会自动转换(带警告)为 DOUBLE 或 FLOAT,而不是产生错误。
改进了当前不支持的
pip-requirements
选项的错误消息。现在,您可以删除模型的某个版本。
错误修复¶
模型开发修复:
precision_recall_fscore_support
使用average="samples"
返回了不正确的结果。
模型注册表修复:
由于最近的 Snowflake 行为变更,无法在私有预览模型注册表 API 下新创建的注册表中正确检索描述、模型和标签。
版本 1.2.2(2024 年 2 月 13 日)¶
新功能和更新¶
模型注册表更新:
现在,您可以在使用私有预览注册表 API 将模型部署到 Snowpark Container Services 时,指定外部访问集成,从而允许模型在部署期间访问互联网以检索依赖项。所有部署都需要以下端点:
docker.com:80
docker.com:443
anaconda.com:80
anaconda.com:443
anaconda.org:80
anaconda.org:443
pypi.org:80
pypi.org:443
对于源自
HuggingFacePipeLineModel
的模型,需要以下端点。huggingface.com:80
huggingface.com:443
huggingface.co:80
huggingface.co:443
版本 1.2.1(2024 年 1 月 25 日)¶
新功能和更新¶
模型开发更新:
在可能的情况下推断转换器的列数据类型。
模型注册表更新:
relax_version
选项(在log_model
的options
实参中)放宽了指定版本的依赖项,以便在设置为True
时允许使用更新的次要版本。
版本 1.2.0(2024 年 1 月 12 日)¶
新功能和更新¶
模型注册表的公开预览版。请参阅 Snowflake Model Registry。模型注册表之前的私有预览版本已过时,但我们将继续提供支持,因为它包含公开预览版本中尚未提供的功能。
模型开发更新:
添加了对 AgglomerativeClustering、DBSCAN 和 OPTICS 类中
fit_predict
方法的支持。添加了对 MDS、SpectralEmbedding 和 TSNE 类中
fit_transform
方法的支持。