注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
モデルアセットは、Foundryでのモデリングワークフローに推奨されます。
データセットバックアップモデルは、Foundry内のfoundry_ml
Pythonライブラリーを使用して開発されたモデルです。データセットバックアップモデルは、Foundryで推論のためにシリアライズ可能なデータ変換の単位です。
モデルは一連のステージから成り立ち、各ステージにはしばしば機械学習アルゴリズムを用いて訓練された状態遷移が含まれます。モデルとステージは標準化されたインターフェースを提供し、これにより異なるライブラリーやアルゴリズムを使用して構築されたモデルでも一貫性のあるセマンティクスを持つことができます。これにより、モデルはFoundryの様々なアプリケーション間で交換可能に使用することができます。
Pythonでモデルを作成するためには、モデルコンストラクタに適用したいステージを渡します。
例えば、Model(stage1, stage2)
は、stage1
を入力データに適用し、その後stage2
をstage1
の出力に適用し、stage2
の出力を返します。各モデルはAPIと、モデルが入力として期待するものと出力として生成するものの技術的な定義を保存します。
モデルは異なる、互換性のないフレームワークからのステージをラップするかもしれないため、Model
インターフェースはすべてのモデルを透明に交換可能にします。
これらのメソッドとプロパティは、すべてのFoundry MLモデルで使用可能です:
transform(data)
: ステージを連続して適用し、スコア付きの出力を生成します。append_stage(stage)
: 現在のステージの後に追加のステージをモデルに追加します。input_spec
: 期待される入力の形式を説明します。output_spec
: 出力の形式を説明します。stages
: モデル内のステージのリストを取得します。ほとんどのモデリングフレームワークは独自のシリアライゼーション形式と方法論を持っています。特に、分散型やマルチ言語フレームワークは、理解が難しいシリアライゼーション方法をよく持っています。Foundryのモデルインターフェースは、アーキテクチャV2を用いてシリアライゼーションプロセスを簡素化します。
アーキテクチャV2は、新たな機能のサポートを追加したシリアライゼーション形式です:
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
がサポートするステージでは、必要なパラメーター、デフォルトのパラメーター、およびオプションのパラメーターが動的に生成されています。利用可能なパラメーターについて詳しく学びましょう。