Snowflake ML リリースノート¶
この記事には、 Snowflake ML のリリースノートが含まれています。また、該当する場合は以下が含まれます。
動作の変更
新機能
顧客向けバグ修正
注釈
これらの注記には、公表されていない機能の変更は含まれていません。そのような機能は、 Snowflake ML のソースコードにはあっても、公開ドキュメントには記載されていない可能性があります。
ドキュメントについては、 Snowflake ML:エンドツーエンドの機械学習 をご参照ください。
snowflake-ml-python
パッケージの検証¶
すべてのSnowflakeパッケージは署名されており、その基点を確認することができます。 snowflake.ml.python
パッケージを確認するには、以下の手順に従ってください。
cosign
をインストールします。この例では、Goインストールを使用します: Goによるcosignのインストール.PyPi などのリポジトリからファイルをダウンロードしてください。
GitHub リリースページ から、そのリリースの
.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」を名前に使用してください。例えば、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), ], )
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 Contaier 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-03-06)¶
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モデル構成に対応するようになります。
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」になりました。例えば、
ClassifyText
はclassify_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
のエラーを修正しました。
モニターのバグ修正:
完全修飾名を使用してモニターを作成する際の問題を修正しました。