Llama 3.1 405B 推論サービスデプロイメント:初心者ガイド

Llama 3.1 405B 推論サービスデプロイメント:初心者ガイド

はじめに

この記事では、8 基の H100 GPU インスタンスを使用して Llama3.1–405B をデプロイする方法を紹介します。大規模モデルを自分でデプロイすることは、時間とコストがかかる作業です。このような面倒で高額な作業を避けるには、Llama3.1–405B を直接利用することを検討してください。AI 業界内で優れたモデルプロバイダープラットフォームを探し、OpenAI API 標準を介して推論サービスとして利用しましょう。これらはユーザーフレンドリーで、従量課金制の価格モデルはコスト効率が良く管理しやすいです。Novita AI が提供する Llama3.1–405B 推論 API サービスをお勧めします。

Llama3.1–405B のデプロイ要件

Meta がリリースした Llama3.1 モデルはすべて、8B、70B、405B を含みます。Llama3.1–405B モデルは、パラメータ数が 4050 億に達する、これまでで最大のオープンソース大規模言語モデルです。モデルの性能評価結果は GPT-4 および GPT-4o を上回り、Claude3.5-Sonnet と同等です。

このような大規模モデルを GPU にロードすることは困難です。オリジナルの FP16 版の 405B モデルには 810GB の GPU メモリが必要です(下図参照)。しかし、現在利用可能な最も強力な GPU H100 を例にとると、8 ソケットのサーバーではこのバージョンのモデルを直接ロードできません。FP16 版のモデルを量子化し、低精度表現に変換することで、メモリ要件を削減し、GPU に正常にロードできるようにする必要があります。

Llama3.1 モデルは Llama3 モデルと類似したアーキテクチャを持つため、推論フレームワークに容易に対応できます。vLLM などのオープンソース推論ソリューションは、大規模な Llama3.1–405B をサポートするために迅速に適応できます。

Llama3.1–405B の推論サービスをデプロイするために必要な 3 つの主要な準備は以下の通りです。

  • ハードウェア: 8 基の H100 GPU サーバーインスタンスをレンタルし、約 1.5TB のストレージ容量を確保することをお勧めします。
  • モデル: Hugging Face アカウントを準備し、オリジナルの Llama3.1–405B または FP8 もしくは INT4 版のモデルをダウンロードします。
  • 推論フレームワーク: vLLM v0.5.3.post1 の最新バージョンをダウンロードします。

モデルの準備

8 ソケットの H100 GPU サーバーを準備したら、サーバーにログインしてモデルをダウンロードします。FP16 版のモデルをダウンロードし、FP8 および INT4 量子化バージョンに変換する方法を紹介します(もちろん、Hugging Face から事前量子化されたモデルをダウンロードすることもできます)。

Hugging Face プラットフォームから Instruct バージョンをダウンロードすることをお勧めします。まず、Hugging Face に登録してログインします。設定ページで現在のユーザーの Access Token を作成し保存します。これはモデルのダウンロード時に使用します。

Llama3.1–405B モデルページを開きます: https://huggingface.co/meta-llama/Meta-Llama-3.1-405B-Instruct、Meta にモデルアプリケーションを送信し、約 30 分間の認可を待ちます。

GPU サーバーに戻り、Hugging Face クライアントアプリケーションをインストールし、モデルのダウンロードを開始します。コマンドは以下の通りです。

pip install huggingface-hub
huggingface-cli login ## Access Token を入力
huggingface-cli download meta-llama/Meta-Llama-3.1-405B-Instruct ## 405B のダウンロード開始

長い待ち時間の後(インターネット速度に依存)、800GB の 405B モデルがローカルマシンにダウンロードされます。「huggingface-cli scan-cache」を呼び出すと、詳細なモデル情報が表示されます。

次に、オリジナルモデルに対して FP8 および INT4 量子化を実行します。

まず、FP8 量子化ツールをダウンロードします。オープンソースの AutoFP8 を使用できます: https://github.com/neuralmagic/AutoFP8。その中のスクリプトを呼び出し、動的モードで量子化します。以下の手順で行います。

git clone https://github.com/neuralmagic/AutoFP8.git
cd AutoFP8
pip install -e . ## AutoFP8 ツールをローカルにコンパイルしてインストール
python3 examples/quantize.py --model-id meta-llama/Meta-Llama-3.1-405B-Instruct --save-dir Meta-Llama-3-8B-Instruct-fp8 --activation-scheme dynamic --max-seq-len 2048 --num-samples 2048

量子化スクリプトでは、「— save-dir」を使用して量子化されたモデルバージョンの出力パスを指定します。これは重みのみの量子化であるため、全体的な速度は速いです。

Meta が提供する FP8 量子化バージョンをダウンロードすることもできます: https://huggingface.co/meta-llama/Meta-Llama-3.1-405B-Instruct-FP8。ダウンロードコマンドは以下の通りです。

huggingface-cli download meta-llama/Meta-Llama-3.1-405B-Instruct-FP8

FP8 量子化と同様に、オープンソースの AutoAWQ ツールを使用して INT4 量子化を実行できます。この量子化方法のアドレスは https://github.com/casper-hansen/AutoAWQ です。量子化手順は以下の通りです。

推論フレームワークの構築

強力なオープンソースコミュニティを活用して、vLLM はさまざまな LLM をサポートする効率的な推論フレームワークであり、タイムリーに更新されます。v0.5.3.post1 から、vLLM は Llama 3.1 モデルの推論サービスをサポートしています。

vLLM ソースコードをダウンロードしてコンパイルする手順は以下の通りです。

git clone https://github.com/vllm-project/vllm
cd vllm
git checkout -b v0.5.3.post1 v0.5.3.post1
pip install -e .

コンパイル後、推論サービスを開始できます。

vLLM をローカルマシンでコンパイルする以外に、vLLM を Docker イメージとしてビルドすることもできます。方法は以下の通りです。

git clone https://github.com/vllm-project/vllm
cd vllm
git checkout -b v0.5.3.post1 v0.5.3.post1
docker build -t vllm_0.5.3.p1 .

vLLM イメージをダウンロードすることもできます。

docker pull vllm/vllm-openai:v0.5.3.post1

推論サービスの実行

vLLM 推論フレームワークを構築した後、vLLM を起動して Llama 3.1–405B モデルをロードし、推論サービスを実行できます。ローカルでコンパイルした vLLM 推論フレームワークの場合、vLLM ソースコードのルートディレクトリに切り替え、以下のコマンドを実行して推論サービスを開始します。

cd vllm
python3 -m vllm.entrypoints.openai.api_server --port 18001 --model meta-llama/Meta-Llama-3.1-405B-Instruct-FP8 --tensor-parallel-size 8 --pipeline-parallel-size 1 --swap-space 16 --gpu-memory-utilization 0.99 --dtype auto --served-model-name llama31-405b-fp8 --max-num-seqs 32 --max-model-len 32768 --max-num-batched-tokens 32768 --max-seq-len-to-capture 32768

Docker コンテナで推論サービスを実行する場合は、以下のコマンドを使用します。

docker run -d --gpus all --privileged --ipc=host --net=host vllm/vllm-openai:v0.5.3.post1 --port 18001 --model meta-llama/Meta-Llama-3.1-405B-Instruct-FP8 --tensor-parallel-size 8 --pipeline-parallel-size 1 --swap-space 16 --gpu-memory-utilization 0.99 --dtype auto --served-model-name llama31-405b-fp8 --max-num-seqs 32 --max-model-len 32768 --max-num-batched-tokens 32768 --max-seq-len-to-capture 32768

vLLM 推論フレームワークが実行されると、ポート 18001 で待機し、ユーザーリクエストを受信して処理します。ローカルターミナルから completions エンドポイントに POST リクエストを送信することで、推論サービスを簡単に確認できます。コマンドは以下の通りです。

curl -X POST -H “Content-Type: application/json”
http://localhost:18001/v1/completions
-d ‘{“model”: “llama31-405b-fp8”, “prompt”: “San Francisco is a”}’

これで、Llama 3.1 モデルのデプロイが完了しました。

Novita AI は、AI の野心を強化するオールインワンのクラウドプラットフォームです。統合 API、サーバーレス、GPU インスタンス — 必要なコスト効率の高いツール。インフラストラクチャを排除し、無料で始めて、AI のビジョンを現実にしましょう。