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_LENGTHとMAX_TOTAL_TOKENS: 入力と出力の長さの制約。HF_MODEL_QUANTIZE: コスト最適化のためにbitsandbytes量子化を有効にするオプション設定。
3. エンドポイントのデプロイ
モデルは deploy メソッドを使用してエンドポイントにデプロイされます。たとえば、ml.g5.12xlarge インスタンス(4つのNVIDIA A10G GPUと96GBのGPUメモリを搭載)は、TGIを介して利用可能なすべてのGPUにモデルを自動的にシャードするために使用できます。
推論と生成パラメータ
デプロイ後、エンドポイントはLLMの出力を制御するためのさまざまな生成パラメータをサポートします:
- ランダムネスとサンプリング:
temperature、top_p、top_k、およびdo_sample。 - 長さと繰り返し:
max_new_tokensとrepetition_penalty。 - 制約: 生成を終了するための
stopシーケンス。 - その他の制御: 再現性のための
seed、typical_p、およびプロンプトが出力に含まれるかどうかを決定するreturn_full_text。
このインフラストラクチャは、SageMaker エンドポイントと Gradio のようなフロントエンドインターフェースを組み合わせることで、チャットボットや仮想アシスタントなどのスケーラブルなAIアプリケーションの作成を可能にします。