Llama 3.1 405B 推理服務部署:初學者指南

Llama 3.1 405B 推理服務部署:初學者指南

簡介

本文以 8 x 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 部署推理服務,三項關鍵準備工作如下:

  • 硬體:建議租用 8 x 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 提交模型申請,等待約半小時取得授權。

回到 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 埠,同時接收並處理使用者請求。您可以從本機終端機傳送 POST 請求至 completions 端點,快速驗證推理服務。指令如下:

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 願景化為現實。