Amazon Web Services ブログ

Amazon SageMaker の新しいツールとガイド付きワークフローを使用して、モデルのより迅速なパッケージ化およびデプロイが可能に

Amazon SageMaker では、従来の機械学習 (ML) モデルと基盤モデル (FM) をより迅速にデプロイするのに役立つ、改善されたモデルデプロイエクスペリエンスをご利用いただけるようになりました。

データサイエンティストまたは ML 実務者は、SageMaker Python SDK の新しい ModelBuilder クラスを使用して、モデルをパッケージ化し、ローカル推論を実行してランタイムエラーを検証するとともに、ローカルの IDE または SageMaker Studio ノートブックから SageMaker にデプロイできるようになりました。

SageMaker Studio の新しいインタラクティブなモデルデプロイワークフローは、最適なエンドポイントの設定を見つけるために選択すべきインスタンスタイプについてのステップバイステップのガイダンスを提供します。また、SageMaker Studio は、モデルを追加し、推論をテストするとともに、デプロイされたエンドポイントで自動スケーリングポリシーを有効にするための追加のインターフェイスも提供します。

SageMaker Python SDK の新しいツール
SageMaker Python SDK は更新され、ModelBuilder クラスや SchemaBuilder クラスなどの新しいツールを使用できるようになりました。これは、ML フレームワークやモデルサーバー全体で、モデルを SageMaker にデプロイ可能なモデルに変換するエクスペリエンスを統合します。モデルビルダーは、互換性のある SageMaker コンテナを選択し、開発環境から依存関係をキャプチャすることで、モデルのデプロイを自動化します。スキーマビルダーは、モデルの入力と出力のシリアル化タスクおよび逆シリアル化タスクの管理に役立ちます。ツールを使用してローカル開発環境にモデルをデプロイし、実験して、実行時のエラーを修正し、準備ができたら、1 行のコードだけでローカルテストから移行して SageMaker にモデルをデプロイできます。

Amazon SageMaker ModelBuilder

これがどのように機能するかを見ていきましょう。次の例では、Hugging Face モデルハブから Falcon-7B モデルを選択します。まずモデルをローカルにデプロイして、サンプル推論を実行し、ローカルベンチマーキングを実行して最適な設定を見つけ、最後に提案された設定でモデルを SageMaker にデプロイします。

最初に、更新された SageMaker Python SDK をインポートし、選択したモデルのプロンプト形式に一致するサンプルモデルの入力と出力を定義します。

import sagemaker
from sagemaker.serve.builder.model_builder import ModelBuilder
from sagemaker.serve.builder.schema_builder import SchemaBuilder
from sagemaker.serve import Mode

prompt = "Falcons are"
response = "Falcons are small to medium-sized birds of prey related to hawks and eagles."

sample_input = {
    "inputs": prompt,
    "parameters": {"max_new_tokens": 32}
}

sample_output = [{"generated_text": response}]

その後、Hugging Face モデル ID を使用して ModelBuilder インスタンスを作成するとともに、サンプルモデルの入力と出力を使用して SchemaBuilder インスタンスを作成し、ローカルモデルパスを定義します。そして、モードを LOCAL_CONTAINER に設定してモデルをローカルにデプロイします。スキーマビルダーは、モデルの入力と出力をシリアル化および逆シリアル化するために必要な関数を生成します。

model_builder = ModelBuilder(
    model="tiiuae/falcon-7b",
    schema_builder=SchemaBuilder(sample_input, sample_output),
    model_path="/path/to/falcon-7b",
    mode=Mode.LOCAL_CONTAINER,
	env_vars={"HF_TRUST_REMOTE_CODE": "True"}
)

次に、build() を呼び出して、PyTorch モデルを SageMaker にデプロイ可能なモデルに変換します。ビルド関数は、inferency.py ファイルや serving.properties ファイルなど、モデルサーバーに必要なアーティファクトを生成します。

local_mode_model = model_builder.build()

Falcon などの FM の場合は、オプションで、最適なモデル提供設定を見つけるためにローカルベンチマーキングを実行するローカルコンテナモードで tune() を実行できます。これには、環境で複数の GPU が使用可能な場合に使用する GPU の数を指定するテンソル並列度が含まれます。準備ができたら、deploy() を呼び出してモデルをローカル開発環境にデプロイします。

tuned_model = local_mode_model.tune()
tuned_model.deploy()

モデルをテストしてみましょう。

updated_sample_input = model_builder.schema_builder.sample_input
print(updated_sample_input)

{'inputs': 'Falcons are',
 'parameters': {'max_new_tokens': 32}}
 
local_tuned_predictor.predict(updated_sample_input)[0]["generated_text"]

私のデモでは、モデルは次の応答を返します。

a type of bird that are known for their sharp talons and powerful beaks.They are also known for their ability to fly at high speeds […]

SageMaker にモデルをデプロイする準備ができたら、deploy() を再度呼び出し、モードを SAGEMAKLER_ENDPOINT に設定して、適切な許可が付与されている AWS Identity and Access Management (IAM) ロールを指定します。

sm_predictor = tuned_model.deploy(
    mode=Mode.SAGEMAKER_ENDPOINT,
	role="arn:aws:iam::012345678910:role/role_name"
)

これにより、SageMaker エンドポイントへのモデルのデプロイが開始されます。エンドポイントの準備ができたら、予測を実行できます。

new_input = {'inputs': 'Eagles are','parameters': {'max_new_tokens': 32}}
sm_predictor.predict(new_input)[0]["generated_text"])

SageMaker Studio の新しいモデルデプロイエクスペリエンス
新しいインタラクティブなモデルデプロイワークフローを開始するには、モデルのランディングページもしくは SageMaker JumpStart モデルの詳細のページからデプロイする 1 つ以上のモデルを選択するか、またはエンドポイントの詳細のページから新しいエンドポイントを作成します。

Amazon SageMaker - 新しいモデルデプロイエクスペリエンス

新しいワークフローは、入力を最小限に抑えながら、選択したモデルを迅速にデプロイするのに役立ちます。SageMaker Inference Recommender を利用してモデルをベンチマーキングした場合、ドロップダウンにはそのベンチマーキングからのインスタンスに関するレコメンデーションが表示されます。

SageMaker Studio でのモデルデプロイエクスペリエンス

モデルをベンチマーキングしない場合、ドロップダウンには、SageMaker が独自のヒューリスティックに基づいて適合すると予測する、見込みのあるインスタンスが表示されます。最も人気のある SageMaker JumpStart モデルの一部については、AWS で事前テストされた最適なインスタンスタイプが表示されます。他のモデルについては、一般的に推奨されるインスタンスタイプが表示されます。例えば、SageMaker JumpStart で Falcon 40B Instruct モデルを選択すると、推奨されるインスタンスタイプが表示されます。

SageMaker Studio でのモデルデプロイエクスペリエンス

SageMaker Studio でのモデルデプロイエクスペリエンス

ただし、特定のユースケースに合わせてコストやパフォーマンスのデプロイを最適化したい場合は、[代替設定] パネルを開いて、ベンチマーキング前のデータに基づいてその他のオプションを表示できます。

SageMaker Studio でのモデルデプロイエクスペリエンス

デプロイした後は、推論をテストしたり、自動スケーリングポリシーを管理したりできます。

SageMaker Studio でのモデルデプロイエクスペリエンス

留意点
知っておくべき重要な点がいくつかあります。

サポートされる ML モデルとフレームワーク – リリース時には、新しい SageMaker Python SDK ツールは XGBoost モデルと PyTorch モデルのモデルデプロイをサポートします。SageMaker LMI コンテナまたは Hugging Face TGI ベースのコンテナを利用して、Hugging Face モデル ID または SageMaker JumpStart モデル ID を指定することで FM をデプロイできます。独自のコンテナを持ち込む (BYOC) ことも、ONNX 形式の Triton モデルサーバーを使用してモデルをデプロイすることもできます。

今すぐご利用いただけます
新しいツールセットは、Amazon SageMaker リアルタイム推論が利用できるすべての AWS リージョンで本日よりご利用いただけます。新しいツールセットの使用には費用はかかりません。作成された基盤となる SageMaker リソースの料金のみをお支払いいただきます。

詳細はこちら

始めましょう
今すぐ、AWS マネジメントコンソールで SageMaker の新しいモデルデプロイエクスペリエンスをお試しください!

– Antje

原文はこちらです。