注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

データセットバックアップモデル

モデルアセットは、Foundryでのモデリングワークフローに推奨されます。

データセットバックアップモデルは、Foundry内のfoundry_ml Pythonライブラリーを使用して開発されたモデルです。データセットバックアップモデルは、Foundryで推論のためにシリアライズ可能なデータ変換の単位です。

モデルは一連のステージから成り立ち、各ステージにはしばしば機械学習アルゴリズムを用いて訓練された状態遷移が含まれます。モデルとステージは標準化されたインターフェースを提供し、これにより異なるライブラリーやアルゴリズムを使用して構築されたモデルでも一貫性のあるセマンティクスを持つことができます。これにより、モデルはFoundryの様々なアプリケーション間で交換可能に使用することができます。

Pythonでモデルを作成するためには、モデルコンストラクタに適用したいステージを渡します。 例えば、Model(stage1, stage2)は、stage1を入力データに適用し、その後stage2stage1の出力に適用し、stage2の出力を返します。各モデルはAPIと、モデルが入力として期待するものと出力として生成するものの技術的な定義を保存します。

モデルの詳細

インターフェース

モデルは異なる、互換性のないフレームワークからのステージをラップするかもしれないため、Modelインターフェースはすべてのモデルを透明に交換可能にします。

これらのメソッドとプロパティは、すべてのFoundry MLモデルで使用可能です:

  • transform(data): ステージを連続して適用し、スコア付きの出力を生成します。
  • append_stage(stage): 現在のステージの後に追加のステージをモデルに追加します。
  • input_spec: 期待される入力の形式を説明します。
  • output_spec: 出力の形式を説明します。
  • stages: モデル内のステージのリストを取得します。

シリアライゼーション

ほとんどのモデリングフレームワークは独自のシリアライゼーション形式と方法論を持っています。特に、分散型やマルチ言語フレームワークは、理解が難しいシリアライゼーション方法をよく持っています。Foundryのモデルインターフェースは、アーキテクチャV2を用いてシリアライゼーションプロセスを簡素化します。

アーキテクチャV2

アーキテクチャV2は、新たな機能のサポートを追加したシリアライゼーション形式です:

  • 非Pythonモデル(例:コンテナ化された、typescript、外部)のタイプセーフなシリアライゼーション。
  • 新しいモデルステージタイプに対するタイプセーフなサポート。
  • モデリング目標と安全なデータ入力を保証するためのモデルAPIのシリアライゼーション。
  • モデルのConda依存関係の追跡。
  • メモリプレッシャーを減らすための改善されたファイルサイズ。
  • 解釈不能なエラーを引き起こした旧型のタイプスペックとオートコンバーターシステムの削除。

テンプレート

Pythonトランスフォームでは、以下のテンプレートを使用することができます:

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 from transforms.api import transform, Input, Output from foundry_ml import Model @transform( training_data=Input("/path/to/input/training/data"), out_model = Output("/path/to/output/model"), ) def create_model(training_data, out_model): df = training_data.dataframe() # ここでモデルを学習させる model = Model(*model stages) model.save(out_model) @transform( in_model = Input("/path/to/output/model"), test_data = Input("/path/to/input/test/data" ), out_data = Output("/path/to/scores/output"), ) def apply_model(in_model, test_data, out_data): model = Model.load(in_model) # モデルを適用して結果を出力する output_df = model.transform(test_data.dataframe()) out_data.write_dataframe(output_df)

Code Workbookでは、モデルを保存し、コードブロックの関数のパラメーターとして定義することでそれを読み込むために、foundry_ml.Modelのインスタンスを返します。

ステージ

モデルは、ステージとして知られる個々の変換からなる線形のパイプラインです。すべてのステージは、その変換を実行するための共通のインターフェースを持っています。

ステージの種類

基本的なステージ契約は最小限で、単一のタイプです。

Stage()として呼ばれるステージは、外部オブジェクト(たとえばsklearnモデルなど)をラップするモデルパイプラインの計算コンポーネントを示します。transform()へのすべての呼び出しは、ホストされたモデル上のいくつかの登録済み関数にマップされます。

ステージには以下の責任があります:

  • 外部モデルオブジェクトをホストし、一貫したインターフェース(Stage.transform)を提供します。
  • パラメーターを昇格させ、その入力と出力の仕様を作成します。
  • ホストされたモデルをファイルにシリアライズとデシリアライズします。

対応するステージ

ほとんどの場合、ステージのカスタマイズは変換オブジェクトの外部で必要とされることは最小限です。Foundryは、対応するライブラリのタイプごとにステージの作成を自動化するステージレジストリを提供します。

現在foundry_mlがサポートしていて、登録された変換関数とシリアライゼーション形式を持つライブラリクラスを確認するために、help関数を利用します。

パラメーター

ステージには多数の設定可能なパラメーターが含まれることがあります。パラメーターは、変換関数の適用を制御するために使用されます。

標準化されたモデルとインターフェースをサポートするために、パラメーターはステージ間で関連情報を昇格させるために使用できます。

foundry_mlがサポートするステージでは、必要なパラメーター、デフォルトのパラメーター、およびオプションのパラメーターが動的に生成されています。利用可能なパラメーターについて詳しく学びましょう。