使用 NVIDIA NIM 部署本地 LLAMA-3:全面指南
使用 NVIDIA NIM 部署本地 LLAMA-3:全面指南 - 了解如何使用 NVIDIA NIM 部署 LLAMA-3 模型,在您的雲端或本地機器上進行高效推論。涵蓋設置、效能測試和與 OpenAI API 的整合。
2025年2月17日

利用我們關於使用 NVIDIA 的 NIM 自主託管和部署 LLAMA-3 模型的指南,解鎖大型語言模型的力量。探索如何利用這項尖端技術來加速您的 AI 專案並獲得無與倫比的性能。
如何部署 NVIDIA NIM 進行大型語言模型推論
存取 NVIDIA Launchpad 和 GPU 指標儀表板
設定 NVIDIA NIM Docker 容器
與 NVIDIA NIM API 互動
壓力測試 NVIDIA NIM API 端點
使用 NVIDIA NIM 搭配 OpenAI API 客戶端
結論
如何部署 NVIDIA NIM 進行大型語言模型推論
如何部署 NVIDIA NIM 進行大型語言模型推論
要在您自己的雲端或本地機器上使用 NVIDIA NIM 部署 Lama 系列模型,請遵循以下步驟:
-
設置環境: 如果在本地機器上運行,請安裝 Docker 引擎和 NVIDIA 容器工具包。這些的連結已在影片描述中提供。
-
獲取 API 金鑰: 註冊 NVIDIA 帳戶以生成您的 API 金鑰和個人金鑰。這些將用於與遠程服務器進行交互。
-
運行 Docker 容器: 使用提供的 Docker 命令運行容器,指定容器名稱、GPU 使用情況、API 金鑰、模型緩存位置和端口。這將下載並設置 Lama 3 80 億指令模型。
-
與模型互動: 使用提供的 cURL 命令與部署的模型進行交互。此命令遵循 OpenAI API 標準,允許您使用 OpenAI 客戶端進行交互。
-
壓力測試 API: 使用帶有
requests
庫的 Python 腳本向 API 端點發送多個並發請求,並監控 GPU 利用率和吞吐量。 -
使用 OpenAI API 客戶端: 演示如何使用 OpenAI API 客戶端與 NVIDIA NIM 交互,方法是更新基本 URL 和其他參數以匹配部署的模型。
NVIDIA NIM 提供了一種方便和優化的方式來部署大型語言模型進行推理,能夠實現高達 3 倍的性能提升,相比其他部署選項。90 天免費試用允許您進一步探索這個解決方案。
存取 NVIDIA Launchpad 和 GPU 指標儀表板
存取 NVIDIA Launchpad 和 GPU 指標儀表板
要訪問 NVIDIA Launchpad 和 GPU 指標儀表板,請按照以下步驟操作:
-
作為 NVIDIA Launchpad 的一部分,您可以訪問代碼 IDE,即 Visual Studio Code。您可以使用此 IDE 與 GPU 實例交互並部署 Llama 3 80 億指令模型。
-
GPU 指標儀表板是一個 Grafana 儀表板,提供有關 GPU 使用情況和性能的詳細信息。您可以訪問此儀表板來監控 GPU 利用率、CUDA 版本、GPU 驅動程序和其他相關指標。
-
Grafana 儀表板提供了 GPU 使用情況隨時間的可視化表示,允許您跟踪性能並相應地優化部署。
-
您可以在終端中使用
watch
命令實時監控 GPU 使用情況。命令watch -n 1 nvidia-smi
將每秒更新一次 GPU 使用情況,為您提供 GPU 利用率的實時視圖。 -
GPU 指標儀表板和實時監控工具允許您了解 Llama 3 80 億指令模型部署的性能特徵,幫助您優化資源利用並確保高效的推理。
設定 NVIDIA NIM Docker 容器
設定 NVIDIA NIM Docker 容器
要使用 NVIDIA NIM 部署 Llama 3 80 億指令模型,請按照以下步驟操作:
- 打開提供的 IDE,並確保您有權訪問 H100 GPU。
- 通過註冊 NVIDIA 帳戶並生成必要的金鑰來設置您的 API 金鑰。
- 運行以下 Docker 命令啟動 NVIDIA NIM 容器:
docker run -it --gpus all -e NVIDIA_API_KEY=$NVIDIA_API_KEY -p 8000:8000 --name llama-3-8b-instruct nvcr.io/nvidia/nim:latest --model-name llama-3-8b-instruct
此命令將:
- 創建一個名為 "llama-3-8b-instruct" 的 Docker 容器
- 使用系統上的所有可用 GPU
- 設置 NVIDIA_API_KEY 環境變數
- 公開 8000 端口以供 NIM 服務器使用
- 使用 NVIDIA NIM 目錄中的 "llama-3-8b-instruct" 模型
- 容器運行後,您可以使用提供的 cURL 命令與模型進行交互:
curl -X POST -H "Content-Type: application/json" -d '{"model": "llama-3-8b-instruct", "prompt": "Tell me a joke.", "max_tokens": 1000, "temperature": 0.7, "top_p": 0.95, "stop": ["\n"]}' http://localhost:8000/v1/completions
此 cURL 命令向在 localhost:8000 上運行的 NIM 服務器發送請求,以生成 "Tell me a joke." 的響應。
-
要壓力測試 API 端點,您可以運行提供的 Python 腳本
test_server.py
。此腳本將向 NIM 服務器發送多個並發請求,並監控 GPU 利用率。 -
最後,您也可以使用 OpenAI API 客戶端與 NIM 服務器進行交互,方法是將基本 URL 更新為指向 NIM 服務器的地址和端口。
通過遵循這些步驟,您可以成功使用 NVIDIA NIM Docker 容器部署 Llama 3 80 億指令模型,並測試其性能。
與 NVIDIA NIM API 互動
與 NVIDIA NIM API 互動
要與 NVIDIA NIM API 交互,我們可以使用一個簡單的 cURL 命令。cURL 命令提供以下功能:
- 向運行 NVIDIA NIM 服務器的本地主機的 8000 端口發送 POST 請求。
- 使用與 OpenAI 兼容的 API,因此我們可以使用 OpenAI 客戶端與 NIM 服務器交互。
- 指定要使用的 Llama 3 80 億指令模型。
- 設置與 OpenAI 期望的消息結構類似的消息結構。
- 允許設置其他參數,如
max_tokens
和temperature
。
以下是 cURL 命令:
curl -X POST -H "Content-Type: application/json" -d '{"model": "nlp/lama-3-8b-instruct", "messages": [{"role": "user", "content": "Tell me a joke"}], "max_tokens": 1000, "temperature": 0.7}' http://localhost:8000/v1/chat/completions
此 cURL 命令將向 NVIDIA NIM 服務器發送請求,該服務器將從 Llama 3 80 億指令模型生成響應。響應將以流式方式返回,每個令牌都會在生成時顯示。
為了進一步壓力測試 API 端點,我們可以使用一個利用 requests
庫的 Python 腳本來發送多個並發請求。此腳本將發送 50 個笑話生成請求,並監控 GPU 利用率和吞吐量。
import requests
import threading
url = "http://localhost:8000/v1/chat/completions"
headers = {"Content-Type": "application/json"}
payload = {
"model": "nlp/lama-3-8b-instruct",
"messages": [{"role": "user", "content": "Tell me 50 jokes"}],
"max_tokens": 1000,
"temperature": 0.7,
"stream": False
}
def send_requests():
for _ in range(50):
response = requests.post(url, headers=headers, json=payload)
print(response.json())
threads = []
for _ in range(10):
t = threading.Thread(target=send_requests)
t.start()
threads.append(t)
for thread in threads:
thread.join()
此腳本演示了如何使用與 OpenAI 兼容的 API 與 NVIDIA NIM 服務器交互。它表明 NVIDIA NIM 服務器可以為大型語言模型提供高性能推理,相比不使用 NIM 可以實現高達 3 倍的性能提升。
壓力測試 NVIDIA NIM API 端點
壓力測試 NVIDIA NIM API 端點
要壓力測試 NVIDIA NIM API 端點,我們將使用一個簡單的 Python 腳本,利用 requests
庫向 API 發送多個並發請求。以下是它的工作原理:
-
我們定義 API 端點 URL,在本例中是本地主機,因為我們在本地運行服務器。如果您要部署到遠程服務器,則需要使用外部 IP 地址並啟用端口轉發。
-
我們設置必要的標頭,包括
Content-Type
標頭為application/json
。 -
我們創建有效負載,其中包括模型名稱(
"model": "llama-3-8b-instruct"
),提示("prompt": "Tell me 50 jokes."
),以及其他參數如max_tokens
、temperature
和stop
。 -
我們定義一個
send_requests()
函數,該函數使用requests.post()
方法和我們之前定義的 URL、標頭和有效負載發送請求。 -
我們使用多線程運行
send_requests()
函數的多個實例,模擬向 API 端點發送大量請求。 -
我們使用
watch
命令和nvidia-smi
工具實時監控 GPU 使用情況,這提供了 GPU 利用率的洞察。
輸出顯示,API 端點能夠處理大量並發請求,平均吞吐量約為每秒 2,500 個令牌。GPU 利用率也保持相對較高,表明 NVIDIA NIM 有效利用硬件資源提供高性能推理。
這個壓力測試展示了 NVIDIA NIM 解決方案的可擴展性和性能,使其成為在生產環境中部署大型語言模型的一個引人注目的選擇。
使用 NVIDIA NIM 搭配 OpenAI API 客戶端
使用 NVIDIA NIM 搭配 OpenAI API 客戶端
要將 OpenAI API 客戶端與 NVIDIA NIM 一起使用,請按照以下步驟操作:
- 將基本 URL 更改為您的 NVIDIA NIM 實例的 URL。在此示例中,我們在
localhost:8000
上運行它:
openai.api_base = "http://localhost:8000"
-
您不需要提供 API 金鑰,因為 NVIDIA NIM 處理身份驗證。
-
將模型設置為 NVIDIA NIM 託管的模型,在本例中為
"meta-llama-38b-instruct"
:
model = "meta-llama-38b-instruct"
- 設置其他參數,如要生成的最大令牌數、溫度和是否流式傳輸響應:
response = openai.ChatCompletion.create(
model=model,
messages=[{"role": "user", "content": "Tell me 50 different jokes"}],
max_tokens=1024,
temperature=0.7,
stream=True,
)
- 遍歷流式響應並打印生成的文本:
for chunk in response:
print(chunk.choices[0].text, end="")
這種方法允許您利用 NVIDIA NIM 提供的性能和部署便利,同時使用熟悉的 OpenAI API 客戶端。流式響應確保您可以實時獲取生成的文本,提供響應式的用戶體驗。
結論
結論
在這個視頻中,我們探索了如何使用 NVIDIA NIM 在自己的雲端或本地機器上部署 Lama 3 80 億指令模型。NVIDIA NIM 是 NVIDIA 開發的一組微服務,可加速基礎模型(包括語言模型和其他 AI 模型)的部署。
我們已經介紹了設置 NVIDIA NIM 環境的步驟,包括生成 API 金鑰和運行 Docker 容器來部署 Lama 3 模型。我們還通過同時發送多個請求並監控 GPU 利用率和吞吐量來測試部署模型的性能。
此外,我們還展示了如何使用 OpenAI API 客戶端與 NVIDIA NIM 部署的模型進行交互,演示了與 OpenAI API 標準的兼容性。
總的來說,NVIDIA NIM 提供了一種方便高效的方式來在生產環境中部署大型語言模型。利用 NVIDIA 的硬件和軟件堆棧可以相比其他部署選項實現顯著的性能提升。如果您有興趣探索更多部署選項,請務必訂閱頻道,了解即將推出的有關 VLLM 和其他相關主題的內容。
常問問題
常問問題