如何將LLaMA 3部署到生產中以及硬體要求?

banq發表於2024-04-24


Meta 幾天前釋出了 LLaMA 3 生成式 AI 模型,它已經顯示出令人印象深刻的功能。
透過此分步指南瞭解如何安裝 LLaMA 3 並將其部署到生產環境中。從硬體要求到部署和擴充套件,我們涵蓋了您順利實施所需瞭解的一切。

什麼是LLaMA 3?
Meta 推出了 Llama 3 開源 AI 模型的初始版本,可用於文字建立、程式設計或聊天機器人。此外,Meta 還宣佈計劃將 LLaMA 3 納入其主要社交媒體應用程式。此舉旨在與其他AI助手競爭,例如OpenAI的ChatGPT、微軟的Copilot和谷歌的Gemini。

與 Llama 2 類似,Llama 3 是一個可免費訪問的具有開放權重的大型語言模型,由一家領先的人工智慧公司提供(儘管它不符合傳統意義上的“開源”)。

目前,Llama 3可以從Meta網站免費下載,有兩種不同的引數大小:80億(8B)和700億(70B)。使用者可以註冊來訪問這些版本。 Llama 3 提供兩種變體:預訓練,這是下一個令牌預測的基本模型;指令調整,經過微調以遵守使用者命令。兩個版本的上下文限制均為 8,192 個令牌。

Meta 執行長馬克·祖克伯 (Mark Zuckerberg) 在接受 Dwarkesh Patel 採訪時提到,他們使用 24,000 個 GPU 叢集訓練了兩個定製模型。 70B 模型使用大約 15 萬億個代幣的資料進行訓練,並且從未達到飽和點或能力極限。隨後,Meta 決定專注於訓練其他模型。該公司還透露,他們目前正在開發 Llama 3 的 400B 引數版本,Nvidia 的 Jim Fan 等專家認為該版本在 MMLU、GPQA、HumanEval、和數學。

據 Meta 稱,Llama 3 已使用各種基準進行評估,包括 MMLU(本科水平知識)、GSM-8K(小學數學)、HumanEval(編碼)、GPQA(研究生水平問題)和 MATH(數學應用題) )。這些基準測試表明,8B 模型的效能優於開放權重模型,例如 Google 的 Gemma 7B 和 Mistral 7B Instruct,而 70B 模型則與 Gemini Pro 1.5 和 Claude 3 Sonnet 具有競爭力。

Meta 報告稱,Llama 3 模型在理解編碼的能力方面得到了改進,與 Llama 2 類似,並且首次使用影像和文字進行訓練。然而,它當前的輸出僅限於文字。

LLaMA 3 硬體要求和在 AWS EC2 上選擇正確的例項
由於許多組織使用 AWS 來處理其生產工作負載,讓我們看看如何在 AWS EC2 上部署 LLaMA 3。

實現 LLM 時存在多個障礙,例如 VRAM(GPU 記憶體)消耗、推理速度、吞吐量和磁碟空間利用率。在這種情況下,我們必須確保在 AWS EC2 上分配具有足夠 VRAM 容量的 GPU 例項來支援模型的執行。

LLaMA 3 8B 在 FP16 中需要大約 16GB 磁碟空間和 20GB VRAM(GPU 記憶體)。您當然可以在 CPU 上部署 LLaMA 3,但對於現實生產用例來說延遲太高。至於LLaMA 3 70B,它需要大約140GB的磁碟空間和160GB的FP16 VRAM。

獲得 LLaMA 3 8B 的 20GB VRAM 相當容易。我建議您配置 NVIDIA A10 GPU:該 GPU 配備 24GB VRAM,是基於 Ampere 平臺的快速 GPU。在 AWS EC2 上,您應該選擇 G5 例項才能配置 A10 GPU。 g5.xlarge 就足夠了。

不過,部署 LLaMA 3 70B 模型更具挑戰性。沒有 GPU 具有足夠的 VRAM 用於此模型,因此您需要配置多 GPU 例項。如果您在 AWS 上配置 g5.48xlarge 例項,您將獲得 192GB VRAM(8 個 A10 GPU),這對於 LLaMA 3 70B 來說足夠了。

在此類配置中,您預計會出現以下延遲(響應時間):LLaMA 3 8B 在 1 秒內生成 50 個令牌,對於 LLaMA 3 70B 在 5 秒內生成 50 個令牌。

為了降低這些模型的運營成本並增加延遲,您可以研究量化技術,但請注意,此類最佳化可能會損害模型的準確性。量化超出了本文的範圍。

為了配置此類例項,請登入 AWS EC2 控制檯,然後啟動新例項:在 g5.xlarge 或 g5.48xlarge 例項上選擇 NVIDIA 深度學習 AMI。不要忘記配置足夠的磁碟空間。

使用 vLLM 進行生產推理
vLLM 是一個專為快速、輕鬆的 LLM 推理和部署而設計的庫。其效率歸功於各種複雜的方法,包括用於最佳化管理注意力鍵和值記憶體的分頁注意力、批次傳入查詢的實時處理以及個性化的 CUDA 核心。

此外,vLLM 透過採用分散式計算(使用張量並行性)、實時流以及與 NVIDIA 和 AMD 顯示卡的相容性,提供了高度的適應性。

具體來說,vLLM 將極大地幫助部署 LLaMA 3,使我們能夠利用配備多個緊湊型 NVIDIA A10 GPU 的 AWS EC2 例項。這比使用單個大型 GPU(例如 NVIDIA A100 或 H100)更有優勢。此外,vLLM 將透過連續批次推理顯著提高我們模型的效率。

設定 vLLM 非常簡單。讓我們與最近建立的 AWS 例項建立 SSH 連線,並使用 pip 安裝 vLLM:
pip install vllm

由於我們計劃在 8 x A10 GPU 上使用 vLLM 執行分散式推理,因此還需要安裝 Ray:
pip install ray

如果您在安裝時遇到相容性問題,從原始碼編譯 vLLM 或使用其 Docker 映像可能會更簡單:檢視 vLLM 安裝說明。


啟動推理伺服器
現在讓我們建立 Python 推理指令碼:

from vllm import LLM

# Use LLaMA 3 8B on 1 GPU
llm = LLM(<font>"meta-llama/Meta-Llama-3-8B-Instruct")

# Use LLaMA 3 70B on 8 GPUs
# llm = LLM(
"meta-llama/Meta-Llama-3-70B-Instruct", tensor_parallel_size=8)

print(llm.generate(
"What are the most popular quantization techniques for LLMs?"))

您可以執行上面的指令碼。如果這是您第一次執行此指令碼,您將需要等待模型下載並載入到 GPU 上,然後您將收到如下內容:

The most popular quantization techniques for Large Language Models (LLMs) are:
1. Integer Quantization
2. Floating-Point Quantization
3. Mixed-Precision Training
4. Knowledge Distillation

這很容易理解。您只需根據您擁有的GPU數量調整tensor_parallel_size即可。

我們現在正在尋求啟動一個適當的推理伺服器,能夠管理大量請求並執行同時推理。首先,啟動伺服器:

對於 LLaMA 3 8B:

python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Meta-Llama-3-8B-Instruct

對於 LLaMA 3 70B:

python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Meta-Llama-3-70B-Instruct
--tensor-parallel-size 8

模型載入到 GPU 上最多需要 1 分鐘。然後您可以啟動第二個終端並開始發出一些請求:

curl http:<font>//localhost:8000/v1/completions \<i>
-H
"Content-Type: application/json" \
-d '{
   
"model": "meta-llama/Meta-Llama-3-8B-Instruct",
   
"prompt": "What are the most popular quantization techniques for LLMs?"
}'

您現在擁有一個適合生產的推理伺服器,由於連續批處理,它可以處理許多並行請求。在某些時候,如果請求數量過多,GPU 就會過載。在這種情況下,您將需要在多個 GPU 例項上覆制模型並平衡您的請求(但這超出了本文的範圍)。

結論
如您所見,藉助 vLLM 等推理伺服器,將 LLaMA 3 部署到生產中不需要任何複雜的程式碼。

然而,配置正確的硬體具有挑戰性。首先是因為這些 GPU 非常昂貴,而且還因為目前全球 GPU 短缺。如果這是您第一次嘗試在 AWS 上配置 GPU 伺服器,您可能沒有建立 GPU 伺服器的許可權。在這種情況下,您需要聯絡支援人員並解釋您的用例。在本文中,我們使用了 AWS EC2,但當然也可以使用其他供應商(Azure、GCP、OVH、Scaleway...)。

部署 LLaMA 3 8B 相當容易,但 LLaMA 3 70B 則是另一頭野獸。考慮到所需的 VRAM 量,您可能需要配置多個 GPU 並使用 vLLM 等專用推理伺服器,以便將模型拆分到多個 GPU 上。

LLaMA 3 8B 在 FP16 中需要大約 16GB 磁碟空間和 20GB VRAM(GPU 記憶體)。至於LLaMA 3 70B,它需要大約140GB的磁碟空間和160GB的FP16 VRAM。


 

相關文章