Amazon SageMakerを使用して、Hugging Faceモデルを簡単にデプロイできます

You can easily deploy Hugging Face models using Amazon SageMaker.

今年早くも、Hugging FaceをAmazon SageMakerで利用しやすくするためにAmazonとの戦略的な協力を発表し、最先端の機械学習機能をより速く提供することを目指しています。新しいHugging Face Deep Learning Containers (DLCs)を導入し、Amazon SageMakerでHugging Face Transformerモデルをトレーニングすることができます。

今日は、Amazon SageMakerでHugging Face Transformersを展開するための新しい推論ソリューションを紹介します!新しいHugging Face Inference DLCsを使用すると、トレーニング済みモデルをわずか1行のコードで展開できます。また、Model Hubから10,000以上の公開モデルを選択し、Amazon SageMakerで展開することもできます。

SageMakerでモデルを展開することで、AWS環境内で簡単にスケーリング可能な本番用エンドポイントが提供されます。モニタリング機能やエンタープライズ向けの機能も組み込まれています。この素晴らしい協力を活用していただければ幸いです!

以下は、新しいSageMaker Hugging Face Inference Toolkitを使用してTransformersベースのモデルを展開する方法です。

from sagemaker.huggingface import HuggingFaceModel

# Hugging Faceモデルクラスを作成し、SageMakerエンドポイントとして展開する
huggingface_model = HuggingFaceModel(...).deploy()

以上です! 🚀

Amazon SageMaker Python SDKを使用して新しいHugging Face DLCsにアクセスして使用する方法の詳細については、以下のガイドとリソースをご覧ください。


以下は、モデルをAmazon SageMakerに展開するための重要なリソースです。

ブログ/ビデオ

  • ビデオ: S3からAmazon SageMakerへのHugging Face Transformersモデルの展開
  • ビデオ: モデルハブからAmazon SageMakerへのHugging Face Transformersモデルの展開

サンプル/ドキュメント

  • Hugging FaceによるAmazon SageMakerのドキュメント
  • Amazon SageMakerへのモデルの展開
  • Hugging FaceのためのAmazon SageMakerドキュメント
  • Hugging FaceのためのPython SDK SageMakerドキュメント
  • Deep Learning Container
  • ノートブック: 10,000以上のHugging Face Transformersのうちの1つをAmazon SageMakerに展開するための推論
  • ノートブック: S3からSageMakerにHugging Face Transformerモデルを展開するための推論

推論に最適化されたHugging Face Transformers用のDeep Learning Containersに加えて、Amazon SageMaker向けに新しいInference Toolkitを作成しました。この新しいInference Toolkitは、transformersライブラリのpipelinesを活用し、事前処理や事後処理のためのコードを書かずにモデルのゼロコード展開を可能にします。以下の「はじめに」セクションには、Amazon SageMakerにモデルを展開するための2つの例があります。

ゼロコード展開に加えて、Inference Toolkitでは「独自のコードを持ち込む」方法もサポートしており、デフォルトのメソッドをオーバーライドすることができます。「独自のコードを持ち込む」については、以下のドキュメントで詳細を学ぶか、「カスタム推論コードをAmazon SageMakerに展開する」サンプルノートブックをご覧ください。

API – 推論ツールキットの説明

transformers pipelinesを使用して、pipelinesのすべての機能を活用するためのAPIを設計しました。このAPIは🤗 Accelerated Inference APIと似たインターフェースを持ち、入力はinputsキーで定義し、追加のサポートされるpipelinesパラメータをparametersキーに追加する必要があります。以下にリクエストの例を示します。

# テキスト分類のリクエストボディ
{
    "inputs": "カメラ - SiPixデジタルカメラが当たりました!固定電話から09061221066に電話してください。28日以内に配達します。"
}
# 質問応答のリクエストボディ
{
    "inputs": {
        "question": "推論に使用されているものは何ですか?",
        "context": "私の名前はフィリップで、私はニュルンベルクに住んでいます。このモデルはsagemakerと一緒に推論に使用されます。"
    }
}
# ゼロショット分類のリクエストボディ
{
    "inputs": "こんにちは、最近会社からデバイスを購入しましたが、広告通りに動作していません。返金を希望します!",
    "parameters": {
        "candidate_labels": [
            "返金",
            "法的",
            "FAQ"
        ]
    }
}

このガイドでは、新しいHugging Face Inference DLCsとAmazon SageMaker Python SDKを使用して、2つのトランスフォーマーモデルを推論のためにデプロイします。

最初の例では、Amazon SageMakerでトレーニングされたHugging Face Transformerモデルを推論のためにデプロイします。

2番目の例では、Model Hubから10,000以上の公開されているHugging Face Transformersモデルのうちの1つを直接Amazon SageMakerにデプロイします。

環境の設定

この例ではAmazon SageMakerノートブックインスタンスを使用します。ノートブックインスタンスの設定方法については、こちらで学ぶことができます。始めるには、Jupyter NotebookまたはJupyterLabに移動し、conda_pytorch_p36カーネルで新しいノートブックを作成します。

注意:Jupyterの使用はオプションです。SDKがインストールされている場所、クラウドへの接続性、および適切な権限(ノートパソコン、別のIDE、またはAirflowやAWS Step Functionsなどのタスクスケジューラ)がある場所からSageMaker API呼び出しを起動することもできます。

その後、必要な依存関係をインストールすることができます。

pip install "sagemaker>=2.48.0" --upgrade

SageMakerでモデルをデプロイするには、sagemakerセッションを作成し、適切なアクセス許可を持つIAMロールを指定する必要があります。 get_execution_roleメソッドは、SageMaker SDKによってオプションの便宜的なものとして提供されます。エンドポイントに後でアタッチされるIAMロールです。たとえば、Amazon S3からモデルをダウンロードします。

import sagemaker

sess = sagemaker.Session()
role = sagemaker.get_execution_role()

トレーニング済みのHugging Face TransformerモデルをSageMakerに推論のためにデプロイする

SageMakerでトレーニング済みのHugging Faceモデルをデプロイする方法は2つあります。トレーニングが終了した後にデプロイするか、model_dataを使用して後でデプロイするかのいずれかです。以下に説明する2つのオプションに加えて、boto3AWS CLITerraform、CloudFormationテンプレートなどのより低レベルのSDKを使用してHugging Faceエンドポイントをインスタンス化することもできます。

Estimatorクラスを使用してトレーニング直後にモデルをデプロイする

トレーニング直後にモデルをデプロイする場合、トレーニングスクリプトにトークナイザーとモデルを含むすべての必要なモデルアーティファクトが保存されていることを確認する必要があります。トレーニング直後にデプロイする利点は、SageMakerモデルコンテナのメタデータにトレーニングジョブの情報が含まれており、トレーニングジョブからデプロイされたモデルへのラインエージが提供されることです。

from sagemaker.huggingface import HuggingFace

############ 疑似コード 開始 ############

# トレーニングを実行するためのHuggingFaceエスティメーターを作成
huggingface_estimator = HuggingFace(....)

# アップロードしたデータセットを入力としてトレーニングジョブを開始
huggingface_estimator.fit(...)

############ 疑似コード 終了 ############

# モデルをSageMaker推論にデプロイ
predictor = hf_estimator.deploy(initial_instance_count=1, instance_type="ml.m5.xlarge")

# 例のリクエスト、常に "inputs" を定義する必要があります
data = {
   "inputs": "Camera - You are awarded a SiPix Digital Camera! call 09061221066 fromm landline. Delivery within 28 days."
}
# リクエスト
predictor.predict(data)

リクエストを実行した後、エンドポイントを削除することができます。

# エンドポイントを削除
predictor.delete_endpoint()

HuggingFaceModelクラスを使用して事前学習済みのチェックポイントからモデルをデプロイする

すでにモデルをトレーニング済みであり、後でデプロイしたい場合は、model_data引数を使用してトークナイザーとモデルの重みの場所を指定できます。

from sagemaker.huggingface.model import HuggingFaceModel

# Hugging Faceモデルクラスを作成
huggingface_model = HuggingFaceModel(
   model_data="s3://models/my-bert-model/model.tar.gz",  # トレーニング済みのsagemakerモデルのパス
   role=role, # エンドポイントを作成するためのIAMロール
   transformers_version="4.6", # 使用するtransformersのバージョン
   pytorch_version="1.7", # 使用するpytorchのバージョン
)
# モデルをSageMaker推論にデプロイ
predictor = huggingface_model.deploy(
   initial_instance_count=1, 
   instance_type="ml.m5.xlarge"
)

# 例のリクエスト、常に "inputs" を定義する必要があります
data = {
   "inputs": "Camera - You are awarded a SiPix Digital Camera! call 09061221066 fromm landline. Delivery within 28 days."
}

# リクエスト
predictor.predict(data)

リクエストを実行した後、以下のコードでエンドポイントを削除できます:

# エンドポイントを削除
predictor.delete_endpoint()

Hugging Face の 10,000以上のモデルを Amazon SageMaker に展開して推論する

Hugging Face Model Hub から直接モデルを Amazon SageMaker に展開するには、HuggingFaceModel を作成する際に2つの環境変数を定義する必要があります。次のように定義する必要があります:

  • HF_MODEL_ID:モデルIDを定義します。これは SageMaker エンドポイントを作成する際に huggingface.co/models から自動的に読み込まれます。🤗 Hub では、この環境変数を通じて 10,000以上のモデルがすべて利用可能です。
  • HF_TASK:使用する🤗 Transformers パイプラインのタスクを定義します。タスクの完全なリストはこちらで確認できます。
from sagemaker.huggingface.model import HuggingFaceModel

# Hub モデルの設定。<https://huggingface.co/models>
hub = {
  'HF_MODEL_ID':'distilbert-base-uncased-distilled-squad', # hf.co/models からの model_id
  'HF_TASK':'question-answering' # 予測に使用する NLP タスク
}

# Hugging Face モデルクラスを作成
huggingface_model = HuggingFaceModel(
   env=hub, # Hub からモデルを読み込むための設定
   role=role, # エンドポイントを作成するための IAM ロール
   transformers_version="4.6", # 使用する transformers のバージョン
   pytorch_version="1.7", # 使用する pytorch のバージョン
)

# モデルを SageMaker 推論にデプロイ
predictor = huggingface_model.deploy(
   initial_instance_count=1,
   instance_type="ml.m5.xlarge"
)

# サンプルリクエスト。常に "inputs" を定義する必要があります
data = {
"inputs": {
    "question": "推論に使用されるものは何ですか?",
    "context": "私の名前はフィリップで、私はニュルンベルクに住んでいます。このモデルは推論に sagemaker を使用しています。"
    }
}

# リクエスト
predictor.predict(data)

リクエストを実行した後、以下のコードでエンドポイントを削除できます。

# エンドポイントを削除
predictor.delete_endpoint()

ドキュメントには詳しいよくある質問があります。

Q: 推論にどのようなモデルを展開できますか?

A: 次のものを展開できます:

  • Amazon SageMaker でトレーニングされた任意の🤗 Transformers モデル、または他の互換性のあるプラットフォームでトレーニングされ、SageMaker Hosting デザインに適合するモデル
  • Hugging Face Model Hub の 10,000以上の公開されている Transformer モデルのいずれか
  • Hugging Face プレミアムアカウントにホストされたプライベートモデル

Q: 推論ツールキットはどのパイプラインやタスクをサポートしていますか?

A: 推論ツールキットと DLC は、transformers pipelines のどれでもサポートしています。完全なリストはこちらで確認できます

Q: SageMaker エンドポイントをホストする際、transformers pipelines を使用する必要がありますか?

A: いいえ、独自の推論コードを記述して独自のモデルとロジックをサーブすることもできます。詳細については、こちらを参照してください。

Q: Hugging Face Deep Learning Containers (DLCs) を使用するためには、SageMaker Python SDK を使用する必要がありますか?

A: Hugging Face DLC は、SageMaker Python SDK なしでも使用できます。AWS CLI、boto3、Cloudformation などの他の SDK を使用してモデルを SageMaker にデプロイできます。DLC は Amazon ECR を介しても利用でき、選択した環境でプルして使用できます。

Q: Hugging Face Deep Learning Containers を使用する理由は何ですか?

A: DLC は、インストール、設定、メンテナンスが不要な、完全にテストされ、メンテナンスされ、最適化された深層学習環境です。特に、推論 DLC には、事前に書かれたサービングスタックが付属しており、DL サービングの技術的な敷居を劇的に下げます。

Q: Amazon SageMaker によってデータとコードはどのように保護されますか?

A: Amazon SageMaker は、静止中の暗号化通信中の暗号化仮想プライベートクラウド(VPC)接続、およびIdentity and Access Management(IAM)など、多数のセキュリティメカニズムを提供しています。AWS クラウドと Amazon SageMaker のセキュリティについて詳しくは、「Amazon SageMaker のセキュリティ」および「AWS Cloud Security」をご覧ください。

Q: このソリューションは私の地域で利用できますか?

A: サポートされている地域の一覧については、AWSのグローバルインフラストラクチャのAWSリージョンテーブルをご覧ください。

Q: このソリューションにはプレミアムサポートやサポートSLAがありますか?

A: AWSテクニカルサポートのレベルはAWSから提供されており、AWSの製品やサービスの開発および本番の問題をカバーしています。詳細および範囲については、AWSサポートを参照してください。

Hugging Faceコミュニティがお答えしたり、利益を得たりできる質問がある場合は、Hugging Faceフォーラムに投稿してください。


NLPのロードマップを加速するために、Hugging Faceチームからプレミアムサポートが必要な場合は、エキスパートアクセラレーションプログラムを利用して、オープンソース、サイエンス、およびMLエンジニアリングチームから直接ガイダンスを受けることができます。

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ニュースレターはあなたが必要なすべてです#75

今週は、OpenAIのドラマが終わり、Sam AltmanとGreg BrockmanがOpenAIに復帰し、2人の新しい取締役が任命されました(既存の1...

人工知能

「不正行為の恐れにもかかわらず、学校はChatGPTの禁止を撤回する」

「かつてA.I.チャットボットをブロックしようと競っていた一部の地域は、今ではそれらを受け入れようと試みています」

データサイエンス

「AIは医療現場でどのような役割を果たすべきか?」

「私は社会学者としての訓練を受けたことを知っている方もいるかもしれません──正確に言うと、大学院で医療社会学を専攻しま...

データサイエンス

研究:AIモデルはルール違反に関する人間の判断を再現できない

研究者によると、一般的なデータ収集技術を用いて訓練されたモデルは、人間よりもルール違反を厳しく判断する傾向があると報...

AI研究

この脳AIの研究では、安定した拡散を用いて脳波から画像を再現します

人間の視覚システムと似たように、世界を見て認識する人工システムを構築することは、コンピュータビジョンの重要な目標です...

機械学習

「2Dから3Dへ:アラインドジオメトリックプライオリティを用いたテキストから3D生成の一貫性向上」

2D画像を3Dオブジェクトに変換することは、テキストから3D生成のために困難なタスクです。これは、2D拡散モデルがビューに関...