上一期介紹了如何在NVIDIAJetson AGX Thor上使用 Docker 部署 vLLM 推理服務,以及使用 Chatbox 作為前端調用 vLLM 運行的模型(上期文章鏈接)。本期我們將嘗試能否在 Jetson AGX Thor 上部署并成功運行高達 1,200 億參數量的 gpt-oss-120b 大模型。
gpt-oss-120b 是由 OpenAI 于今年發布的開放權重 AI 模型,采用了廣受歡迎的混合專家模型(MoE)架構和 SwigGLU 激活函數。其注意力層使用 RoPE 技術,上下文規模為 128k,交替使用完整上下文和長度為 128 個 Token 的滑動窗口。模型的精度為 FP4,可運行在 NVIDIA Blackwell 架構 GPU 上。
本期具體內容包括:
vLLM 鏡像下載及容器構建
模型下載與運行
使用 Chatbox 作為前端調用 gpt-oss-120b
Jetson AGX Thor 模型運行資源占用及性能
一、vLLM 鏡像下載及容器構建
參考上期教程,拉取 vLLM 鏡像并構建容器。
1. 在命令行運行docker pull nvcr.io/nvidia/vllm:25.10-py3下載容器。

2. 下載完成后,運行容器,創建啟動命令。

3. 容器創建成功后,使用docker exec -it vllm /bin/bash命令進入此容器。

二、模型下載與運行
1. 在線下載模型并運行
1.1 登錄 Hugging Face,下載 gpt-oss-120b 模型。
容器內執行huggingface-cli login,輸入 Hugging Face 的token,出現“Login successful”即表示登錄成功。

注:token 獲取方式為注冊并登錄 huggingface.co,點擊右上角用戶頭像 -Access Tokens,然后在新頁面點擊 Create new token,輸入 token name,最后在最下方點擊 Create token,復制并保存即可。




上下滑動查看圖片
1.2 容器內運行vllm serve openai/gpt-oss-120b,從 Hugging Face 上在線下載模型并開始運行。

1.3 等待模型文件下載完成后(需科學上網),出現 API 端口號即可進行調用。

2. 本地模型運行
上述方法會將模型文件下載至容器的默認目錄,再次運行時將直接調用已下載的文件。為避免容器刪除導致文件丟失,建議將模型文件復制到本地映射的目錄(如 /data)中進行保存。
以在當前路徑舉例,命令行執行以下代碼,即可保存到本地指定目錄:
cp-r models--openai--gpt-oss-120b /data

我們將本地模型文件命名為:local/gpt-oss-120b,容器內命令行執行以下命令,即可正常運行本地模型:
vllm serve /data/models--openai--gpt-oss-120b/snapshots/b5c939de8f754692c1647ca79f bf85e8c1e70f8a --served-model-name"local/gpt-oss-120b"

模型運行成功:

三、使用 Chatbox 作為前端調用 gpt-oss-120b
Chatbox AI 是一款 AI 客戶端應用和智能助手,支持眾多先進的 AI 模型和 API,可在 Windows、MacOS、Android、iOS、Linux 和網頁版上使用。在這里,可以選擇 Chatbox 作為前端調用 vLLM 運行的 gpt-oss-120b 模型,用于本地或在線與 AI 進行對話。
1.參考上期教程,局域網內下載安裝 Chatbox Windows 版本,點擊“設置提供方” — “添加”,輸入模型名稱,再次點擊“添加”。



上下滑動查看圖片
2. API 主機可輸入 Jetson AGX Thor 主機 IP 以及 vLLM 服務端口號。
(例:http://192.168.23.107:8000)

3. 選擇 vLLM 運行的模型,點擊“+”。


注:這里同樣可以添加前述步驟已保存或通過其他方式獲取的模型文件。

4. 點擊“新對話”,右下角選擇該模型即可開啟對話。

5. 運行示例
我們在此示例提問一個問題,運行結果如下:
以上視頻已作 3 倍加速處理
四、Jetson AGX Thor 模型運行資源占用及性能
接下來分析運行 gpt-oss-120b 時的資源使用情況。
命令行執行jtop命令,可見加載完模型后,內存占用約為 115G。

當模型在進行推理任務時,部分 CPU 核心持續滿載,同時 GPU 使用率也維持在 95% 左右的高位。

我們使用 AI 生成的腳本,測試了輸入 128 tokens、輸出 128 tokens 且并發數為 1 時的吞吐量。
容器內執行:
# 創建測試腳本 cat > /tmp/test_performance.py <'EOF' import?time import?requests import?json import?statistics # 配置 API_URL =?"http://localhost:8000/v1" MODEL_NAME =?"local/gpt-oss-120b" NUM_REQUESTS =?30 # 生成大約128個token的prompt(英文) prompt_words = [] # 添加一些常見單詞來達到約128個token for?i?in?range(32): ? ? prompt_words.append(f"Sentence?{i+1}: Artificial intelligence is transforming various industries through automation and data analysis.") prompt =?" ".join(prompt_words) print(f"Prompt length (words):?{len(prompt.split())}") results = [] total_tokens =?0 print(f"Starting benchmark with?{NUM_REQUESTS}?requests...") print(f"Model:?{MODEL_NAME}") print(f"Input tokens: ~128, Output tokens: 128") print("-"?*?60) for?i?in?range(NUM_REQUESTS): ? ? payload = { ? ? ? ??"model": MODEL_NAME, ? ? ? ??"prompt": prompt, ? ? ? ??"max_tokens":?128, ? ? ? ??"temperature":?0.1, ? ? ? ??"top_p":?0.9 ? ? } ? ?? ? ??try: ? ? ? ? start_time = time.time() ? ? ? ? response = requests.post( ? ? ? ? ? ??f"{API_URL}/completions", ? ? ? ? ? ? json=payload, ? ? ? ? ? ? timeout=300 ? ? ? ? ) ? ? ? ? end_time = time.time() ? ? ? ?? ? ? ? ??if?response.status_code ==?200: ? ? ? ? ? ? result = response.json() ? ? ? ? ? ? latency = end_time - start_time ? ? ? ? ? ? results.append(latency) ? ? ? ? ? ?? ? ? ? ? ? ??# 估算生成的token數 ? ? ? ? ? ? generated_text = result["choices"][0]["text"] ? ? ? ? ? ? output_tokens =?len(generated_text.split()) ? ? ? ? ? ? total_tokens +=?128?+ output_tokens ?# 輸入 + 輸出 ? ? ? ? ? ?? ? ? ? ? ? ??print(f"Request?{i+1:3d}: latency={latency:.2f}s, output_tokens={output_tokens}") ? ? ? ??else: ? ? ? ? ? ??print(f"Request?{i+1:3d}: Failed with status?{response.status_code}") ? ? ? ? ? ?? ? ??except?Exception?as?e: ? ? ? ??print(f"Request?{i+1:3d}: Error -?{e}") ? ?? ? ??# 稍微延遲一下,避免壓力過大 ? ? time.sleep(0.1) # 計算統計信息 if?results: ? ? total_time =?sum(results) ? ? avg_latency = statistics.mean(results) ? ? throughput_tokens = total_tokens / total_time ? ?? ? ??# 計算百分位數 ? ? sorted_latencies =?sorted(results) ? ? p50 = sorted_latencies[int(len(sorted_latencies) *?0.5)] ? ? p95 = sorted_latencies[int(len(sorted_latencies) *?0.95)] ? ? p99 = sorted_latencies[int(len(sorted_latencies) *?0.99)] ? ?? ? ??print(" "?+?"="*60) ? ??print("PERFORMANCE RESULTS") ? ??print("="*60) ? ??print(f"Model:?{MODEL_NAME}") ? ??print(f"Total requests:?{NUM_REQUESTS}") ? ??print(f"Successful requests:?{len(results)}") ? ??print(f"Total test time:?{total_time:.2f}s") ? ??print(f" Latency Statistics:") ? ??print(f" ?Average latency:?{avg_latency:.2f}s") ? ??print(f" ?P50 latency:?{p50:.2f}s") ? ??print(f" ?P95 latency:?{p95:.2f}s") ? ??print(f" ?P99 latency:?{p99:.2f}s") ? ??print(f" Throughput:") ? ??print(f" ?Total tokens:?{total_tokens}") ? ??print(f" ?Throughput:?{throughput_tokens:.2f}?tokens/second") ? ??print(f" ?Average per request:?{total_tokens/len(results):.1f}?tokens") ? ??print("="*60) else: ? ??print("No successful requests!") EOF
滑動查看完整代碼
命令行執行:
python /tmp/test_performance.py


根據上圖的測試結果,在單用戶、輸入 / 輸出長度為 128 tokens、并發數為 1 的條件下,系統吞吐量達到了50.38 tokens / second。這意味著在 Jetson AGX Thor 上能夠流暢運行 1,200 億參數模型。
-
NVIDIA
+關注
關注
14文章
5592瀏覽量
109715 -
gpu
+關注
關注
28文章
5194瀏覽量
135427 -
AI
+關注
關注
91文章
39755瀏覽量
301354 -
大模型
+關注
關注
2文章
3648瀏覽量
5179
原文標題:邊緣 AI 實力驗證:NVIDIA Jetson AGX Thor 成功駕馭 1200 億參數大模型
文章出處:【微信號:Leadtek,微信公眾號:麗臺科技】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
如何在NVIDIA Jetson AGX Thor上通過Docker高效部署vLLM推理服務
京東和美團已選用NVIDIA Jetson AGX Xavier 平臺
Arm方案 基于Arm架構的邊緣側設備(樹莓派或 NVIDIA Jetson Nano)上部署PyTorch模型
NVIDIA Jetson的相關資料分享
NVIDIA Jetson介紹
怎么做才能通過Jetson Xavier AGX構建android圖像呢?
NVIDIA Jetson AGX Orin提升邊緣AI標桿
NVIDIA 推出 Jetson AGX Orin 工業級模塊助力邊緣 AI
利用 NVIDIA Jetson 實現生成式 AI
NVIDIA Jetson AGX Thor開發者套件概述
基于 NVIDIA Blackwell 的 Jetson Thor 現已發售,加速通用機器人時代的到來
如何在NVIDIA Jetson AGX Thor上部署1200億參數大模型
評論