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

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

例:Amazon SageMaker モデルの統合

以下のドキュメントでは、Amazon SageMaker にホストされたモデルへのカスタム接続の例として、設定とモデルアダプタを提供しています。

手順に沿ったガイドは、モデルアダプタの作成方法および外部ホストされたモデルへの接続の作成方法のドキュメントを参照してください。

例:Amazon SageMaker のタブラモデルアダプタ

まず、Code Repositories アプリケーションでモデルアダプタライブラリを使用して、モデルアダプタを公開およびタグ付けします。以下のモデルアダプタは、AWS SDK for Python(Boto3) およびフレームワークを使用して、Amazon SageMaker にホストされているモデルへの接続を構成します。以下のコードは、バージョン Python 3.8.17boto3 1.28.1、および pandas 1.5.3 でテストされました。

このモデルアダプタは、以下の前提を持っています:

  • このモデルアダプタは、提供されるデータがタブラ形式であることを前提としています。
  • このモデルアダプタは、入力データを JSON にシリアル化し、このデータをホストされた Amazon SageMaker モデルに送信します。
  • このモデルアダプタは、応答が JSON から pandas データフレームにデシリアル化できることを前提としています。
  • このモデルアダプタは、Boto3 クライアントを構築するために4つの入力を取ります。
    • region_name - 接続設定として提供されます。
    • endpoint_name - 接続設定として提供されます。
    • access_key_id - 資格情報として提供されます。
    • secret_access_key - 資格情報として提供されます。
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 import palantir_models as pm import models_api.models_api_executable as executable_api import boto3 import json import pandas as pd import logging from typing import Optional from botocore.exceptions import ClientError logger = logging.getLogger(__name__) # SageMakerTabularAdapterクラス定義 class SageMakerTabularAdapter(pm.ExternalModelAdapter): """ :display-name: SageMaker Tabular Model Adapter :description: Default model adapter for SageMaker models that expect tabular input and output tabular data. """ # 初期化メソッド def __init__(self, region_name, endpoint_name, access_key_id, secret_access_key): self.endpoint_name = endpoint_name self.runtime = boto3.client( 'runtime.sagemaker', aws_access_key_id=access_key_id, aws_secret_access_key=secret_access_key, region_name=region_name ) # 外部からの初期化メソッド @classmethod def init_external(cls, external_context) -> "pm.ExternalModelAdapter": region_name = external_context.external_model.connection_configuration["region_name"] endpoint_name = external_context.external_model.connection_configuration["endpoint_name"] access_key_id = external_context.resolved_credentials["access_key_id"] secret_access_key = external_context.resolved_credentials["secret_access_key"] return cls( region_name, endpoint_name, access_key_id, secret_access_key ) # APIメソッド @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() } try: response = self.runtime.invoke_endpoint( EndpointName=self.endpoint_name, ContentType="application/json", Body=json.dumps(payload) ) except ClientError as error: # SageMakerの推論呼び出しが失敗した場合のエラーログ logger.error("SageMaker inference call failed. This can indicate an error with this Model's egress " "policy. Double check your configured egress policy and ensure the remote endpoint is still " "available.") raise error try: # モデルからの出力はJSONシリアライズ可能であると想定 # 結果が大きすぎると、このデシリアライゼーションでOOMが発生する可能性がある result = json.loads(response['Body'].read().decode()) except ValueError as error: # SageMakerTabularAdapterは結果がJSONシリアライズ可能であることを期待 logger.error("This SageMakerTabularAdapter expects results to be json serializable.") raise error return pd.json_normalize(result)

Amazon SageMakerタブラーモデルの設定

次に、このモデルアダプターを使用し、モデルアダプターに必要な設定と資格情報を提供するために、外部でホストされたモデルを設定する方法を説明します。この例では、モデルは us-east-1 にホストされていると仮定していますが、これは設定可能です。

上記の SageMakerTabularAdapter では URL は必要ないため、空白のままですが、モデルアダプタで定義された同じキーを使用して、設定と資格情報のマップが完了します。

イグレスポリシーを選択する

以下では、runtime.sagemaker.us-east-1.amazonaws.com(ポート443)用に設定されたイグレスポリシーが使用されています。

Modeling ObjectivesアプリケーションでのAmazon SageMakerのイグレスポリシー設定

モデルアダプターを設定する

外部でホストされたモデルに接続するダイアログで、公開されたモデルアダプターを選択します。

Palantir FoundryのAmazon SageMaker用のモデルアダプター設定パネル

接続設定を設定する

例のAmazon SageMakerタブラーモデルアダプターで必要とされる接続設定を定義します。

このアダプターでは、接続設定が必要です。

  • region_name - モデルがホストされているAWSリージョン名。
  • endpoint_name - 外部でホストされているモデルの一意の識別子。

Palantir FoundryのAmazon SageMaker用の接続設定パネル

資格情報設定を設定する

例のAmazon SageMakerタブラーモデルアダプターで必要とされる資格情報設定を定義します。

このアダプターでは、資格情報設定が必要です。

  • access_key_id - SageMakerモデルを呼び出すユーザーの資格情報の一意の識別子。
  • secret_access_key - SageMakerモデルを呼び出すユーザーの秘密鍵。

Palantir FoundryのAmazon SageMaker用の資格情報設定パネル

Amazon SageMakerタブラーモデルの使用方法

Amazon SageMakerモデルが設定されたので、このモデルはライブデプロイメントまたはPythonトランスフォームでホストできます。

以下の画像は、ライブデプロイメントでAmazon SageMakerモデルに対して行われた例のクエリを示しています。

SageMakerTabularAdapterを使用した例のクエリ