注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
バッチデプロイメント
は現在、外部モデルではサポートされていません。代わりに外部モデルを使用した Python トランスフォームを設定してください。
Foundry は、Azure Machine Learning、Amazon SageMaker、OpenAI、Vertex AI などの第三者アプリケーション、サービス、モデルプロバイダーでホストされているモデルへのプロキシとして機能するモデルの作成を可能にします。これにより、Foundry 外部で開発されたモデルが Foundry ユーザー、パイプライン、運用アプリケーションによって簡単に使用できます。
外部でホストされたモデルが統合されると、Foundry は以下を提供します:
外部でホストされたモデルへの接続を作成するには、以下が必要です:
以下の手順に従って、外部でホストされたモデルをプロキシするモデルを作成できます。
最初のステップは新しいモデルを作成することです。これは、Foundry プロジェクトで +新規 > モデル を選択するか、新規または既存の モデリング目的 を通じて行うことができます。モデリング目的で、モデルを追加を選択します。
以下のスクリーンショットは、Foundry プロジェクトで +新規 > モデル を選択して新しいモデルを作成する様子を示しています。
以下のスクリーンショットは、モデリング目的を通じて新しいモデルを作成し、外部モデル画面から モデルを追加を選択する様子を示しています。
外部でホストされたモデルを接続を選択し、次に 次へを選択します。
ユーザーの外部でホストされたモデルのソースとして カスタム接続 を選択し、ドロップダウンから流出ポリシーを選択し、次に 次へを選択します。
流出ポリシーは、Foundry プロジェクトまたは作成物が Foundry から外部システムにデータを送信することを可能にします。流出ポリシーは、ユーザーの組織の Foundry セキュリティモデルによって制御されることがあります。必要な権限を持っていれば、コントロールパネルアプリケーションで新しい流出ポリシーを閲覧し、設定することができます。
このモデルのモデルアダプタを選択します。モデルアダプタは、ロード時に ExternalModelContext
を取得して外部でホストされたモデルへの接続を初期化するように設定する必要があります。詳細については、モデルアダプタの作成に関するドキュメンテーションを参照し、外部モデルの例のモデルアダプタを見直し、ExternalModelContext
のAPI定義を確認してください。
ユーザーのカスタムモデル接続のモデル接続詳細を定義します。接続設定には2つのコンポーネントがあります:
ユーザーのカスタムモデル接続の資格情報設定を定義し、次に 次へを選択します。
このモデルのモデル保存位置、モデル名、バージョンノートを入力します。これにより、ユーザーのモデルの Foundry 名、位置、メタデータが定義されます。
モデリング目的からこのモデルを作成している場合は、モデルを作成し、このモデルをユーザーのモデリング目的に提出するために 提出を選択します。モデリング目的では、モデルに移動して設定を確認し、必要に応じてリンクされた資格情報を更新できます。
Foundry プロジェクト内でこのモデルを作成している場合は、完了を選択してこのモデルを保存します。
外部でホストされたモデルを使用すると、ユーザーは資格情報を更新したり、接続設定を確認したり、エグレスポリシーの RID をコピーしてPython Transformsを設定したりすることができます。
外部でホストされたモデルをテストし、運用化する方法はいくつかあります。以下の方法があります:
Foundry でリアルタイム推論のためのライブデプロイメントを設定する手順を参照してください。
ユーザーのモデルと同じ Foundry プロジェクトのモデリング目的でモデルをホストしている場合、エグレスポリシーは自動的にライブデプロイメントに追加されます。それ以外の場合は、ホスティングプロジェクトにエグレスポリシーをインポートする必要があります。
外部でホストされているモデルは現在、モデリング目的でのバッチデプロイメントや自動モデル評価をサポートしていません。
外部モデルを使用した Python トランスフォームを設定するには、その接続のためにネットワーク流出を手動で有効化する必要があります。
次に、モデルバージョンから必要な流出ポリシー名を見つけ出し、そのモデル入力で Python トランスフォームを設定します。
この例では、以下の依存関係が Python Transforms リポジトリに設定されています。external-model-adapters
への依存関係がモデル推論のために、またtransforms-external-systems
への依存関係が外部システムとの対話のために追加されていることに注意してください。
Copied!1 2 3 4 5 6 7 8 9 10 11 12
requirements: build: - python 3.8.* # Python 3.8.* をビルドに使用 - setuptools # setuptools を使用 run: - python 3.8.* # Python 3.8.* を実行時に使用 - transforms {{ PYTHON_TRANSFORMS_VERSION }} # transforms ライブラリのバージョンを指定 - transforms-expectations # transforms-expectations ライブラリを使用 - transforms-verbs # transforms-verbs ライブラリを使用 - transforms-external-systems # transforms-external-systems ライブラリを使用 - external-model-adapters 1.0.0 # external-model-adapters ライブラリのバージョン 1.0.0 を使用
この簡単な例では、外部でホストされているモデルを取り込み、推論を実行します。計算関数の入力として追加される、必要な export_control
と egress
ポリシーに注意してください。egress ポリシーは、モデルで定義されたものと同じ egress ポリシーを使用する必要があります。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
from transforms.api import transform, Input, Output from palantir_models.transforms import ModelInput from transforms.external.systems import EgressPolicy, use_external_systems, ExportControl # 外部システムでの使用を定義します。エクスポートコントロールとエグレスポリシーを指定します。 @use_external_systems( export_control=ExportControl(markings=['<MARKING_ID>']), # エクスポートコントロールのマーキングを指定します。 egress=EgressPolicy('ri.resource-policy-manager.<RID>') # エグレスポリシーを指定します。 ) # 変換を定義します。出力、モデル、入力を指定します。 @transform( output=Output("/Foundry/Externally Hosted Models/data/inferences"), # 出力のパスを指定します。 model=ModelInput("/Foundry/Externally Hosted Models/models/Regression Model"), # 使用するモデルのパスを指定します。 foundry_input=Input("/Foundry/Externally Hosted Models/data/regression_features_input") # 入力データのパスを指定します。 ) def compute( export_control, egress, output, model, foundry_input ): # 入力データをPandasのデータフレームとして読み込みます。 input_df = foundry_input.pandas() # モデルを使用して入力データを変換します。 results = model.transform(input_df) # 出力データを書き込みます。 output.write_pandas(results.df_out)
以下は、外部でホストされているモデルを利用するためのモデルアダプターの例です。
詳細については、以下の情報を参照してください:
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
import palantir_models as pm import json import pandas as pd class ExampleModelAdapter(pm.ExternalModelAdapter): def __init__(self, url, credentials_map, configuration_map): # "接続設定"マップからモデル設定を抽出する model_name = configuration_map['model_name'] model_parameter = configuration_map['model_parameter'] # "資格情報設定"マップからモデルの資格情報を抽出する secret_key = credentials_map['secret_key'] # モデルのロード時にhttpクライアントを開始する self.client = ExampleClient(url, model_name, model_parameter, secret_key) @classmethod def init_external(cls, external_context: pm.ExternalContext) -> "pm.ExternalModelAdapter": return cls( url=external_context.base_url, credentials_map=external_context.resolved_credentials, configuration_map=external_context.external_model.connection_config, ) @classmethod def api(cls): inputs = {"df_in": pm.Pandas()} outputs = {"df_out": pm.Pandas()} return inputs, outputs def predict(self, df_in): payload = { "instances": df_in.apply(lambda row: {"features": row.tolist()}, axis=1).tolist() } # クライアントは例であり、あなたの外部モデルに接続するために編集する必要があります response = self.client.predict( ContentType="application/json", Body=json.dumps(payload) ) result = response["Body"].read().decode() predictions = pd.DataFrame(json.loads(result)["predictions"]) return predictions