Hugging Face LLM 推論コンテナ for Amazon SageMaker

Hugging Faceは、Amazon SageMaker向けの新しいLLM推論コンテナ(DLC)をリリースし、ユーザーがセキュアで管理された環境でオープンソースのLarge Language Model(LLM)をデプロイできるようにしました。このコンテナは、LLMのサービングを高い並行性と低レイテンシーで最適化するために設計された目的別構築ソリューションであるText Generation Inference(TGI)によって駆動されています。

Text Generation Inference (TGI)による高パフォーマンス推論

Hugging Face LLM DLCはTGIを活用し、最も人気のあるオープンソースLLMアーキテクチャに対していくつかの技術的最適化を提供します。これらの最適化には以下が含まれます:

  • Tensor Parallelism and Custom CUDA Kernels: 複数のGPUにモデルの重みを分散させ、より大きなモデルを扱い速度を向上させます。
  • Continuous Batching: 動的に受信リクエストをバッチ処理することで、総スループットを向上させます。
  • Flash-Attention: 推論のために最適化されたtransformersコードを使用し、効率を向上させます。
  • Quantization: bitsandbytesをサポートし、モデルのメモリフットプリントを削減します。
  • Accelerated Weight Loading: safetensorsを利用して起動時間を短縮します。
  • Advanced Generation Controls: logitsワーパー(温度スケーリング、top-k、繰り返しペナルティ)、ストップシーケンス、ログ確率、およびServer-Sent Events(SSE)を介したトークンストリーミングを含みます。
  • Watermarking: 生成されたコンテンツを追跡するため、Large Language Modelにウォーターマークを実装します。

サポートされるモデルアーキテクチャ

LLM推論コンテナは、以下の幅広いモデルアーキテクチャを公式にサポートしています:

  • BLOOM / BLOOMZ
  • Llama (Vicuna、Alpaca、Koalaを含む)
  • Falcon 7B / 40B
  • GPT-NeoX 20B (Pythia、Lotus、Rosey、Chip、RedPajama、およびOpen Assistantを含む)
  • StarCoder / SantaCoder
  • FLAN-T5-XXL (T5-11B)
  • Galactica
  • MT0-XXL

Amazon SageMakerにおけるデプロイワークフロー

新しいDLCを使用してLLMをデプロイするには、sagemaker Python SDKを通じて合理化されたプロセスが含まれます。ワークフローは以下の手順で構成されます:

1. コンテナの取得

ユーザーは、get_huggingface_llm_image_uri メソッドを使用してバックエンド、リージョン、バージョン(例:バージョン1.0.3)を指定し、特定のコンテナURIを取得します。

2. モデル設定

モデルは HuggingFaceModel クラスを使用してデプロイされます。主要な設定パラメータは以下の通りです:

  • HF_MODEL_ID: Hugging Face HubからのモデルID(例:OpenAssistant/pythia-12b-sft-v8-7k-steps)。
  • SM_NUM_GPUS: レプリカごとに使用するGPUの数。
  • MAX_INPUT_LENGTHMAX_TOTAL_TOKENS: 入力と出力の長さの制約。
  • HF_MODEL_QUANTIZE: コスト最適化のために bitsandbytes 量子化を有効にするオプション設定。

3. エンドポイントのデプロイ

モデルは deploy メソッドを使用してエンドポイントにデプロイされます。たとえば、ml.g5.12xlarge インスタンス(4つのNVIDIA A10G GPUと96GBのGPUメモリを搭載)は、TGIを介して利用可能なすべてのGPUにモデルを自動的にシャードするために使用できます。

推論と生成パラメータ

デプロイ後、エンドポイントはLLMの出力を制御するためのさまざまな生成パラメータをサポートします:

  • ランダムネスとサンプリング: temperaturetop_ptop_k、および do_sample
  • 長さと繰り返し: max_new_tokensrepetition_penalty
  • 制約: 生成を終了するための stop シーケンス。
  • その他の制御: 再現性のための seedtypical_p、およびプロンプトが出力に含まれるかどうかを決定する return_full_text

このインフラストラクチャは、SageMaker エンドポイントと Gradio のようなフロントエンドインターフェースを組み合わせることで、チャットボットや仮想アシスタントなどのスケーラブルなAIアプリケーションの作成を可能にします。

Sources