NVIDIA NIM 與 Hugging Face 的整合

NVIDIA NIM 現在透過提供單一、統一的 Docker 容器,自動化最佳化與服務流程,使得能快速部署超過 100,000 個來自 Hugging Face 的大型語言模型(LLM)。此整合消除了手動管理多樣推論框架的瓶頸,從而在不同模型架構上達到最佳效能。

用於 LLM 部署的統一推論微服務

NVIDIA NIM 提供單一 Docker 容器,能透過整合領先的推論框架(包括 NVIDIA TensorRT-LLM、vLLM 與 SGLang)部署廣泛的 LLM。容器會自動化從模型權重檔案到執行中的推論伺服器的轉換,分為四個明確的適配階段:

  • 模型分析:NIM 會自動辨識模型格式,支援 Hugging Face 模型、TensorRT-LLM 檢查點或預建的 TensorRT-LLM 引擎。
  • 架構與量化偵測:系統會偵測模型的架構(例如 Llama、Mistral)以及其量化格式(例如 FP16、FP8、INT4)。
  • 後端選擇:NIM 會根據先前的分析,選擇最適合的推論後端(TensorRT-LLM、vLLM 或 SGLang)。
  • 效能設定:容器會套用針對所選模型與後端的預先配置設定,啟動推論伺服器,無需手動調校。

支援的模型權重格式

為確保廣泛相容性,NIM 容器支援多種常見的權重格式:

  • Hugging Face Transformers 檢查點:直接從使用 .safetensors 檔案的倉庫部署。
  • GGUF 檢查點:支援來自 Hugging Face 或本機儲存的量化 GGUF 檢查點。
  • TensorRT-LLM 檢查點:模型以 trtllm_ckpt 目錄打包。
  • TensorRT-LLM 引擎:來自 trtllm_engine 目錄的預建引擎,以獲得最高 GPU 效能。

部署工作流程與設定

透過 NIM 部署模型需要具備 CUDA 12.1 以上驅動的 NVIDIA GPU、Docker、NVIDIA NGC 帳號,以及用於驗證模型的 Hugging Face API 令牌。

模型部署範例

使用者可以透過 NIM_MODEL_NAME 環境變數直接從 Hugging Face 部署模型。例如,部署 Codestral-22B 只需執行 NIM Docker 映像,並使用模型 URI hf://mistralai/Codestral-22B-v0.1

對於本機儲存的模型,NIM_MODEL_NAME 指向本機目錄路徑,且該目錄必須掛載至 Docker 容器中。

後端自訂與量化

雖然 NIM 會自動化後端選擇,使用者仍可透過 list-model-profiles 指令查看相容的設定檔,然後設定 NIM_MODEL_PROFILE 環境變數以手動指定後端。

NIM 亦簡化了量化模型(如 AWQ 或 GGUF)的部署。系統會自動偵測量化格式,並使用與全精度模型相同的標準部署指令選擇相應的後端。

進階效能調校

針對企業級部署,NIM 提供環境變數以進行微調:

  • NIM_MAX_MODEL_LEN:調整上下文長度。
  • NIM_TENSOR_PARALLEL_SIZE:啟用大型模型的多 GPU 部署。此功能需要在 Docker 中傳遞 --shm-size 旗標,以促進多 GPU 通訊。

Sources