注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
現在、外部でホストされているモデルではバッチデプロイメントを利用できません。代わりに、外部モデルを使用する Python トランスフォームを設定してください。
Foundry では、Azure Machine Learning、Amazon SageMaker、OpenAI、Vertex AI などのサードパーティアプリケーション、サービス、モデルプロバイダーでホストされているモデルへのプロキシとして機能するモデルを作成できます。これにより、Foundry の外部で開発されたモデルを、Foundry のユーザー、パイプライン、運用アプリケーションで簡単に使用できます。
外部でホストされているモデルを統合すると、Foundry で次の機能を利用できます。
上記の機能は、ユースケースによっては必要ない場合があります。たとえば、Foundry でモデルを管理または評価する予定がない場合や、大規模言語モデルのようにオントロジー内の特定のオブジェクトタイプにバインドすべきでない汎用モデルを使用する場合は、モデルを外部でホストすることが適切な解決策ではない可能性があります。その場合は、モデルを Foundry モデルとしてラップするのではなく、Foundry からモデルの外部 API を直接呼び出す方法を検討できます。
このような場合、以下で説明するようにモデル定義の一部として資格情報を設定する代わりに、Data Connection ソースで資格情報を定義できます。その後、このソースと関連するエグレスポリシーを外部トランスフォームにインポートしてバッチ推論を有効にし、関数にインポートしてライブ推論を有効にできます。
言語モデルの場合は、AIP Logic や Pipeline Builder の LLM ノードを使用などの AIP ツールで使用できるよう、プラットフォームにモデルを登録することを検討してください。これには Foundry の外部でホストされているモデルを使用できますが、モデルを作成する必要はありません。登録済みモデルのページでは、独自のモデルを AIP に登録する方法を説明しています。
外部でホストされているモデルへの接続を作成するには、次のものが必要です。
以下の手順に沿って、外部でホストされているモデルへのプロキシとなるモデルを作成できます。
最初に、新しいモデルを作成します。Foundry プロジェクトで +新規 > モデルを選択するか、新しいまたは既存の Modeling Objective から作成できます。Modeling Objective では、モデルを追加を選択します。
以下のスクリーンショットは、Foundry プロジェクトで +新規 > モデルを選択して新しいモデルを作成する様子を示しています。

以下のスクリーンショットは、外部モデル画面でモデルを追加を選択し、Modeling Objective から新しいモデルを作成する様子を示しています。

外部ホストモデルを接続を選択し、次に次へを選択します。

外部でホストされているモデルのソースとしてカスタム接続を選択し、ドロップダウンで出力ポリシーを選択して、次へを選択します。
エグレスポリシーは、Foundry プロジェクトや作成物が Foundry から外部システムにデータを送信できるようにします。エグレスポリシーは、組織の Foundry セキュリティモデルによって管理されている場合があります。必要な権限がある場合は、Control Panel アプリケーションでエグレスポリシーの一覧を見て、新しいエグレスポリシーを設定できます。

このモデルのモデルアダプターを選択します。モデルアダプターは、読み込み時に ExternalModelContext を受け取り、外部でホストされているモデルへの接続を初期化するように設定する必要があります。詳細については、モデルアダプターの作成方法に関するドキュメント、外部モデルのモデルアダプターの例、および ExternalModelContext の API 定義を参照してください。

カスタムモデル接続の接続情報を定義します。接続設定には、次の2つの要素があります。

カスタムモデル接続の資格情報の設定を定義し、次へを選択します。

モデルの保存場所、モデル名、バージョンのメモを入力します。これにより、Foundry 内でのモデルの名前、場所、メタデータが定義されます。
Modeling Objective からこのモデルを作成している場合は、確定を選択すると、モデルが作成され、その Modeling Objective に登録されます。Modeling Objective では、モデルに移動して設定を確認でき、必要に応じてリンクされた資格情報を更新できます。
Foundry プロジェクトでこのモデルを作成している場合は、完了を選択してモデルを保存します。

外部でホストされているモデルでは、資格情報の更新、接続設定の確認、エグレスポリシーの RID のコピーができ、Python トランスフォームを設定できます。


外部でホストされているモデルをテストして運用するには、いくつかの方法があります。次のことができます。
Foundry でリアルタイム推論を行うには、ライブデプロイを設定する手順に沿って進めてください。
モデルと同じ Foundry プロジェクト内のモデリング目標でモデルをホストする場合、エグレスポリシーはライブデプロイに自動的に適用されます。それ以外の場合は、ホスト先のプロジェクトにエグレスポリシーをインポートする必要があります。
外部でホストされているモデルは、現在、モデリング目標でのバッチデプロイやモデルの自動評価をサポートしていません。
外部モデルを使用する Python トランスフォームを設定するには、その接続のネットワークエグレスを手動で有効にする必要があります。
次に、モデルバージョンから必要なエグレスポリシー名を確認し、そのモデルを入力とする Python トランスフォームを設定できます。

この例では、Python Transforms リポジトリに次の依存関係を設定しています。モデル推論用の external-model-adapters と、外部システムとのやり取りに使用する transforms-external-systems の依存関係が追加されている点に注意してください。
Copied!1 2 3 4 5 6 7 8 9 10 11 12requirements: build: - python 3.8.* - setuptools run: - python 3.8.* - transforms {{ PYTHON_TRANSFORMS_VERSION }} - transforms-expectations - transforms-verbs - transforms-external-systems - external-model-adapters 1.0.0
この簡単な例では、外部でホストされているモデルを使用して推論を実行します。必須の export_control と egress ポリシーが compute 関数への入力として追加されている点に注意してください。エグレスポリシーには、モデルで定義されているものと同じエグレスポリシーを使用する必要があります。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24from 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 ): 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 47import 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.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