12GB VRAM 顯卡運行 GPT-OSS-20B:vLLM 與統一記憶體實戰指南

23 分鐘閱讀

琳 avatar

I have a wsl machine with nvidia gpu. Guide me run gpt-oss-20b with vllm

Felo Search avatar
Felo Search

好的,這是一份關於如何在具備 NVIDIA GPU 的 WSL 環境中,使用 vLLM 執行 gpt-oss-20b 模型的詳細研究報告。

如何在具備 NVIDIA GPU 的 WSL 環境中,使用 vLLM 執行 gpt-oss-20b 模型

在 Windows Subsystem for Linux (WSL) 環境中,透過 vLLM 高效能推理引擎來執行 OpenAI 的 gpt-oss-20b 開源模型是完全可行的。此模型因其約 16GB VRAM 的需求,相當適合在單張高階消費級或工作站級的 NVIDIA GPU 上部署123。整個流程的核心在於正確設定 WSL2 環境,包含安裝適用於 WSL 的 NVIDIA 驅動程式與 CUDA 工具鏈,接著安裝特定版本的 vLLM 及其相依套件,最終啟動一個與 OpenAI API 相容的推理伺服器45。vLLM 專為 gpt-oss 系列模型進行了深度優化,支援其獨特的 MXFP4 量化與高效注意力機制,確保了在本地端也能獲得優異的推理性能6。本報告將引導您完成從環境設定到模型部署的每一個步驟,並涵蓋常見的疑難排解方案。

模型與硬體需求

gpt-oss-20b 是 OpenAI 開源的強大模型之一,其設計旨在兼顧性能與可及性。

模型特性

gpt-oss-20b 擁有 209 億個參數,並透過創新的 MXFP4 格式對其 Mixture-of-Experts (MoE) 權重進行量化26。MXFP4 是一種 4-bit 浮點數格式,此技術大幅壓縮了模型的尺寸,使其 VRAM 需求降低至約 14-16GB,從而能夠在單張 GPU 上順利執行176。模型架構還融合了全注意力 (full attention) 與滑動窗口注意力 (sliding window attention),並由 vLLM 的混合 KV 快取分配器進行高效管理,以達到最佳的記憶體使用效率6

硬體建議

要執行 gpt-oss-20b,建議配備至少擁有 16GB VRAM 的 NVIDIA GPU14。這包括了高階消費級顯示卡(如 GeForce RTX 4090)或工作站級顯示卡(如 NVIDIA RTX A6000)89

為了更清晰地了解其定位,下表比較了 gpt-oss-20b 與其更大規模的版本 gpt-oss-120b

特性openai/gpt-oss-20bopenai/gpt-oss-120b
參數數量20.9B2~120B1
所需 VRAM~16GB124≥60GB14
MoE 專家數量3261286
適用硬體單張消費級/工作站 GPU (例如 RTX 4090, A6000)89伺服器級 GPU (例如 H100, B200) 或多 GPU 設定1104

WSL 環境設定

一個正確設定的 WSL 環境是成功執行 vLLM 的基礎。

先決條件

請確保您的系統已安裝並啟用 WSL 25

NVIDIA 驅動程式與 CUDA

WSL 需要專用的 NVIDIA 驅動程式才能存取 GPU。

  1. 檢查 NVCC:在您的 WSL 終端機中,執行以下指令來檢查 NVIDIA CUDA Compiler (NVCC) 是否已安裝:

    nvcc --version
    

    如果出現 command not found 的錯誤訊息,代表您需要安裝或設定 CUDA 工具鏈5

  2. 安裝驅動程式:前往 NVIDIA 官方網站下載適用於 WSL-Ubuntu 的驅動程式5。請依照頁面上的指示完成安裝。

  3. 設定環境變數:安裝完成後,編輯您的 .bashrc 檔案(例如 nano ~/.bashrc),並在檔案末尾加入以下路徑。請注意,您的 CUDA 版本可能不同,請根據 /usr/local 目錄下的實際情況修改路徑5

    export PATH="/usr/local/cuda-12.6/bin:$PATH"
    export LD_LIBRARY_PATH="/usr/local/cuda-12.6/lib64:$LD_LIBRARY_PATH"
    
  4. 重新整理設定:儲存檔案後,執行 source ~/.bashrc 來讓設定生效。接著,再次執行 nvcc --versionnvidia-smi.exe 來確認驅動程式與 CUDA 已被正確偵測5

Python 虛擬環境

為了避免套件版本衝突,強烈建議在虛擬環境中進行安裝11。vLLM 官方文件推薦使用 uv 來管理環境4

  1. 建立虛擬環境

    uv venv
    
  2. 啟動虛擬環境

    source .venv/bin/activate
    

安裝 vLLM 與相依套件

執行 gpt-oss 模型需要安裝特定版本的 vLLM 及多個前沿的相依套件11

安裝指令

請使用以下指令進行安裝。這個指令會從指定的索引 URL 安裝 vLLM 的預發行版、PyTorch nightly build 以及其他必要的函式庫12411

uv pip install --pre vllm==0.10.1+gptoss \
    --extra-index-url https://wheels.vllm.ai/gpt-oss/ \
    --extra-index-url https://download.pytorch.org/whl/nightly/cu128 \
    --index-strategy unsafe-best-match

此指令確保了所有元件之間的相容性,是成功部署的關鍵步驟1311

啟動 vLLM 推理伺服器

安裝完成後,即可啟動 vLLM 伺服器來載入 gpt-oss-20b 模型。

基本啟動

執行以下指令,vLLM 將會自動從 Hugging Face 下載模型,並在 localhost:8000 啟動一個與 OpenAI API 相容的伺服器14154

vllm serve openai/gpt-oss-20b

進階啟動選項

為了提升性能與穩定性,可以加入額外的參數。--async-scheduling 可以啟用非同步排程以提高 GPU 利用率,而 --gpu-memory-utilization 則可以控制 VRAM 的使用比例119

vllm serve openai/gpt-oss-20b \
    --host 0.0.0.0 \
    --port 8000 \
    --gpu-memory-utilization 0.9 \
    --async-scheduling

Docker 替代方案

如果您偏好使用容器化部署,vLLM 也提供了預先建構好的 Docker image1211

docker run --gpus all \
        -p 8000:8000 \
        --ipc=host \
        vllm/vllm-openai:gptoss \
        --model openai/gpt-oss-20b

與模型互動

伺服器啟動並顯示 INFO: Application startup complete 訊息後,您便可以使用 OpenAI 的 Python SDK 與模型進行互動11

Python 程式碼範例

以下 Python 程式碼片段展示了如何向本地端執行的模型發送請求4。請注意,base_url 必須指向您的 vLLM 伺服器位址,而 api_key 在此情境下可以是任意非空字串4

from openai import OpenAI

# 初始化用戶端,指向本地 vLLM 伺服器
client = OpenAI(
    base_url="http://localhost:8000/v1",
    api_key="EMPTY" 
)

# 建立聊天完成請求
result = client.chat.completions.create(
    model="openai/gpt-oss-20b",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Explain what vLLM is in simple terms."}
    ]
)

# 列印模型的回答
print(result.choices[^0].message.content)

常見問題與疑難排解

在設定過程中,您可能會遇到一些特定的問題。

琳 avatar

Is there any chance to run the gpt-oss-20b model on 8G/12G VRAM NV card? Like using quantization or adjusting latency.

Felo Search avatar
Felo Search

在 8GB 或 12GB VRAM 的 NVIDIA 顯卡上運行 GPT-OSS-20B 模型是具有挑戰性的,但並非完全不可能。以下是一些可能的解決方案與調整策略:

以 8GB 或 12GB VRAM 運行 GPT-OSS-20B 模型

1. 使用量化技術

GPT-OSS-20B 模型原生支援 MXFP4 量化,這種技術可以顯著降低模型的記憶體需求。根據資料,MXFP4 量化可以將記憶體需求減少 50% 至 75%17。然而,即使如此,模型仍需要約 16GB 的 VRAM 才能在標準配置下運行1819

可能的解決方案(量化)


2. 使用分片或分層加載技術

Mixture-of-Experts (MoE) 架構允許 GPT-OSS-20B 僅激活部分參數(每次推理約 3.6B 參數),這為分片或分層加載提供了可能性2122

可能的解決方案(分片/分層)


3. 使用優化的推理框架

一些專為低記憶體環境設計的推理框架可以幫助在 8GB 或 12GB VRAM 的顯卡上運行 GPT-OSS-20B。

推薦框架


4. 調整推理參數

GPT-OSS-20B 支援調整推理參數(如推理深度和上下文長度),這可以降低記憶體需求。

可能的調整


5. 使用混合記憶體技術

如果顯卡的 VRAM 不足,可以考慮使用混合記憶體技術,將部分模型權重存儲在系統 RAM 中。

可能的解決方案(混合記憶體)


6. 測試小型模型或微調版本

如果上述方法仍無法滿足需求,可以考慮使用更小的模型或微調版本。

可能的選擇


結論

在 8GB 或 12GB VRAM 的 NVIDIA 顯卡上運行 GPT-OSS-20B 是困難的,但通過量化、分片推理、優化框架和混合記憶體技術等方法,可以嘗試實現此目標。然而,這些方法可能會影響模型的性能或準確性,因此需要根據具體需求進行權衡。

琳 avatar

Guide me run the gpt-oss-20b model on 12G VRAM card with vllm, and Unified Memory tech.

Felo Search avatar
Felo Search

在具有 12GB VRAM 的 NVIDIA 顯卡上運行 gpt-oss-20b 模型,即使該模型通常需要約 16GB 的 VRAM,透過結合 vLLM 的記憶體管理功能和 NVIDIA 的統一記憶體 (Unified Memory) 技術,仍存在實現的可能性,但會面臨挑戰。

結合 vLLM 的記憶體管理功能和 NVIDIA 的統一記憶體運行 gpt-oss-20b 模型

模型與硬體要求

gpt-oss-20b 是一個擁有 209 億參數的開源模型,其 MoE (Mixture-of-Experts) 層使用原生 MXFP4 量化技術,將所需的 VRAM 降低至約 16GB 才能高效運行29303132。這表示對於 12GB VRAM 的顯卡而言,直接將整個模型載入 GPU 記憶體會超出容量。

使用 vLLM 執行 GPT-OSS-20B 的步驟

以下是在具備 NVIDIA GPU 的 WSL 環境中,使用 vLLM 執行 GPT-OSS-20B 模型的具體要求和步驟:

1. 先決條件

2. 安裝 vLLM

vLLM 建議使用 uv 管理您的 Python 環境。若要建立新的虛擬環境並安裝 vLLM,請執行以下命令。這些命令將安裝 vLLM 的預發行版、PyTorch nightly build 以及其他必要的程式庫33293032

uv venv
source .venv/bin/activate
uv pip install --pre vllm==0.10.1+gptoss \
    --extra-index-url https://wheels.vllm.ai/gpt-oss/ \
    --extra-index-url https://download.pytorch.org/whl/nightly/cu128 \
    --index-strategy unsafe-best-match

3. 啟動伺服器並載入模型

vLLM 提供了 serve 命令,該命令將自動從 Hugging Face 下載模型並在 localhost:8000 上啟動一個與 OpenAI 相容的伺服器293432

針對 12GB VRAM 的顯卡,為了盡可能利用有限的記憶體並嘗試啟用統一記憶體等機制,您需要特別留意 gpu-memory-utilization 參數。此參數指定了 vLLM 應使用的 GPU 記憶體比例。當值大於 1 時,vLLM 會嘗試使用作業系統管理統一記憶體來擴展到主機記憶體33

vllm serve openai/gpt-oss-20b \
    --host 0.0.0.0 \
    --port 8000 \
    --gpu-memory-utilization 0.95 \ # 盡量提高 GPU 記憶體利用率
    --enforce-eager \             # 確保某些操作不會延遲,可能有利於調試
    --max-model-len 4096 \        # 根據 VRAM 限制調整最大上下文長度
    --max-num-batched-tokens 256  # 減少批次處理的總 token 數,以減少記憶體壓力

請注意,儘管設置 gpu-memory-utilization 大於 1 可以讓 vLLM 嘗試利用系統記憶體作為額外的 KV 快取或權重卸載空間,但這並非適用於所有模型或所有 GPU 架構。對於 gpt-oss-20b,vLLM 團隊提到可以利用 CPU 記憶體進行 KV 快取交換或權重卸載35

統一記憶體 (Unified Memory) 與效能調整

NVIDIA 的統一記憶體技術允許 CPU 和 GPU 共享相同的可定址記憶體空間,這對於 VRAM 有限的系統非常有幫助,因為它可以將部分資料或模型權重透明地移出 VRAM 到系統 RAM 中35

挑戰與注意事項

總而言之,在 12GB VRAM 的顯卡上運行 gpt-oss-20b 需要仔細的配置和效能監控。如果遇到困難,可能需要考慮使用 VRAM 更大的 GPU,或選擇體積更小的模型。

  1. How to run gpt-oss with vLLM | OpenAI Cookbook ↩2 ↩3 ↩4 ↩5 ↩6 ↩7

  2. Things to Know About OpenAI GPT-OSS: Run it Locally on ... ↩2 ↩3 ↩4

  3. Things to Know About OpenAI GPT-OSS: Run it Locally on ...

  4. How to run gpt-oss with vLLM ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11

  5. Making VLLM work on WSL2 - DEV Community ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9

  6. vLLM Now Supports gpt-oss | vLLM Blog ↩2 ↩3 ↩4 ↩5 ↩6 ↩7

  7. You can now run OpenAI's gpt-oss model on your local device ...

  8. GPT‑OSS Explained: OpenAI's Powerful Open-Weight ... ↩2

  9. [Bug]:Deploying GPT-OSS-20B: EngineDeadError: EngineCore encountered an issue. See stack trace (above) for the root cause. · Issue #22414 · vllm-project/vllm · GitHub ↩2 ↩3 ↩4 ↩5

  10. Run OpenAI's gpt-oss model with vLLM | Modal Docs

  11. GPT OSS - vLLM Recipes ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8

  12. vLLM Now Supports gpt-oss ↩2

  13. LMCache supports gpt-oss (20B/120B) on Day 1

  14. openai/gpt-oss-20b - Hugging Face

  15. openai/gpt-oss-20b - Hugging Face

  16. openai/gpt-oss-20b · Latest vLLM docker image doesn't yet ...

  17. OpenAI's Bold Return to Open Source: GPT-OSS Changes ...

  18. Everything You Need to Know About GPT-OSS in 2025 - remio

  19. GPT-OSS-120B & 20B: OpenAI's Powerful New Open-Source ...

  20. Unsloth - 微调Mistral 模型,速度提升220% - 征求建议 - Reddit

  21. Introducing gpt-oss - OpenAI

  22. OpenAI: gpt-oss-20b (free) - Uptime and Availability ↩2

  23. How to run gpt-oss with vLLM - OpenAI Cookbook

  24. vLLM Now Supports gpt-oss

  25. Things to Know About OpenAI GPT-OSS: Run it Locally on ...

  26. llama.cpp 才是王道: r/LocalLLaMA - Reddit

  27. gpt-oss-20b Model by OpenAI - NVIDIA NIM APIs

  28. You can now run OpenAI's gpt-oss model on your local device ...

  29. OpenAI Just Released Open Models (this is a Very Big Deal) ↩2 ↩3

  30. Things to Know About OpenAI GPT-OSS: Run it Locally on ... ↩2 ↩3

  31. Run OpenAI's new GPT-OSS (open-source) model on Northflank

  32. openai/gpt-oss-20b - Hugging Face ↩2 ↩3

  33. GPT OSS - vLLM Recipes ↩2 ↩3 ↩4

  34. How to run gpt-oss with vLLM - OpenAI Cookbook

  35. [Feature]: Support for NVIDIA Unified memory #10267 - GitHub ↩2