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.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),
            ],
      )
      
      Copy
    • 词元分类任务的签名:

      ModelSignature(
          inputs=[
              FeatureSpec(name="inputs", dtype=DataType.STRING),
          ],
          outputs=[
              FeatureSpec(name="outputs", dtype=DataType.STRING),
          ],
      )
      
      Copy
    • 问答任务的签名:

      ModelSignature(
          inputs=[
              FeatureSpec(name="question", dtype=DataType.STRING),
              FeatureSpec(name="context", dtype=DataType.STRING),
          ],
          outputs=[
              FeatureSpec(name="outputs", dtype=DataType.STRING),
          ],
      )
      
      Copy
    • top_k 大于 1 时,用于问答任务的签名:

      ModelSignature(
          inputs=[
              FeatureSpec(name="question", dtype=DataType.STRING),
              FeatureSpec(name="context", dtype=DataType.STRING),
          ],
          outputs=[
              FeatureSpec(name="outputs", dtype=DataType.STRING),
          ],
      )
      
      Copy
    • top_kNone 时,文本分类任务的签名:

      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),
          ],
      )
      
      Copy
    • 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),
          ],
      )
      
      Copy
    • 文本生成任务的签名:

      ModelSignature(
          inputs=[FeatureSpec(name="inputs", dtype=DataType.STRING)],
          outputs=[
              FeatureSpec(name="outputs", dtype=DataType.STRING),
          ],
      )
      
      Copy
  • 现在,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)
    
    Copy

    对于多张量输入或输出,请使用:

    reg.log_model(
        model=model,
        ...,
        sample_input_data=[data_x_1, data_x_2],
        options={"multiple_inputs": True}
    )
    
    Copy
  • 当模型可以部署到 Snowpark Container Services 时,enable_explainability 现在默认为 False

错误修复

建模错误修复:

  • 修复了某些指标中的以下错误:允许在存储过程中自动安装不受支持的 numpy 版本,从而导致在执行时出现 numpy 错误。

模型注册表错误修复:

  • 修复了以下错误:将受支持的模型指定为 CustomModel 属性时,会造成不正确的 Model does not have _is_inference_api 错误消息。

  • 修复了以下错误:当具有 500 个以上的输入特征的模型部署到 SPCS 时,推理不起作用。

新功能

新的模型注册表功能:

  • 支持使用单个 torch.Tensortensorflow.Tensortensorflow.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 日)

错误修复

注册表错误修复:

  • 修复了使用不正确的数据类型加载 Hugging Face 管道时的问题。

  • 修复了在推断模型签名时实际上仅使用一行的问题。

新功能

新的 Cortex 功能:

  • Complete 函数新增 guardrails 选项,用于启用 Cortex Guard

版本 1.7.3(2025 年 1 月 9 日)

依赖项升级

  • fsspecs3fs 必须是 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 错误。

监控错误修复:

  • 修复了使用完全限定名称创建监控的问题。

语言: 中文