Snowflake ML リリースノート

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

  • 動作の変更

  • 新機能

  • 顧客向けバグ修正

注釈

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

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

バージョン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]

      • 以前の結果: 図形 (3,)array([10., 11., 12.])

      • 新しい結果: 図形 (3, 1)array([[10.], [11.], [12.]])

    • 入力データ: [[0, 100], [1, 110], [2, 200]]

      • 以前の結果: 図形 (3,2)array([[ 0, 100], [ 1, 110], [ 2, 200]])

      • 新しい結果: 変更なし

  • PyTorch DataLoader との良好な相互運用性のために、 to_torch_datasetNone のバッチサイズを指定して、1次元を出力できるようになりました。 ::code::None が新しいデフォルトバッチサイズです。

モデル開発の動作変更:

  • eps (イプシロン)引数は、 log_loss メトリックでは使用されなくなりました。この引数は後方互換性のためにまだ受け入れられますが、その値は無視され、イプシロンは基になる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配列を返すようになりました。

Feature Storeのバグ修正:

  • ExampleHelper が不完全なテーブル名を使用していた問題を修正しました。

  • 気象機能の集計時間を1日から1時間に変更しました。

モデル説明可能性のバグ修正:

  • SHAP ライブラリの新バージョンを使用することにより、 XGBoost モデルの説明可能性に関する問題を修正しました。

バージョン1.6.4(2024-10-17)

バグ修正

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

  • ModelVersion.run をModel Servingで使用(SPCS での推論)する際の問題を修正しました。

バージョン1.6.3(2024-10-07)

動作の変更

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

  • このリリースには、Model Registry API のプレビューが含まれなくなりました。代わりに、 snowflake.ml.model_registry でパブリック API を使用します。

バグ修正

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

  • モデルのログ時に、 PEP-508 の表記に従わないパッケージが予期しないパッケージ名に正規化される問題を修正しました。

  • MLflow モデルのログ時の「Not a valid remote URI」エラーを修正しました。

  • ModelVersion.run へのネストした呼び出しを修正しました。

  • ローカルパッケージのバージョン番号に基本バージョン以外の部分が含まれている場合に log_model で失敗する問題を修正しました。

新機能

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

  • task パラメーターを介して log_model でモデルのタスク型を設定できるようになりました。

Feature Storeの新機能:

  • FeatureView は、 ON_CREATEON_SCHEDULE の初期化モードをサポートするようになりました。

バージョン1.6.2(2024-09-04)

バグ修正

  • 完全修飾名が必要な場合に渡される無効な名前に関するバグを修正しました。これらでは、例外が正しく発生するようになりました。

モデリングのバグ修正:

  • XGBoost バージョン2以降を使用して構築されたモデルを正しくログします。

モデル説明可能性のバグ修正:

  • XGBoost バージョン2.1.0以降での回避策と、エラー処理を改善しました。

  • マルチクラスの XGBoost 分類モデルを正しく処理するようになりました。

新機能

Feature Storeの新機能:

  • update_feature_view メソッドは、名前とバージョンの代わりに FeatureView オブジェクトを受け付けるようになりました。

バージョン1.6.1(2024-08-13)

バグ修正

Feature Storeのバグ修正:

  • データセット生成時にメタデータのサイズが制限されなくなりました。

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

  • 関数名が与えられておらず、モデルに複数のターゲットメソッドがある場合に、モデルバージョンの run メソッドで表示されるエラーメッセージを修正しました。

新機能

新しいModeling機能:

  • Snowpark ML のモデルが装備されている場合は、基になるscikit-learn推定器のパラメーターを設定するために set_params メソッドを利用できるようになりました。

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

  • XGBoost、 LightGBM、 CatBoost と、 shap ライブラリでサポートされているscikit-learnモデルで、モデル説明可能性のサポートするようになりました。

バージョン1.6.0(2024-07-29)

動作の変更

Feature Storeの動作変更:

  • 多数の位置引数がキーワード引数になりました。以下のテーブルは、各メソッドで影響を受ける引数のリストです。

    メソッド

    引数

    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 Dataframe ModelVersion.run を提供する際の問題を修正しました。

新機能

Feature Storeの新機能:

  • 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-07-11)

バグ修正

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

  • Snowpark Container Servicesにモデルを展開する際の「401 Unauthorized」問題を修正しました。

Feature Storeのバグ修正:

  • プロパティセッターの一部の例外が警告に格下げされ、「下書き」機能ビューで descrefresh_freq、および warehouse が変更できるようになりました。

モデリングのバグ修正:

  • ディクショナリを使用した OneHotEncoder および OrdinalEncoder を、 categories パラメーター、またpandas DataFrame として呼び出す際の問題を修正しました。

新機能

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

  • Hugging Faceパイプラインモデルのロード時に、 device_mapdevice のオーバーライドを許可します。

  • モデルのバージョンのエイリアスを管理するために、 ModelVersion インスタンスに set_aliasunset_alias メソッドを追加しました。

  • モデルに分割された推論メソッドを作成できるように、 partitioned_inference_api デコレーターを追加しました。

Feature Storeの新機能:

  • list_feature_views メソッドの出力に新しい refresh_freqrefresh_mode、 および scheduling_state 列が追加されました。

  • update_feature_view メソッドは、機能ビューの説明の更新をサポートするようになりました。

  • 新しいメソッド refresh_feature_viewget_refresh_history は、機能ビューの更新を管理します。

  • 新しいメソッド generate_training_set は、テーブル利用の機能スナップショットを生成します。 generate_dataset(..., output_type="table") は廃止され、 DeprecationWarning を生成します。

新しいModeling機能:

  • OneHotEncoderOrdinalEncoder は、 categories 引数で配列のような値のリストを受け付けるようになりました。

バージョン1.5.3(2024-06-17)

バグ修正

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

  • ストアドプロシージャの ModelVersion.run メソッドの入力として、100,000行を超えるpandas Dataframeを使用した場合に不正な結果が生じる問題を修正しました。

モデリングのバグ修正:

  • OneHotEncoderOrdinalEncoder にカテゴリをディクショナリまたはpandas DataFrame として渡す際の問題を修正しました。

新機能

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

  • モデルレジストリが入出力データのタイムスタンプ(TIMESTAMP_NTZ)列をサポートするようになりました。

新しいモデリング機能:

  • OneHotEncoderOrdinalEncoder は、 categories 引数で配列のような値のリストをサポートするようになりました。

新しいデータセット機能:

  • DatasetVersion インスタンスは、 label_colsexclude_cols プロパティを持つようになりました。

バージョン1.5.2(2024-06-10)

バグ修正

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

  • ストアドプロシージャ内で log_model を呼び出せない問題を修正しました。

モデリングのバグ修正:

  • パッケージの依存性エラーにより import snowflake.ml.modeling.parameters.enable_anonymous_sproc が動作しない場合のクイック修正。

バージョン1.5.1(2024-5-22)

新機能

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

  • log_modelget_model、および delete_model メソッドが完全修飾名をサポートするようになりました。

新しいモデリング機能:

  • フィッティング時に匿名ストアドプロシージャを使用できるようになったため、モデリング時にレジストリスキーマを操作する権限が不要になりました。この機能を有効にするには、 import snowflake.ml.modeling.parameters.enable_anonymous_sproc を呼び出します。

バグ修正

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

  • 古いモデルのロードに関する問題を修正しました。

バージョン1.5.0(2024-5-01)

動作の変更

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

  • fit_transform メソッドは、Snowpark DataFrameまたは pandas DataFrame のいずれかを返すことができるようになり、メソッドに渡される DataFrame の種類と一致するようになりました。

新機能

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

  • レジストリ(ModelVersion.export)からモデルをエクスポートするサポートを追加しました。

  • 基礎となるモデルオブジェクト(ModelVersion.load)をロードするサポートを追加しました。

  • モデル名の変更(Model.rename)のサポートを追加しました。

バグ修正

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

  • 「無効なパラメーター SHOW_MODEL_DETAILS_IN_SHOW_VERSIONS_IN_MODEL」エラーを修正しました。

バージョン1.4.1(2024-04-18)

新機能

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

  • catboostモデル(catboost.CatBoostClassifiercatboost.CatBoostRegressor)のサポートを追加しました。

  • lightgbmモデル(lightgbm.Boosterlightgbm.LightGBMClassifierlightgbm.LightGBMRegressor)のサポートを追加しました。

バグ修正

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

  • relax_version オプションが動作しない原因となっていたバグを修正しました。

バージョン1.4.0(2024-04-08)

動作の変更

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

  • XGBoost モデルをログ記録する際、 apply メソッドがデフォルトでターゲットメソッドに含まれなくなりました。ログ記録するモデルでこのメソッドが必要な場合は、 target-methods オプションに手動で含めてください。

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

新機能

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

  • レジストリがsentence transformerモデル(sentence_transformers.SentenceTransformer)のログ記録をサポートするようになりました。

  • モデルをログ記録する際、 version_name 引数は必要なくなりました。何も提供しないと、人間が読めるランダムな ID が生成されます。

バグ修正

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

  • 同じクエリで複数のモデルが呼び出された場合に、最初のモデル以降のモデルが不正な結果を返す問題を修正しました。この修正はモデルがログ記録されるときに適用され、既存のモデルには影響しません。この動作を修正するには、モデルを再度ログ記録する必要があります。

モデリングのバグ修正:

  • モデルの登録において、Snowpark ML モデルのモデル署名に save_model で言及されているメソッドのみが追加されるバグを修正しました。

  • predictpredict_log_probe などのバッチ推論メソッドで、 n_jobs が1でない場合にメソッドが実行されないバグを修正しました。

  • バッチ推論メソッドで、データの最初の行に NULL が含まれる場合にデータ型を推論できないバグを修正しました。

  • 分散ハイパーパラメーター最適化の出力列名がSnowflake識別子と正しく一致するようになりました。

  • 分散ハイパーパラメーター最適化メソッドの依存関係のバージョンを緩和しました。これらのメソッドは厳しすぎて、失敗の原因となっていました。

  • scikit-learnが LightGBM パッケージの依存関係として一覧表示されるようになりました。

バージョン1.3.1(2024-03-21)

新機能

FileSet/FileSystem の更新:

  • snowflake.ml.fileset.sfcfs.SFFileSystem が UDFs とストアドプロシージャで使用できるようになりました。

バージョン1.3.0(2024-03-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-02-26)

新機能および更新

モデル開発の更新:

  • すべてのモデリングクラスに、指定されたサンプルの対数尤度を計算する score_samples メソッドが追加されました。

モデルレジストリの更新:

  • 10進数型特徴量は、エラーを生成する代わりに、 DOUBLE または FLOAT に自動的にキャストされます(警告付き)。

  • 現在サポートされていない pip-requirements オプションのエラーメッセージを改善しました。

  • モデルのバージョンを削除できるようになりました。

バグ修正

モデル開発の修正:

  • precision_recall_fscore_supportaverage="samples" で不正な結果を返しました。

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

  • 最近のSnowflakeの動作変更により、プライベートプレビューモデルレジストリ API の下に新しく作成されたレジストリで、説明、モデル、およびタグが正しく取得されませんでした。

バージョン1.2.2(2024-02-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-01-25)

新機能および更新

モデル開発の更新:

  • 可能な場合は、変換の列データ型を推測します。

モデルレジストリの更新:

  • relax_version オプション(log_modeloptions 引数内)を True に設定すると、新しいマイナーバージョンを許可するように、指定されたバージョンの依存関係を緩和します。

バージョン1.2.0(2024-01-12)

新機能および更新

モデルレジストリのパブリックプレビューリリース。 Snowflakeモデルレジストリ をご参照ください。モデルレジストリの以前のプライベートプレビューリリースは廃止されましたが、パブリックプレビューバージョンではまだ利用できない機能が含まれている間は、引き続きサポートされます。

モデル開発の更新:

  • AgglomerativeClustering、 DBSCAN、 OPTICS クラスの fit_predict メソッドのサポートを追加しました。

  • MDS、 SpectralEmbedding、 TSNE クラスの fit_transform メソッドのサポートを追加しました。