這是一篇進行中的紀錄:驅動安裝與容器共用顯卡已經成功,vLLM 還沒有跑起來。指令與版本號是我當時環境的狀態,照做前請對照官方最新文件。

假設你有一台跑 Proxmox VE 的主機,裝了一張 NVIDIA RTX 50 系列顯卡。常見的做法是把顯卡「直通」給某一台虛擬機,但這樣整張卡就只能給那台用。我想要的是:顯卡留在主機上,讓好幾個 LXC 容器一起共用,各自跑不同的 AI 服務。

第一步:在主機裝 NVIDIA 驅動

RTX 50 系列是新一代 Blackwell 架構,需要 570 以上的驅動,Debian 內建的 550 不支援,所以改用 NVIDIA 官方的 .run 安裝檔。過程中遇到幾件事:

  • 套件來源:要加上 non-free;重灌 Proxmox 後預設的企業版套件庫沒有訂閱會回 401,要改用免訂閱的套件庫。
  • 編譯環境:要先裝 Proxmox 對應核心版本的 headers、dkms、build-essential,並且把開源的 nouveau 驅動列入黑名單。
  • Secure Boot 要關:不然核心模組載入不了,可以用 mokutil --sb-state 檢查。
  • 要用開源版核心模組:Blackwell 世代只支援 NVIDIA 的開源版核心模組(open kernel modules),安裝程式問要裝哪一種時,選 MIT/GPL 那個。

裝完之後在主機上跑 nvidia-smi,看到顯卡和它的顯示記憶體,第一步完成。

第二步:讓 LXC 容器共用顯卡

做法是在每個容器的設定檔裡,允許存取 NVIDIA 的裝置,並把 /dev/nvidia* 這些裝置節點掛進容器。容器裡只裝「使用者空間」的驅動(加 --no-kernel-module),核心模組由主機提供。

兩個要注意的地方:

  • 版本必須跟主機一模一樣:主機和容器的驅動版本不一致,就會出錯。
  • 權限:裝置節點權限是 666,非特權容器不需要額外的使用者對應。

在容器裡跑 nvidia-smi 也能看到顯卡,代表共用成功。

第三步:vLLM(卡住中)

我開了一個容器,用 Python 虛擬環境裝 vLLM,想跑一個用 NVFP4 格式量化的中型模型。NVFP4 是 Blackwell 原生的 4-bit 格式,當時能直接跑它的推論框架不多,主要是 vLLM 和 NVIDIA 自家的 TensorRT-LLM。目前遇到的問題:

  • 量化參數下錯:一開始指定了錯的量化格式,模型其實是另一種格式。把參數拿掉,讓 vLLM 自己偵測就好。
  • 缺 CUDA 編譯器:vLLM 用到的加速套件需要現場編譯 CUDA 程式,容器裡沒有 nvcc;而 Ubuntu 套件庫裡的 CUDA 版本太舊,跟 PyTorch 要求的版本對不上。

下一步是從 NVIDIA 官方的 CUDA 套件庫,裝對應版本的 CUDA 工具,再重新啟動。跑起來之後我會補上這篇的後半段。

目前學到的

  • 共用比直通彈性大:一張卡可以同時給好幾個服務用,不用為了換服務重開虛擬機。
  • 版本對齊是最大的坑:主機驅動、容器驅動、CUDA 工具、PyTorch,任何一個版本對不上就跑不起來。
  • 新顯卡要等生態系:Blackwell 太新,很多套件的預設版本還沒跟上,常常得自己去官方來源裝。

資料來源

  • 本人 Proxmox VE 實作紀錄(2026-08,未完成)
  • vLLM、Proxmox VE、NVIDIA 官方驅動與 CUDA 套件庫

封面圖由 AI 生成。