モデル統合モデルアセット外部でホストされたモデル外部でホストされたモデルの統合

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

外部でホストされたモデルの統合

警告

バッチデプロイメントは現在、外部モデルではサポートされていません。代わりに外部モデルを使用した Python トランスフォームを設定してください。

Foundry は、Azure Machine Learning、Amazon SageMaker、OpenAI、Vertex AI などの第三者アプリケーション、サービス、モデルプロバイダーでホストされているモデルへのプロキシとして機能するモデルの作成を可能にします。これにより、Foundry 外部で開発されたモデルが Foundry ユーザー、パイプライン、運用アプリケーションによって簡単に使用できます。

外部でホストされたモデルが統合されると、Foundry は以下を提供します:

  • バッチ変換とリアルタイムモデルホスティングとの統合。
  • 完全なバージョン管理、粒度の高い許可管理、管理されたモデルのデータフロー。
  • Modeling Objectives を介したモデル管理とライブデプロイメント。
  • Foundry オントロジーへのバインディング、これによりモデル上の関数とホワットイフシナリオ分析を通じた運用化が可能になります。

外部でホストされたモデルへのカスタム接続の作成

外部でホストされたモデルへの接続を作成するには、以下が必要です:

  • 外部でホストされたモデルへの接続詳細。
  • Foundry が外部でホストされたモデルへの接続を作成し、インターフェースをどのように操作するかを指示するモデルアダプタ
  • Foundry が外部でホストされたモデルに接続できるようにするFoundry の流出ポリシー

以下の手順に従って、外部でホストされたモデルをプロキシするモデルを作成できます。

1. 新しいモデルの作成

最初のステップは新しいモデルを作成することです。これは、Foundry プロジェクトで +新規 > モデル を選択するか、新規または既存の モデリング目的 を通じて行うことができます。モデリング目的で、モデルを追加を選択します。

以下のスクリーンショットは、Foundry プロジェクトで +新規 > モデル を選択して新しいモデルを作成する様子を示しています。

新しいモデルを作成する空のコンパスプロジェクト

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

空のモデリング目的

2. モデルの追加方法を選択

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

Palantir Foundry で外部でホストされたモデルを接続を選択

3. 流出ポリシーの設定

ユーザーの外部でホストされたモデルのソースとして カスタム接続 を選択し、ドロップダウンから流出ポリシーを選択し、次に 次へを選択します。

流出ポリシーは、Foundry プロジェクトまたは作成物が Foundry から外部システムにデータを送信することを可能にします。流出ポリシーは、ユーザーの組織の Foundry セキュリティモデルによって制御されることがあります。必要な権限を持っていれば、コントロールパネルアプリケーションで新しい流出ポリシーを閲覧し、設定することができます。

Palantir Foundry の外部でホストされたモデルの流出ポリシーを選択

4. モデルアダプタの設定

このモデルのモデルアダプタを選択します。モデルアダプタは、ロード時に ExternalModelContextを取得して外部でホストされたモデルへの接続を初期化するように設定する必要があります。詳細については、モデルアダプタの作成に関するドキュメンテーションを参照し、外部モデルの例のモデルアダプタを見直し、ExternalModelContextAPI定義を確認してください。

Palantir Foundry の外部でホストされたモデルのモデルアダプタを定義

5. モデル接続の設定

ユーザーのカスタムモデル接続のモデル接続詳細を定義します。接続設定には2つのコンポーネントがあります:

  • URL (オプション):これはモデルアダプタに提供される基本URLです。これはモデル推論関数のURLを意図しています。
  • Connection Configuration (オプション):接続設定は暗号化されず、プラットフォームのモデルメタデータと一緒に表示されます。このコンポーネントは、モデル名、推論パラメーター、または閾値などの特定の設定詳細を格納することができます。

Palantir Foundry の外部でホストされたモデルのモデル設定を定義

6. 資格情報の設定

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

  • Credentials Configuration (オプション):資格情報は暗号化されて安全にモデルと一緒に格納されます。これらの資格情報は、モデルのロード時に復号化されてモデルアダプタに提供されます。モデルにアクセスできるユーザーは、外部モデルへの基本的なアクセス権限にかかわらず、このモデルを使用して推論を実行することができます。モデル詳細の保存に進むには 次へを選択します。

Palantir Foundry の外部でホストされたモデルのモデル資格情報を定義

7. 詳細の設定とモデルの提出

このモデルのモデル保存位置、モデル名、バージョンノートを入力します。これにより、ユーザーのモデルの Foundry 名、位置、メタデータが定義されます。

モデリング目的からこのモデルを作成している場合は、モデルを作成し、このモデルをユーザーのモデリング目的に提出するために 提出を選択します。モデリング目的では、モデルに移動して設定を確認し、必要に応じてリンクされた資格情報を更新できます。

Foundry プロジェクト内でこのモデルを作成している場合は、完了を選択してこのモデルを保存します。

Palantir Foundry の外部でホストされたモデルのモデル保存位置を定義

外部でホストされたモデルの表示

外部でホストされたモデルを使用すると、ユーザーは資格情報を更新したり、接続設定を確認したり、エグレスポリシーの RID をコピーしてPython Transformsを設定したりすることができます。

Palantir Foundry の外部モデルビュー

モデリング目的における外部モデルの提出

Palantir Foundry の外部モデルビュー

外部でホストされたモデルのテストと運用化

外部でホストされたモデルをテストし、運用化する方法はいくつかあります。以下の方法があります:

モデリング目的でのライブデプロイメント

Foundry でリアルタイム推論のためのライブデプロイメントを設定する手順を参照してください

ユーザーのモデルと同じ Foundry プロジェクトのモデリング目的でモデルをホストしている場合、エグレスポリシーは自動的にライブデプロイメントに追加されます。それ以外の場合は、ホスティングプロジェクトにエグレスポリシーをインポートする必要があります。

モデリング目的でのバッチパイプライン

外部でホストされているモデルは現在、モデリング目的でのバッチデプロイメントや自動モデル評価をサポートしていません。

Python トランスフォーム

外部モデルを使用した Python トランスフォームを設定するには、その接続のためにネットワーク流出を手動で有効化する必要があります

次に、モデルバージョンから必要な流出ポリシー名を見つけ出し、そのモデル入力で Python トランスフォームを設定します。

Palantir Foundry の外部でホストされたモデルのビューでの流出と資格情報の RID

依存関係

この例では、以下の依存関係が 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_controlegress ポリシーに注意してください。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