「Amazon SageMakerを使用して、クラシカルなMLおよびLLMsを簡単にパッケージ化してデプロイする方法、パート2:SageMaker Studioでのインタラクティブなユーザーエクスペリエンス」

「クラシカルなMLおよびLLMsを簡単にパッケージ化してデプロイする方法、パート2:SageMaker Studioでのインタラクティブなユーザーエクスペリエンスを実現するためにAmazon SageMakerを使う」

Amazon SageMakerは、開発者やデータサイエンティストがスケールを持って機械学習(ML)モデルを迅速かつ簡単に構築、トレーニング、展開できる完全に管理されたサービスです。SageMakerは、モデルをAPI呼び出しを介して直接本番環境に展開することを容易にします。モデルはコンテナにパッケージ化され、堅牢かつスケーラブルな展開が可能になります。

SageMakerはモデルの展開にさまざまなオプションを提供しています。これらのオプションは、利用者が持つ制御量や必要な作業量によって異なります。 AWS SDK は最も制御と柔軟性を提供します。Java、C++、Go、JavaScript、Node.js、PHP、Ruby、およびPythonで利用できる低レベルのAPIです。 SageMaker Python SDK は、一部の手順と構成を抽象化し、モデルの展開を容易にする高レベルのPython APIです。 AWSコマンドラインインターフェイス(AWS CLI)は、独自のコードを記述せずにモデルを展開するために使用できる別のハイレベルツールです。

私たちは、SageMakerを使用してモデルをパッケージ化して展開するプロセスをさらに簡素化する2つの新しいオプションを発表します。1つはプログラミングによる展開です。そのために、Python SDKの改善を提供しています。詳細については、 Amazon SageMakerで古典的なMLとLLMを簡単にパッケージ化および展開する、パート1:PySDKの改善 を参照してください。2つ目はインタラクティブな展開方法です。そのために、 Amazon SageMaker Studio で新しいインタラクティブなエクスペリエンスを提供します。これは、最適な構成でAmazon SageMaker JumpStartから独自のトレーニング済みモデル(FM)を素早く展開し、予測可能なパフォーマンスを低コストで実現するのに役立ちます。新しいインタラクティブなエクスペリエンスの概要については、続きを読んで確認してください。

SageMaker Studioにおける新しいインタラクティブなエクスペリエンス

この記事では、1つ以上のMLモデルをトレーニングしたり、SageMaker JumpStartモデルハブからFMを使用して展開する準備ができていることを前提としています。SageMakerを使用してモデルをトレーニングすることは展開に先立つ必要条件ではありません。SageMaker Studioの基本的な知識も前提としています。

以下の手順を説明します:

  • SageMakerモデルを作成する
  • SageMakerモデルを展開する
  • SageMaker JumpStartの大規模言語モデル(LLM)を展開する
  • 1つのエンドポイントの背後に複数のモデルを展開する
  • モデルの推論テスト
  • エラーのトラブルシューティング

SageMakerモデルの作成

推論のためのSageMakerエンドポイントを設定するための最初のステップは、SageMakerモデルオブジェクトを作成することです。このモデルオブジェクトは、モデルのためのコンテナと、推論に使用されるトレーニング済みモデルから構成されています。新しいインタラクティブなUIエクスペリエンスを利用して、SageMakerモデルの作成プロセスを簡単化します。SageMaker Studioに未経験の場合は、 デベロッパーガイド を参照して開始します。

  1. SageMaker Studioのインターフェースで、ナビゲーションペインでModelsを選択します。
  2. Deployable models タブで、Create を選択します。

これで、モデルコンテナの詳細、モデルデータの場所、およびSageMakerがあなたの代わりに仮定する AWS Identity and Access Management(IAM)ロールを指定するだけです。

  1. モデルのコンテナには、一般的なフレームワークとライブラリのために提供されるSageMakerの事前に構築されたDockerイメージのいずれかを使用できます。このオプションを使用する場合は、サポートされているタイプのリストから、コンテナフレームワーク、対応するフレームワークのバージョン、およびハードウェアタイプを選択してください。

または、Amazon Elastic Container Registry(Amazon ECR)内に保存された独自のコンテナへのパスを指定することもできます。

  1. 次に、モデルアーティファクトをアップロードします。SageMaker Studioでは、モデルアーティファクトをアップロードするための2つの方法が提供されています:
    • まず、model.tar.gzAmazon Simple Storage Service(Amazon S3)バケットまたはローカルパスに指定することができます。このmodel.tar.gzは、使用しているコンテナに準拠した形式で構造化されている必要があります。
    • または、PyTorchとXGBoostモデルの場合は、生のアーティファクトのアップロードもサポートされています。これらの2つのフレームワークでは、モデルアーティファクトをコンテナが期待する形式で提供します。たとえば、PyTorchの場合はmodel.pthになります。モデルアーティファクトには、前処理および後処理用の推論スクリプトも含まれます。推論スクリプトを提供しない場合、選択したコンテナのデフォルトの推論ハンドラが実装されます。
  2. コンテナとアーティファクトを選択した後、IAMロールを指定します。
  3. デプロイ可能なモデルを作成を選択してSageMakerモデルを作成します。

上記の手順は、最も簡単なワークフローを示しています。モデル作成プロセスをさらにカスタマイズすることもできます。たとえば、VPCの詳細を指定し、ネットワークの分離を有効にしてコンテナが公共インターネット上での出力呼び出しを行えないようにすることができます。さらに多くのオプションを表示するには、高度なオプションセクションを展開することができます。

SageMaker推論レコメンダーベンチマーキングジョブを実行することで、最適な価格/性能比のハードウェアのガイダンスを得ることができます。SageMakerモデルをさらにカスタマイズするために、コンテナレベルで調整可能な環境変数を渡すこともできます。推論レコメンダーは、これらの変数の範囲を取り入れて、モデルサービングおよびコンテナの最適構成を見つけます。

モデルを作成した後、デプロイ可能なモデルタブで確認することができます。モデルの作成中に問題が発生した場合、モニターステータス列にステータスが表示されます。詳細を表示するには、モデルの名前を選択してください。

SageMakerモデルをデプロイする

最も基本的なシナリオでは、必要なのは、モデルページまたはSageMaker JumpStartページからデプロイ可能なモデルを選択し、インスタンスタイプを選択し、初期インスタンス数を設定し、モデルをデプロイするだけです。自分自身のSageMakerモデル用に、このプロセスがSageMaker Studioでどのように見えるのか見てみましょう。この投稿の後半でLLMの使用方法についても説明します。

  1. モデルページでデプロイ可能なモデルタブを選択します。
  2. デプロイするモデルを選択し、デプロイを選択します。
  3. 次のステップは、SageMakerが推論エンドポイントの背後に配置するインスタンスタイプを選択することです。

あなたは、最高のパフォーマンスと最低のコストを提供するインスタンスが欲しいです。SageMakerは、その決定をするためにおすすめを表示することで、この決定を簡単にします。もし、SageMakerモデルの作成ステップでSageMaker Inference Recommenderを使用してモデルをベンチマークした場合、ドロップダウンメニューにそのベンチマークの推奨事項が表示されます。

そうでない場合は、見込みがあるインスタンスのリストがメニューに表示されます。その場合、SageMakerは独自のヒューリスティックを使用してリストを作成します。

  1. 初期インスタンス数を指定し、デプロイを選択します。

SageMakerはエンドポイントの設定を作成し、そのエンドポイントの背後にモデルをデプロイします。モデルがデプロイされると、エンドポイントとモデルのステータスがサービス中として表示されます。エンドポイントはモデルよりも早く準備が整う場合があることに注意してください。

これはまた、SageMaker Studioでエンドポイントを管理する場所でもあります。ナビゲーションペインのデプロイメントの下にあるエンドポイントを選択することで、エンドポイントの詳細ページに移動できます。エンドポイントの再作成なしでエンドポイントの背後にあるモデルを変更するために、モデルの追加削除ボタンを使用できます。 テスト推論タブを使用すると、SageMaker Studioインターフェースから直接インサービスモデルのテストリクエストを送信してモデルをテストすることができます。また、このページのAuto-scalingタブでオートスケーリングポリシーを編集することもできます。モデルの追加、削除、テスト方法の詳細は、以下のセクションで説明されています。このエンドポイントのネットワーク、セキュリティ、およびコンピュート情報はSettingsタブで確認できます。

デプロイをカスタマイズする

前の例では、最小の構成でシングルモデルをデプロイする方法がどれだけ簡単かを示しました。SageMakerはほとんどのフィールドを自動的に埋めますが、構成をカスタマイズすることもできます。例えば、エンドポイントの名前は自動的に生成されますが、エンドポイント名を自分の好みに応じて指定するか、Endpoint nameのドロップダウンメニューで既存のエンドポイントを使用することができます。既存のエンドポイントでは、その時点でサービス中にあるエンドポイントのみが表示されます。IAMロール、VPCの詳細、およびタグを指定するために、Advanced optionsセクションを使用できます。

SageMaker JumpStart LLMをデプロイする

SageMaker JumpStart LLMをデプロイするには、次の手順を実行します:

  1. JumpStart ページに移動します。
  2. 提携先名のうち、パートナーから提供されているモデルのリストを閲覧するか、もしくはモデルの名前を知っている場合は検索機能を使用してモデルページに移動します。
  3. 展開したいモデルを選択します。
  4. 展開 を選択します。

なお、LLMの使用にはEULAおよび提供元の利用規約が適用されます。

  1. ライセンスと利用規約に同意します。
  2. インスタンスタイプを指定します。

JumpStartモデルハブからの多くのモデルは、展開に最適化された価格パフォーマンスのデフォルトインスタンスタイプが付属しています。このデフォルトが付属していないモデルについては、インスタンスタイプ ドロップダウンメニューでサポートされているインスタンスタイプのリストが表示されます。ベンチマーク済みのモデルの場合、コストまたはパフォーマンスの最適化を特定のユースケースに合わせて展開する場合は、代替構成 を選択し、トータルトークン、入力長、および最大同時実行数のさまざまな組み合わせでベンチマーク済みのオプションを表示することもできます。また、そのモデルに対応する他のサポートされているインスタンスからも選択することができます。

  1. 代替構成を使用する場合、インスタンスを選択し、選択 を選択します。
  2. モデルを展開するために 展開 を選択します。

エンドポイントとモデルのステータスが サービス中 に変更されます。また、この場合は展開をカスタマイズするオプションもあります。

複数のモデルを1つのエンドポイントに展開する

SageMakerでは、1つのエンドポイントの背後に複数のモデルを展開することができます。これにより、エンドポイントの利用効率が向上し、ホスティングコストが削減されます。また、SageMakerはモデルをメモリに読み込み、トラフィックパターンに基づいてスケーリングするため、展開のオーバーヘッドも削減されます。SageMaker Studioでは、これを簡単に行うことができます。

  1. 展開したいモデルを選択して、展開 を選択します。
  2. 次に、割り当てられたコンピューティングリソースを持つ複数のモデルを含むエンドポイントを作成することができます。

この場合、エンドポイントには、ml.p4d.24xlarge インスタンスを使用し、2つの異なるモデルに必要なリソースを割り当てます。ご注意ください、この機能でサポートされているインスタンスタイプの制約があります。

  1. 展開可能なモデル タブからフローを開始し、SageMaker JumpStart LLMを追加したり、その逆の場合、展開ワークフローの開始後に モデルを追加 を選択することで、複数のモデルをフロントエンドに持つエンドポイントを作成することができます。
  2. ここでは、SageMaker JumpStartモデルハブから別のFM、またはSageMakerモデルオブジェクトとして保存している展開可能なモデル を選択することができます。
  3. モデル設定を選択します:
    • モデルがCPUインスタンスを使用している場合は、CPUの数とモデルの最小コピー数を選択します。
    • モデルがGPUインスタンスを使用している場合は、アクセラレータの数とモデルの最小コピー数を選択します。
  4. モデルを追加 を選択します。
  5. これらのモデルをSageMakerエンドポイントに展開するために 展開 を選択します。

エンドポイントが起動して準備完了(サービス中)の状態になると、1つのエンドポイントの背後に2つのモデルがデプロイされます。

モデル推論のテスト

SageMaker Studioでは、モデル推論リクエストのテストが簡単になりました。サポートされているコンテンツタイプ(アプリケーションやJSON、テキストやCSVなど)を使用して、ペイロードデータを直接送信するか、Python SDKのサンプルコードを使用して、ノートブックやローカルの統合開発環境(IDE)から呼び出しリクエストを行うことができます。

Python SDKの例コードオプションは、SageMaker JumpStartモデルにのみ使用でき、特定のモデルのユースケースに合わせて入出力データの変換が行われます。

エラーのトラブルシューティング

モデルのデプロイメントをトラブルシューティングし、さらに詳しく調べるために、リソースのステータスラベルには、対応するエラーメッセージや理由が表示されるツールチップがあります。また、エンドポイント詳細ページには、Amazon CloudWatchロググループへのリンクもあります。単一モデルのエンドポイントでは、CloudWatchコンテナログへのリンクはエンドポイント詳細の概要セクションに便利に配置されています。複数モデルを持つエンドポイントの場合、CloudWatchログへのリンクはモデルテーブルビューの各行に配置されています。トラブルシューティングのための一般的なエラーシナリオは以下の通りです:

  • モデルのピングヘルスチェックの失敗 – サービングコンテナがモデルのピングヘルスチェックに合格しなかったため、モデルのデプロイメントに失敗しました。問題をデバッグするには、次のCloudWatchロググループによって公開されるコンテナログを参照してください:

    /aws/sagemaker/Endpoints/[エンドポイント名]/aws/sagemaker/InferenceComponents/[推論コンポーネント名]
  • 一貫性のないモデルとエンドポイントの設定によるデプロイメントの失敗 – デプロイメントが次のエラーメッセージのうちいずれかで失敗した場合、選択したデプロイメントには、異なるIAMロール、VPC設定、またはネットワーク分離設定が使用されています。解決策は、モデルの詳細を更新して、デプロイメントフロー中に同じIAMロール、VPC設定、およびネットワーク分離設定を使用するようにすることです。既存のエンドポイントにモデルを追加する場合は、対象のエンドポイント構成に一致するようにモデルオブジェクトを再作成することができます。

    Model and endpoint config have different execution roles. Please ensure the execution roles are consistent.Model and endpoint config have different VPC configurations. Please ensure the VPC configurations are consistent.Model and endpoint config have different network isolation configurations. Please ensure the network isolation configurations are consistent.
  • 既存のエンドポイントインフラストラクチャにさらにモデルをデプロイするための十分な容量がありません – 次のエラーメッセージでデプロイメントが失敗した場合、現在のエンドポイントインフラストラクチャには、モデルをデプロイするための十分な計算リソースまたはメモリハードウェアリソースがありません。対処方法は、エンドポイントの最大インスタンス数を増やすか、エンドポイントにデプロイされている既存のモデルを削除して、新しいモデルのデプロイにスペースを作ることです。

    There is not enough hardware resources on the instances for this endpoint to create a copy of the inference component. Please update resource requirements for this inference component, remove existing inference components, or increase the number of instances for this endpoint.
  • マルチモデルエンドポイントデプロイメントに対応していないインスタンスタイプ – 次のエラーメッセージでデプロイメントが失敗した場合、選択したインスタンスタイプは現在、マルチモデルエンドポイントデプロイメントをサポートしていません。対処方法は、この機能をサポートするインスタンスタイプにインスタンスタイプを変更し、デプロイを再試行することです。

    The instance type is not supported for multiple models endpoint. Please choose a different instance type.

その他のモデルデプロイの問題については、サポートされている機能を参照してください。

クリーンアップ

クリーンアップも簡単です。SageMakerコンソールで既存のSageMakerエンドポイントから1つまたは複数のモデルを削除することができます。エンドポイント全体を削除するには、「エンドポイント」ページに移動し、対象のエンドポイントを選択し、「削除」を選択し、削除を実行するための免責事項に同意します。

結論

SageMakerスタジオでの強化されたインタラクティブなエクスペリエンスにより、データサイエンティストはモデルの構築に集中し、アーティファクトをSageMakerにもたらすことができます。展開の複雑さは抽象化されています。コードベースのアプローチを好む方は、ModelBuilderクラスとのローコード同等のバージョンをご覧ください。

詳細については、SageMakerのModelBuilder Pythonインターフェースドキュメントと、SageMakerスタジオ内のガイド付きデプロイワークフローをご覧ください。SageMaker SDKとSageMakerスタジオには追加料金はありません。使用された基盤リソースにのみ料金が発生します。SageMakerでモデルをデプロイする方法の詳細については、推論用モデルのデプロイを参照してください。

Sirisha Upadhyayala、Melanie Li、Dhawal Patel、Sam Edwards、Kumara Swami Borraに特別な感謝を申し上げます。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

AIニュース

「比喩的に言えば、ChatGPTは生きている」

ChatGPTの成長は年々劇的に進んできました最近、OpenAIはChatGPTが聞くこと、見ること、話すことができるようになったことを...

データサイエンス

アマゾンの研究者は、深層学習を活用して複雑な表形式のデータ分析におけるニューラルネットワークを強化します

ニューラルネットワークは、異質なカラムを持つ表形式のデータに直面するときに、現代計算の驚異として、重要なハードルに直...

機械学習

Field Programmable Gate Array(FPGA)とは何ですか:人工知能(AI)におけるFPGA vs. GPU

フィールドプログラマブルゲートアレイ(FPGA)は、製造後に設定とカスタマイズが可能な集積回路です。これらのチップはこの...

人工知能

偉大さの開放:アレクサンダー大王の創造的AIとの旅 (Idai-sa no kaihō Arekusandā Taio no sōzō-teki AI to no tabi)

「生成型AI(GAI)はコーチングの効果を高めるためにどのように使用できるのか、また生成型AI(GAI)をコーチングツールとし...

データサイエンス

「タイムシリーズの拡張」

「拡張機能は、コンピュータビジョンパイプラインの領域において欠かせない要素となってきましたしかし、タイムシリーズなど...

人工知能

「ChatGPTの使い方:高度なプロンプトエンジニアリングの方法」

「ChatGPTからより良い結果を得たい場合は、より良いChatGPTプロンプトの書き方を学ぶ必要があります以下には7つの実行可能な...