一文阐述国内网络环境下使用NIM方法
NVIDIA NIMNVIDIA Inference Microservice是一套容器化的微服务套件旨在通过优化的推理引擎和标准的 API 接口帮助企业和开发者在任何基础设施上以极低的代码开销快速、高效地部署和运行大语言模型等 AI 应用。使用步骤0.0 前提测试脚本echo 1. 操作系统版本 cat/etc/os-release|grep-EPRETTY_NAME\echo-e\n 2. 显卡驱动与 CUDA 版本 nvidia-smi\echo-e\n 3. Docker 版本 docker--version\echo-e\n 4. NVIDIA Container Toolkit 版本 nvidia-container-toolkit--version返回, 我的显卡驱动(Driver Version) 不支持CUDA 版本也不支持1. 操作系统版本PRETTY_NAMEDebian GNU/Linux 12 (bookworm)2. 显卡驱动与 CUDA 版本Wed Jul2915:26:382026-----------------------------------------------------------------------------|NVIDIA-SMI525.147.05 Driver Version:525.147.05 CUDA Version:12.0||---------------------------------------------------------------------------|GPU Name Persistence-M|Bus-Id Disp.A|Volatile Uncorr. ECC||Fan Temp Perf Pwr:Usage/Cap|Memory-Usage|GPU-Util Compute M.||||MIG M.||||0NVIDIA A40 Off|00000000:4F:00.0 Off|0||0% 31C P0 71W / 300W|4580MiB / 46068MiB|0% Default||||N/A|---------------------------------------------------------------------------|1NVIDIA A40 Off|00000000:52:00.0 Off|0||0% 29C P0 71W / 300W|0MiB / 46068MiB|0% Default||||N/A|---------------------------------------------------------------------------|2NVIDIA A40 Off|00000000:56:00.0 Off|0||0% 30C P0 74W / 300W|0MiB / 46068MiB|0% Default||||N/A|---------------------------------------------------------------------------|3NVIDIA A40 Off|00000000:D1:00.0 Off|0||0% 31C P0 73W / 300W|0MiB / 46068MiB|0% Default||||N/A|---------------------------------------------------------------------------|4NVIDIA A40 Off|00000000:D5:00.0 Off|0||0% 30C P0 70W / 300W|0MiB / 46068MiB|3% Default||||N/A|--------------------------------------------------------------------------- -----------------------------------------------------------------------------|Processes:||GPU GI CI PID Type Process name GPU Memory||ID ID Usage||||0N/A N/A4435C python 4578MiB|-----------------------------------------------------------------------------3. Docker 版本Docker version28.0.4, build b8034c04. NVIDIA Container Toolkit 版本NVIDIA Container Runtime Hook version1.14.5 commit: 9ea336070134e612145d342e495f2fc616aab063后面需要先升级才能继续自 2025 年 2 月 15 日起官方直接请求 nvcr.io 下载 NIM 镜像和模型的 API/CLI 路径对中国大陆 IP 进行了拦截与限制。官方常规文档中的注册、直接 docker login 以及默认 nvcr.io 拉取等步骤在纯国内网络环境下均会触发 unauthorized 或被拒绝下载。国内用户请直接从下文的“国内专用通道”开始操作。文中0.10.3 都是没用的可以直接跳转到1开始0.1Register:[API Key 获取]https://org.ngc.nvidia.com/setup/api-keys0.2 Login0.3 docker 拉取服务启动exportNIM_LLM_IMAGEnvcr.io/nim/meta/llama-3.1-8b-instruct:2.0.9exportLOCAL_NIM_CACHE/data/nim-cachedockerrun--gpusall\-eNGC_API_KEY$NGC_API_KEY\-v$LOCAL_NIM_CACHE:/opt/nim/.cache\-p8000:8000\${NIM_LLM_IMAGE} 如果直接按照官方然后就会出现下面的问题CND 必需 自2025年2月15日起所有来自中国 IP 地址用于下载 NIM 镜像和模型的 API/CLI 请求将被拒绝对于中国用户请使用以下链接跳转到我们中国 NIM 合作伙伴提供的地址下载 NIM 镜像和模型https://catalog.ngc.nvidia.com/china-nim-distributors1. 国内环境下使用流程所以国内情况下上面三个步骤都是踩的坑点击网址会跳转到这么个地方三个都可以选一个喜欢的选一个你可以能使用的喜欢的模型下载镜像sudotgc--usertgc$cnd***--tokenCQm****3ZQ--typec--containertgcr.turing-agi.com/cnd/nim/qwen/qwen-2.5-7b-instruct:latest设置模型缓存目录这个要设置大一点的目录df -h 看下选择一个合适的exportLOCAL_NIM_CACHE/data/nim/mkdir-p$LOCAL_NIM_CACHEsudochmod0777-R$LOCAL_NIM_CACHE拉去模型文件sudotgc--usertgc$cnd****--tokenCQ****3ZQ--typem--containertgcr.turing-agi.com/cnd/nim/qwen/qwen-2.5-7b-instruct:latest--save_dir$LOCAL_NIM_CACHE启动默认可以使用全部GPUsudodockerrun--namenim-qwen25-7b-itd\--gpusall\--ipchost\--ulimitmemlock-1\--ulimitstack67108864\-v$LOCAL_NIM_CACHE:/opt/nim/.cache\-p18000:8000\tgcr.turing-agi.com/cnd/nim/qwen/qwen-2.5-7b-instruct:latest固定使用特定GPU# 使用一张sudodockerrun--namenim-qwen25-7b-itd\--gpusdevice0\--ipchost\--ulimitmemlock-1\--ulimitstack67108864\-v/data/nim-cache:/opt/nim/.cache\-p18000:8000\tgcr.turing-agi.com/cnd/nim/qwen/qwen-2.5-7b-instruct:latest# 使用多张sudodockerrun--namenim-qwen25-7b-itd\--gpusdevice1,2\--ipchost\--ulimitmemlock-1\--ulimitstack67108864\-v/data/nim-cache:/opt/nim/.cache\-p18000:8000\tgcr.turing-agi.com/cnd/nim/qwen/qwen-2.5-7b-instruct:latest检查使用# 检查健康curlhttp://localhost:8000/v1/health/ready# 使用大模型curl-XPOST\http://localhost:8000/v1/chat/completions\-Haccept: application/json\-HContent-Type: application/json\-d{ model: qwen/qwen-2.5-7b-instruct, messages: [ { role: system, content: You are a helpful assistant. }, { role: user, content: 你好请介绍一下你自己。 } ], max_tokens: 512, temperature: 0.7 }附录 模型占用显存换算公式第一步计算模型基础权重显存Core Weight Memory这是模型躺在显存里“静止”时占用的空间公式为权重显存 (GB) 模型参数量 (B) × 每个参数字节数 10 9 \text{权重显存 (GB)} \frac{\text{模型参数量 (B)} \times \text{每个参数字节数}}{10^9}权重显存(GB)109模型参数量(B)×每个参数字节数常见精度的字节数速查FP32 / 全精度4字节/参数FP16 / BF16半精度标准2字节/参数INT88位量化1字节/参数INT4 / AWQ / GPTQ / EXL24位量化0.5字节/参数 快速口算示例一个32B320亿参数的模型如果用FP16跑32 × 2 1 64 GB \frac{32 \times 2}{1} 64 \text{ GB}132×264GB基础权重。第二步乘以框架与运行时安全系数Runtime Overhead大模型跑起来时GPU 驱动、CUDA 上下文以及推理框架如 vLLM、Triton、NIM会占用额外的显存。因此需要把基础权重乘以一个安全系数通常取 1.25实际运行底座显存 (GB) 权重显存 × 1.25 \text{实际运行底座显存 (GB)} \text{权重显存} \times 1.25实际运行底座显存(GB)权重显存×1.25第三步加上上下文与并发显存KV CacheKV Cache 用于存储对话的历史上下文和长文本。它不是固定的而是随着并发请求数Batch Size和上下文长度Context Length动态变化的。简易估算经验值短文本/单用户轻量测试预留2 ~ 4 GB即可。长文本如 32k/ 高并发生产环境建议额外预留8 ~ 16 GB甚至更多。 终极通用估算公式将上述三步合二为一得出最终的总显存需求公式所需总显存 (GB) ( 参数量 (B) × 每个参数字节数 × 1.25 ) KV Cache 预留空间 \text{所需总显存 (GB)} \left( \text{参数量 (B)} \times \text{每个参数字节数} \times 1.25 \right) \text{KV Cache 预留空间}所需总显存(GB)(参数量(B)×每个参数字节数×1.25)KV Cache预留空间 常见规格对照参考表以 FP16/BF16 为例模型参数量仅加载权重 (FP16)建议最低显存跑起来推荐安全/生产显存带并发和长文本7B / 8B~14 GB18 - 20 GB24 GB(如 RTX 3090/4090)14B / 13B~28 GB35 - 38 GB48 GB(如单张 A40 / A100)32B / 34B~64 GB80 - 85 GB96 GB(如双卡 A40 / A100)70B / 72B~140 GB175 - 185 GB256 GB(如 4卡 或 8卡集群)ReferencePrerequisitesInstallation ConfigurationConfigurationNVIDIA NIM for Large Language Models-QuickStart图灵