Skip to content

アプリケーション内で をクリックすると、お使いのDataRobotバージョンに関する全プラットフォームドキュメントにアクセスできます。

AWS SageMakerでのスコアリングコードの使用

このトピックでは、AWS SageMakerにデプロイされたDataRobotのスコアリングコードを使用して、予測を行う方法について説明します。 スコアリングコードを使用すると、機械学習モデルをJARファイルとしてダウンロードし、選択した環境にデプロイできます。

AWS SageMakerを使用すると、機械学習モデルを取り込んでAPIエンドポイントとして公開できます。また、DataRobotはJavaおよびPythonでモデルをエクスポートできます。 エクスポートしたら、モデルをAWS SageMakerにデプロイできます。 この例では、Java JARファイルを指定するDataRobotスコアリングコードエクスポートに焦点を当てています。

インポートするモデルがスコアリングコードをサポートしていることを確認します。 スコアリングコードのエクスポートをサポートしているモデルは、「スコアリングコード」アイコンで示されます。

AWS SageMakerにデプロイする理由

DataRobotでは、プラットフォームに完全に統合されたスケーラブルな予測サーバーを提供しますが、代わりにAWS SageMaker上でのデプロイを行う理由があります。

  • 会社の方針またはガバナンス上の判断。

  • DataRobotモデルの上にカスタム機能の設定。

  • API呼び出しのオーバーヘッドなしでの低レイテンシースコアリング。 一般的に、Javaコードの実行はPython APIを介したスコアリングよりも高速です。

  • DataRobot APIと通信できないシステムにモデルを統合する機能。

スコアリングコードをダウンロードする

DataRobotのモデルをAWS SageMakerにデプロイするには、まずモデル(DataRobotが提供するスコアリングコードJARファイル)を含むTAR.GZアーカイブを作成します。 JARファイルはリーダーボードまたはデプロイからダウンロードできます。

備考

DataRobotのライセンスによっては、デプロイページからのみコードが利用できる場合があります。

スコアリングコードのAWS S3バケットへのアップロード

スコアリングコードJARファイルをダウンロードしたら、Codegen JARファイルをAWS S3バケットにアップロードして、SageMakerがアクセスできるようにする必要があります。

SageMakerはアーカイブ(tar.gz形式)でS3バケットにアップロードされることを想定しています。 以下のコマンドのいずれかを使用して、モデルをtar.gzアーカイブとして圧縮します。

tar -czvf 5e8471fa169e846a096d5137.jar.tar.gz 5e8471fa169e846a096d5137.jar 

MacOSでは、デプロイ時に問題を引き起こす可能性のある隠しファイルをtar.gzパッケージに追加しています。 これらの問題を防ぐには、次のコマンドを使用します。

COPYFILE\_DISABLE=1 tar -czvf 5e8471fa169e846a096d5137.jar.tar.gz 5e8471fa169e846a096d5137.jar 

tar.gzアーカイブを作成したら、S3にアップロードします。

  1. Amazon S3コンソールを開きます。

  2. アップロードをクリックし、tar.gzアーカイブをS3バケットに送信します。

Amazon ECRにDockerイメージを公開

次に、推論コードを含むDockerイメージをAmazon ECRに公開します。 この例では、次のコマンドでDataRobot指定のDockerイメージをダウンロードできます。

docker pull datarobotdev/scoring-inference-code-sagemaker:latest 

Amazon ECRにイメージを公開するには:

  1. イメージのプッシュ先のAmazon ECRレジストリに対して、Dockerクライアントを認証します。 使用するレジストリごとに認証トークンを取得する必要があり、トークンは12時間有効です。 ここにリストされているさまざまな認証オプションについては、Amazonのドキュメントを参照してください。

  2. トークンベースの認証を使用します。

    TOKEN=$(aws ecr get-authorization-token --output text --query 'authorizationData[].authorizationToken') 
    
    curl -i -H "Authorization: Basic $TOKEN" <https://xxxxxxx.dkr.ecr.us-east-1.amazonaws.com/v2/sagemakertest/tags/list> 
    
  3. 次に、イメージをプッシュできるAmazon ECRレジストリを作成します。

    aws ecr create-repository --repository-name sagemakerdemo 
    

    このコマンドを使用すると、以下に示す出力結果が返されます。

AWSマネジメントコンソールからリポジトリを作成することもできます。

  1. ECRサービス > リポジトリを作成に移動し、リポジトリ名を指定します。

  2. プッシュするイメージを特定します。 dockerイメージコマンドを実行して、システム上のイメージを一覧表示します。

  3. イメージにタグを付けてAWS ECRにプッシュします。

  4. プレースホルダーxxxxxxxxは、DataRobot提供のDockerイメージのイメージIDを示します。このイメージには、Docker Hubからダウンロードした推論コード(scoring-inference-code-sagemaker:latest)が含まれています。

  5. Amazon ECRレジストリ、リポジトリ、および使用するオプションのイメージタグ名の組み合わせを使用して、イメージにタグを付けます。 レジストリの形式は*aws_account_id.dkr.ecr.region.amazonaws.com*です。 リポジトリ名は、イメージ用に作成したリポジトリと一致する必要があります。 イメージタグを省略すると、DataRobotはタグが最新であると想定します。

    docker tag xxxxxxxx "${account}.dkr.ecr.${region}.amazonaws.com/sagemakerdemo" 
    
  6. イメージをプッシュします。

    docker push ${account}.dkr.ecr.${region}.amazonaws.com/sagemakermlopsdockerized 
    

プッシュされたら、AWSマネジメントコンソールからイメージを検証できます。

モデルを作成

  1. AWSにサインインして、検索バーにSageMakerと入力します。 最初の結果、Amazon SageMakerを選択すると、SageMakerのコンソールに入り、モデルを作成することができます。

  2. アカウントに既存の役割がない場合、IAMの役割のフィールドで、ドロップダウンからCreate a new role(新しい役割の作成)を選択します。 このオプションを選択すると、必要な権限のある役割が作成され、現在のユーザーのインスタンスに割り当てられます。

  3. Container input optionsフィールド(1)でProvide model artifacts and inference image location(モデルアーティファクトおよび推論イメージの場所を指定)を選択します。 S3バケット内のスコアリングコードイメージ(モデル)の場所(2)および推論コードを含むDockerイメージのレジストリパス(3)を指定します。

  4. 完了したら、フィールドの下にあるAdd container(コンテナを追加)をクリックします。

    モデル設定は次の例と一致する必要があります。

エンドポイント設定を作成

予測用のエンドポイントを設定するには:

  1. 左側のダッシュボードを開き、Endpoint configurations(エンドポイント設定)ページに移動して、新しいエンドポイント設定を作成します。 アップロードされたモデルを選択します。

  2. Endpoint configuration name(1)を入力し、必要に応じてEncryption key(2)を指定します。 完了したら、ページの下部にあるCreate endpoint configuration(エンドポイント設定を作成)を選択します。

  3. ダッシュボードを使用してEndpoints(エンドポイント)に移動し、新しいエンドポイントを作成します。

    エンドポイントに名前を付け(1)、既存のエンドポイント設定を使用(2)を選択します。 上記の手順で作成した設定を選択します(3)。 完了したら、エンドポイント設定を選択をクリックします。 エンドポイントが作成されたら、モデルで予測リクエストを作成できます。

    エンドポイントがリクエストを処理する準備ができると、ステータスがInServiceに変わります。

予測の作成

SageMakerエンドポイントのステータスがInServiceに変わると、このエンドポイントに対する予測を開始できます。

最初にコマンドラインからエンドポイントをテストして、エンドポイントが応答していることを確認します。 以下のコマンドを使用してテスト予測を行い、CSV文字列の本文にデータを渡します。

aws sagemaker-runtime invoke-endpoint --endpoint-name mlops-dockerized-endpoint-new 

備考

上記のコマンドを実行するには、AWS CLIがインストールされていることを確認してください。

注意事項

SageMakerでデプロイする際、以下の点に留意してください。

  • MLOpsのエージェントが設定されていない限り、事前定義済みデータのドリフトや精度の追跡はできません。

  • AWS SageMakerにデプロイされる結果として、追加の時間オーバーヘッドが発生する可能性があります。


更新しました February 20, 2024