Snowflake ML 版本说明

本文包含 Snowflake ML 的版本说明,包括以下内容(如果适用):

  • 行为变更

  • 新功能

  • 面向客户的错误修复

备注

这些说明未包含尚未公开宣布的功能的变更。此类功能可能会显示在 Snowflake ML 源代码中,但不会显示在公开的文档中。

有关文档,请参阅 Snowflake ML:端到端机器学习

验证 snowflake-ml-python 包

所有 Snowflake 包都带有签名,允许您验证其来源。要验证 snowflake.ml.python 包,请按照以下步骤操作:

  1. 安装 cosign。此示例使用 Go 安装:使用 Go 安装 cosign (https://edu.chainguard.dev/open-source/sigstore/cosign/how-to-install-cosign/#installing-cosign-with-go)。

  2. 从 PyPi (https://pypi.org/project/snowflake-ml-python/#files) 等存储库下载文件。

  3. 从 GitHub 版本页面 (https://github.com/snowflakedb/snowflake-ml-python/releases/) 下载该版本的 .sig 文件。

  4. 使用 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
Copy

备注

此示例使用包版本 1.7.0 的库和签名。使用您正在验证的版本的文件名。

版本 1.7.0(2024 年 10 月 22 日)

行为变更

常规行为变更:

  • Python 3.9 现在是所需的最低版本。

数据连接器行为变更:

  • to_torch_datasetto_torch_datapipe 现在为标量数据创建一个维度 1。这使得能够与 PyTorch DataLoader 实现更加无缝的集成,后者可以通过堆叠输入来创建批次。下面的示例说明了其中的区别。

    ds = connector.to_torch_dataset(shuffle=False, batch_size=3)
    
    Copy
    • 输入数据:"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})
    
    Copy
  • 支持 pandas 的 CategoricalDtype 用于分类列。

  • log_model 方法现在接受 signaturesample_input_data 参数,以从可说明性和数据沿袭中捕获背景数据。

错误修复

数据连接器错误修复:

  • 对于多维数据,to_torch_datasetto_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_CREATEON_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_colrefresh_freqdesc

    FeatureStore 初始值设定项

    creation_mode

    FeatureStore.update_entity

    desc

    FeatureStore.register_feature_view

    blockoverwrite

    FeatureStore.list_feature_views

    entity_namefeature_view_name

    FeatureStore.get_refresh_history

    verbose

    Feature:Store.retrieve_feature_values

    spine_timestamp_colexclude_columnsinclude_feature_view_timestamp_col

    FeatureStore.generate_training_set

    save_asspine_timestamp_colspine_label_colsexclude_columnsinclude_feature_view_timestamp_col

    FeatureStore.generate_dataset

    versionspine_timestamp_colspine_label_colsexclude_columnsinclude_feature_view_timestamp_coldescoutput_type

  • list_feature_views 的输出添加新列 warehouse

错误修复

建模错误修复:

  • 修复了 SimpleImputer 无法使用整型值插补整型列的问题。

模型注册表错误修复:

  • 修复了提供基于非零索引的 pandas 数据帧 ModelVersion.run 时出现的问题。

新功能

新的特征商店功能:

  • 向某些方法添加了过载,以接受 FeatureView 和名称/版本字符串。受影响的 APIs 包括 read_feature_viewrefresh_feature_viewget_refresh_historyresume_feature_viewsuspend_feature_viewdelete_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
    
    Copy

版本 1.5.4(2024 年 7 月 11 日)

错误修复

模型注册表错误修复:

  • 修复了将模型部署到 Snowpark Container Services 时的“401 Unauthorized”问题。

特征商店错误修复:

  • 属性设置器中的一些异常已降级为警告,让您可以在“Draft”功能视图中更改 descrefresh_freqwarehouse

建模错误修复:

  • 修复了将字典作为 categories 参数和 pandas DataFrame 中的数据,调用 OneHotEncoderOrdinalEncoder 的问题。

新功能

新的模型注册表功能:

  • 加载 Hugging Face Pipeline 模型时允许覆盖 device_mapdevice

  • 添加 set_aliasunset_alias 方法到 ModelVersion 实例,用于管理模型版本的别名。

  • 添加 partitioned_inference_api 装饰器,以在模型中创建分区推理方法。

新的特征商店功能:

  • 已为 list_feature_views 方法的输出添加新列 refresh_freqrefresh_modescheduling_state

  • update_feature_view 方法现在支持更新功能视图的描述。

  • 新方法 refresh_feature_viewget_refresh_history 可管理功能视图的更新。

  • 新方法 generate_training_set 可生成表支持的功能快照。generate_dataset(..., output_type="table") 已弃用,并生成 DeprecationWarning

新的建模功能:

  • OneHotEncoderOrdinalEncodercategories 实参现在接受数组类值。

版本 1.5.3(2024 年 6 月 17 日)

错误修复

模型注册表错误修复:

  • 修复了使用超过 100,000 行的 pandas 数据帧作为存储过程中 ModelVersion.run 方法的输入时导致的不正确结果问题。

建模错误修复:

  • 修复了将类别作为字典或 pandas DataFrame 传递给 OneHotEncoderOrdinalEncoder 的问题。

新功能

新的模型注册表功能:

  • 模型注册表现在支持输入和输出数据中的时间戳 (TIMESTAMP_NTZ) 列。

新的建模功能:

  • OneHotEncoderOrdinalEncoder 现在支持 categories 实参的数组类值列表。

新的数据集功能:

  • DatasetVersion 实例现在具有 label_colsexclude_cols 属性。

版本 1.5.2(2024 年 6 月 10 日)

错误修复

模型注册表错误修复:

  • 修复了阻止在存储过程中调用 log_model 的问题。

建模错误修复:

  • 快速修复 import snowflake.ml.modeling.parameters.enable_anonymous_sproc 由于包依赖项错误而无法正常工作的问题。

版本 1.5.1(2024 年 5 月 22 日)

新功能

新的模型注册表功能:

  • log_modelget_modeldelete_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.CatBoostClassifiercatboost.CatBoostRegressor)的支持。

  • 添加了对 lightgbm 模型(lightgbm.Boosterlightgbm.LightGBMClassifierlightgbm.LightGBMRegressor)的支持。

错误修复

模型注册表错误修复:

  • 修复了导致 relax_version 选项不起作用的错误。

版本 1.4.0(2024 年 4 月 8 日)

行为变更

模型注册表行为变更:

  • 记录 XGBoost 模型时,默认情况下,apply 方法不再作为目标方法包括在内。如果您需要在记录的模型中使用此方法,请手动将其纳入 target-methods 选项中:

    log_model(..., options={"target_methods": ["apply", ...]})
    
    Copy

新功能

新的模型注册表功能:

  • 注册表现在支持记录句子转换器模型 (sentence_transformers.SentenceTransformer)。

  • 记录模型时不再需要 version_name 实参。如果未提供任何 ID,则会生成随机的人类可读 ID。

错误修复

模型注册表错误修复:

  • 修复了在同一个查询中调用多个模型时,第一个模型之后的模型返回错误结果的问题。此修复在记录模型时适用,不适用于现有模型;您必须再次记录模型才能更正此行为。

建模错误修复:

  • 修复了注册模型时出现的,仅将 save_model 中提到的方法添加到 Snowpark ML 模型的模型签名中的错误。

  • 修复批量推理方法(例如 predictpredict_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_modeloptions 实参中)的默认设置现在是 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_modeloptions 实参中)放宽了指定版本的依赖项,以便在设置为 True 时允许使用更新的次要版本。

版本 1.2.0(2024 年 1 月 12 日)

新功能和更新

模型注册表的公开预览版。请参阅 Snowflake Model Registry。模型注册表之前的私有预览版本已过时,但我们将继续提供支持,因为它包含公开预览版本中尚未提供的功能。

模型开发更新:

  • 添加了对 AgglomerativeClustering、DBSCAN 和 OPTICS 类中 fit_predict 方法的支持。

  • 添加了对 MDS、SpectralEmbedding 和 TSNE 类中 fit_transform 方法的支持。

语言: 中文