Snowflake ML リリースノート

この記事には、 Snowflake ML のリリースノートが含まれています。また、該当する場合は以下が含まれます。

  • 動作の変更

  • 新機能

  • 顧客向けバグ修正

注釈

これらの注記には、公表されていない機能の変更は含まれていません。そのような機能は、 Snowflake ML のソースコードにはあっても、公開ドキュメントには記載されていない可能性があります。

ドキュメントについては、 Snowflake ML:エンドツーエンドの機械学習 をご参照ください。

snowflake-ml-python パッケージの検証

すべてのSnowflakeパッケージは署名されており、その基点を確認することができます。 snowflake.ml.python パッケージを確認するには、以下の手順に従ってください。

  1. cosign をインストールします。この例では、Goインストールを使用します: Goによるcosignのインストール.

  2. PyPi などのリポジトリからファイルをダウンロードしてください。

  3. GitHub リリースページ から、そのリリースの .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のライブラリと署名を使用しています。検証するバージョンのファイル名を使用してください。

廃止予定に関するお知らせ

  • snowflake.ml.fileset.FileSet は廃止予定になっているため、今後のリリースでは削除される予定です。代わりに snowflake.ml.dataset.Dataset および snowflake.ml.data.DataConnector を使用してください。

  • snowflake.ml.cortex の「CamelCase」関数名は廃止予定にとなっているため、今後のリリースでは削除される予定です。代わりに「snake_case」を名前に使用してください。例えば、 ClassifyText ではなく classify_text を使用します。

  • partitioned_inefrerence_api デコレータは廃止予定になっているため、今後のリリースでは削除される予定です。代わりに custom_model.partitioned_api を使用してください。

バージョン1.8.5(2025-05-27)

動作の変更

ML ジョブズの動作が変わります。

  • 引数 num_instances はジョブ提出APIsでは target_instances に名前が変更され、必須になります。

バグ修正

モデルレジストリのバグ修正:

  • コンテナーサービスのリスト表示と削除に関するバグを修正しました。

  • scikit-learnパイプラインのロギングで、 explain 関数が作成されないバグを修正しました。

  • コンテナーのみのモデルのログを記録する際に、必要なバージョンの snowflake-ml-python がSnowflake condaチャンネルで利用できる状態にあるかを確認しなくなります。

説明可能性のバグ修正:

  • 互換性向上のため、最小の streamlit バージョンが1.30に変更されています。

モデリングのバグ修正:

  • xgboost が再び必須の依存関係になります(v1.8.4ではオプションでした)。

新機能

ML ジョブの新機能:

  • ジョブデコレータに min_instances 引数が追加され、ジョブを開始する前に指定された数のワーカーが準備完了になるまで待機するようになります。

バージョン1.8.4(2025-05-12)

動作の変更

ML ジョブズの動作が変わります。

  • id プロパティはジョブの完全修飾名になります。MLジョブ名を表す新しいプロパティ name が導入されました。

  • list_jobs メソッドは、ジョブIDの代わりにMLジョブ名を返すようになります。

モデルレジストリの動作変更:

  • log_model で、モデルがSnowpark Container Servicesのみにデプロイされている場合に説明可能性を有効にすると、警告ではなくエラーになり、ログ操作が完了しなくなるようになります。

バグ修正

モデルレジストリのバグ修正:

  • UnboundLocalError: local variable 'multiple_inputs' referenced before assignment. の原因となる PyTorch と TensorFlow モデルのロギングで発生するバグを修正しました。

新機能

新しいモデルレジストリ機能:

  • ウェアハウスにデプロイ可能なモデルの説明可能性を自動的に有効にします。

新しい説明可能性機能:

  • ノートブックの snowflake.ml.monitoring プロット説明における新しい視覚化関数です。

  • scikit-learnパイプラインでカテゴリ変換に対応します。

新しいModeling機能:

  • XGBoost モデルにおいて、 xgboost.DMatrix 入力用のカテゴリタイプに対応します。

バージョン1.8.3(2025-04-28)

新機能

新しいモデルレジストリ機能:

  • Container Runtime for MLにデプロイするためのGPU対応モデルをログに記録する場合、CUDAコンテナーイメージが可能であればデフォルトに設定されます。

  • Modelバージョンには、シングルノードのSnowpark Container Servicesジョブとして推論メソッドを実行する run_job メソッドがあります。このメソッドは、Container Runtime for MLにデプロイされていないモデルも含め、すべてのモデルで使用できます。

  • 分割されたモデルをログに記録する場合、ターゲットプラットフォームはデフォルトでSnowflakeウェアハウスになります。

バージョン1.8.2(2025-04-15)

新機能

ローカルのワークステーションからContainer Runtime for MLでコードを実行できる MLジョブ のAPIはプレビューで利用可能です。したがって、このAPIのドキュメントはSnowflake MLAPIリファレンスで利用でき、APIの変更はこのリリースノートに記載されています。MLジョブのAPIの新機能は公に発表されるまでここに掲載されない場合がありますが、APIのリファレンスには表示されます。

新しいモデルレジストリ機能:

  • モデルのSnowflakeステージに保存されたモデルのバージョンファイルを書き込むパスは、 log_model メソッドの save_location オプションを使用して指定できます。

  • Container Runtime for MLでモデルをログする場合、モデルの依存関係がデフォルトで pip_requirements に含まれるようになります。

バージョン1.8.1(2025-03-20)

バグ修正

モデルレジストリのバグ修正:

  • score_samples 推論メソッドを使ってscikit-learnモデルをログに記録する際の unsupported model type エラーを修正しました。

  • 既存の中断されたサービスに対する推論サービス作成の失敗を修正しました。

新機能

新しいモデルレジストリ機能:

  • log_model のモデルバージョンのコピーをサポート対象外の引数で作成すると、例外が発生するようになります。

バージョン1.8.0(2025-03-20)

動作の変更

モデルレジストリの動作変更:

  • transformers.Pipeline の自動で挿入される署名が FeatureGroupSpec のタスククラスを使用するように変更されました。

    • フィルマスクタスクの署名:

        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_kNone ではない場合のテキスト分類タスクの署名:

      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 Contaier 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-03-06)

snowflake-ml-python 1.7.5ではPython 3.12に対するサポートが追加されています。

バグ修正

モデルレジストリのバグ修正:

  • snowflake-ml-python 1.7.0以降を使用してkeras 2.xで tensorflow.keras モデルを保存すると、Snowflakeでモデルを実行できない互換性の問題を修正しました。この問題は、 relax_versionTrue (またはデフォルト)にセットされ、 snowflake-ml-python の新しいバージョンが利用できる場合に発生していました。影響を受けたモデルをログに記録してしまった場合は、 ModelVerison.load を使ってロードし、最新バージョンの snowflake-ml-python を使って再度ログを記録することで回復できます。

  • NULL 値以外の値のデータが ModelVersion.run に渡されないようにする検証を削除しました。

新機能

新しいモデルレジストリ機能:

  • オートマッピング機能によるHugging Faceモデル構成に対応するようになります。

  • tensorflowおよびpytorchバックエンドによるkeras 3.xモデルに対応するようになります。

新しいモデル説明可能性の機能:

  • ネイティブおよび snowflake-ml-python sklearnパイプラインに対応するようになります。

バージョン1.7.4(2025-01-28)

重要

snowflake.ml.fileset.FileSet は廃止予定になっているため、今後のリリースでは削除される予定です。代わりに snowflake.ml.dataset.Dataset および snowflake.ml.data.DataConnector を使用してください。

バグ修正

レジストリのバグ修正:

  • Hugging Faceパイプラインが不正なデータタイプを使用して読み込まれていた問題を修正しました。

  • モデルの署名を推測する際に、実際には1行しか使用されない問題を修正しました。

新機能

Cortexの新機能:

  • Complete 関数の新しい guardrails オプションです。

バージョン1.7.3(2025-01-09)

依存関係のアップグレード

  • fsspec および s3fs は2024.6.1以降で2026未満である必要があります。

  • mlflow は2.16.0以降で3未満である必要があります。

新機能

Cortexの新機能:

  • Cortex関数は「snake_case」になりました。例えば、 ClassifyTextclassify_text になります。古い「CamelCase」という名前はまだ使用できますが、今後のリリースでは削除される予定です。

新しいモデルレジストリ機能:

  • レジストリは現在、50万以上の機能をサポートしています。

  • Registry.log_model に、画像やその他のファイルをモデルに含めるための引数 user_files を追加しました。

  • 自動マッピング機能によるHugging Faceモデル構成の取り扱いのサポートを追加しました。

新しいデータ機能:

  • DataConnector.from_sql コンストラクターを追加しました。

バグ修正

レジストリのバグ修正:

  • ModelVersion.run への入力として、非範囲インデックスpandas DataFrame を提供した場合に発生したバグを修正しました。

  • 競合を回避するよう、モデルレジストリ名のランダム生成を改善しました。

  • シグネチャの推論、またはタイプが ARRAY で NULL 値を含む列を持つSnowpark DataFrame を使用して推論を実行する際の問題を修正しました。

  • ModelVersion.run は完全修飾サービス名を受け付けるようになりました。

  • 前処理のみのパイプラインモデルを含む、データ前処理のみのscikit-learnモデルの log_model のエラーを修正しました。

モニターのバグ修正:

  • 完全修飾名を使用してモニターを作成する際の問題を修正しました。