Amazon Web Services ブログ

Amazon SageMaker ランタイムが CustomAttributes ヘッダーのサポートを開始



Amazon SageMaker はエンドツーエンドのプラットフォームで、データサイエンティストや開発者が使用して、大規模に機械学習 (ML) モデルの構築、トレーニング、チューニング、デプロイを行っています。Amazon SageMaker を使用すると、コンソールのワンクリックで、またはシンプルな API コールで、モデルのトレーニングを開始できます。トレーニングが完了して、モデルをデプロイする用意が整うと、Amazon SageMaker コンソールのワンクリックで起動が可能です。Amazon SageMaker のホスティングサービスを使用してモデルを本番環境にデプロイした後は、永続的な HTTPS エンドポイントが得られ、ここで機械学習モデルを利用し、InvokeEndpoint API アクションを介して推論を提供できます。

Amazon SageMaker InvokeEndpoint API アクションは、新しい HTTP ヘッダー、CustomAttributes のサポートを開始しています。この新しいヘッダーを利用すると、Amazon SageMaker エンドポイントでホストされているモデルに渡された推論のリクエストに関して、追加情報を提供できます。また、Amazon SageMaker エンドポイントでホストされているモデルが返した推論のリクエストに対するレスポンスで、追加情報を含めることもできます。たとえば、CustomAttributes ヘッダーを利用すると、リクエストの追跡に利用可能なアプリケーション固有の識別子であるトレース ID や、サービスエンドポイントが処理するようプログラムされたその他のメタデータを提供できます。

CustomAttributes ヘッダーで提供する情報は、逐語的に送られた不透明な値です。InvokeEndpoint の呼び出しは、AWS Signature Version 4 を使用して認証されます。カスタム属性は 1024 字を超えることはできません。また、表示可能な US-ASCII 文字で構成される必要があります。この US-ASCII 文字 については、セクション 3.3.6.Field Value Components of the Hypertext Transfer Protocol (HTTP/1.1) に定められています。

下記のコードスニペットは、AWS SDK を利用してモデルにカスタム属性ヘッダーを提供する方法を示しています。この例では、リクエストおよびレスポンスにおいて、クライアントアプリケーションからの CustomAttributes はトレース ID となっています。

リクエストの例:

import boto3

client = boto3.client('sagemaker-runtime')

custom_attributes = "c000b4f9-df62-4c85-a0bf-7c525f9104a4"  # トレース ID の例
endpoint_name = "..."                                       # エンドポイント名
content_type = "..."                                        # リクエストボディの入力データの MIME タイプ
accept = "..."                                              # レスポンスの推論で求められる MIME タイプ
payload = "..."                                             # 推論のペイロード

レスポンスの例:

Sample response: 
response = client.invoke_endpoint(
    EndpointName=endpoint_name,
    CustomAttributes=custom_attributes,
    ContentType=content_type,
    Accept=accept,
    Body=payload
    )

print(response['CustomAttributes'])                         # モデルがカスタム属性ヘッダーを受信または更新した場合 
                                                            # (リクエストの custom_attributes の前に "Trace id: " を追加する方法による場合)
                                                            # レスポンスの custom_attributes は以下になる
                                                            # "Trace ID: c000b4f9-df62-4c85-a0bf-7c525f9104a4"

エンドポイント、トレーニングジョブ、ノートブックインスタンスのライフサイクル設定のデバッグに役立てるため、アルゴリズムコンテナ、モデルコンテナ、ノートブックインスタンスのライフサイクル設定から stdout や stderr に何かが送信される場合、Amazon CloudWatch Logs にも同じものが送信されます。これはデバッグの他に、進捗分析にも利用できます。すべての Log Group と Stream の名称は、こちらの ドキュメントを参照してください。

この機能は、Amazon SageMaker が利用可能なすべての AWS リージョンで利用可能です。詳細については、Amazon SageMaker 開発者ガイドを参照してください。

 


今回のブログ投稿者について

Urvashi Chowdhary は、Amazon SageMaker 担当のシニアプロダクトマネージャーです。お客様に寄り添い、また、機械学習をさらに使いやすいものにしていくことに情熱を傾けています。余暇には、セーリング、パドルボード、カヤックを楽しんでいます。