NIM
NVIDIA NIM 是一組易於使用的微服務,旨在加速企業的生成式 AI 部署。 它支持多種 AI 模型,包括 NVIDIA AI 基礎模型和自定義模型,提供無縫、可擴展的 AI 推論功能,無論是在本地環境還是在雲端環境。
NVIDIA NIM 也提供了預建的容器,方便使用者快速部署大型語言模型(LLMs),例如聊天機器人、內容分析器等應用。 每個 NIM 都包含一個容器和一個模型,使用 CUDA 加速的執行環境,對 NVIDIA GPU 提供特殊優化。
特別提到的是,NVIDIA NIM 支持 Llama 3.1 8B-Instruct 模型, 這是一種優化的語言理解、推理和文本生成用途的模型,超越了許多開源聊天機器人的業界基準。
需求
參照: prerequisites
NVIDIA GPU
CPU: x86_64
OS: any Linux distributions
NVIDIA GPU 相容的 CUDA 驅動程式 (不需要 CUDA toolkit 因為 container 已經包含): cuda-installation-guide-linux
NVIDIA Container Toolkit: installing-with-apt
登入
使用 Docker 拉取並執行 meta/llama-3_1-8b-instruct(這將下載完整模型並在本機環境中執行)。
<Your Key>
拉取並執行
使用下面的命令調出並運行英偉達 NIM。這將為您的基礎架構下載最佳化模型。
前台執行 llama3-8b-instruct
export NGC_API_KEY=<PASTE_API_KEY_HERE> export LOCAL_NIM_CACHE=~/.cache/nim mkdir -p "$LOCAL_NIM_CACHE" docker run -it --rm \ --gpus all \ --shm-size=16GB \ -e NGC_API_KEY \ -v "$LOCAL_NIM_CACHE:/opt/nim/.cache" \ -u $(id -u) \ -p 8000:8000 \ nvcr.io/nim/meta/llama3-8b-instruct:1.0.0背景執行 llama-3.1-8b-instruct
docker run -d --rm \ --gpus all \ --shm-size=16GB \ -e NGC_API_KEY \ -v "$LOCAL_NIM_CACHE:/opt/nim/.cache" \ -u $(id -u) \ -p 8000:8000 \ nvcr.io/nim/meta/llama-3.1-8b-instruct:latest \ python3 -m vllm_nvext.entrypoints.openai.api_server \ --max-model-len 42448--max-model-len 42448
是為了避免The model's max seq len (131072) is larger than the maximum number of tokens that can be stored in KV cache
錯誤。
Windows PowerShell
# 設定環境變數 $env:NGC_API_KEY = "<PASTE_API_KEY_HERE>" $env:LOCAL_NIM_CACHE = "$env:USERPROFILE\.cache\nim" # 建立目錄 New-Item -ItemType Directory -Force -Path $env:LOCAL_NIM_CACHE # 執行 Docker 容器 docker run -it --rm ` --gpus all ` --shm-size=16GB ` -e NGC_API_KEY ` -v "$env:LOCAL_NIM_CACHE:/opt/nim/.cache" ` -u "$((Get-WmiObject -Class Win32_UserAccount | Where-Object {$_.Name -eq $env:USERNAME}).SID)" ` -p 8000:8000 ` nvcr.io/nim/meta/llama3-8b-instruct:1.0.0
呼叫
現在,您可以使用以下 curl 命令進行本機 API 呼叫
Linux Bash
Windows PowerShell
GPU 記憶體不足
如果出現以下錯誤,表示 GPU 記憶體不足,無法執行模型。
發現但目前不可運行的兼容配置文件數量:1 個(由於 GPU 記憶體不足)
Detected additional 1 compatible profile(s) that are currently not runnable due to low free GPU memory.
沒有權限訪問 Docker daemon
我在 Ubuntu 全新安裝 Docker 時,會遇到以下錯誤,表示沒有權限訪問 Docker daemon。
解決辦法是添加權限給目前使用者,重新登入後再次執行 docker run 命令。
could not select device driver
如果出現以下錯誤,表示 Docker 找不到 GPU 驅動程式。需要安裝 NVIDIA Container Toolkit。
首先你要先裝好驅動程式,如果沒有可以參考這篇筆記 → Nvidia-Driver
然後安裝 NVIDIA Container Toolkit,參考官方文件 installing-with-apt
Configure the production repository
Update the packages list from the repository
Install the NVIDIA Container Toolkit packages
Restart the Docker daemon
Verify the installation
錯誤訊息
3090 Ti 預設安裝的驅動是 535 版本(CUDA 12.2),CUDA 12.5 需要 555 版本以上,所以需要更新驅動程式。
更新驅動版本後重新開機應該就可以正常執行 Docker 容器了。
驅動程式版本對應 CUDA 版本 CUDA Application Compatibility Support Matrix
Nvidia CUDA Docker Image nvidia/cuda
結論 舊顯卡 (3090 Ti) 也可以安裝最新版驅動 (555),進而支援最新版本 CUDA (12.5) 和 Docker 容器。
未知的 RoPE (Rotary Position Embedding) scaling 類型 "extended"
目前 Meta Llama 3.1 Know Issues & FAQ #6689 ,會出現以下錯誤,說是會盡快修復。