NVIDIA NIM(NVIDIA Inference Microservice)是一套容器化的微服务套件,旨在通过优化的推理引擎和标准的 API 接口,帮助企业和开发者在任何基础设施上以极低的代码开销快速、高效地部署和运行大语言模型等 AI 应用。
使用步骤
0.0 前提
测试脚本
bash
echo "=== 1. 操作系统版本 ===" && cat /etc/os-release | grep -E "PRETTY_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 版本也不支持
bash
=== 1. 操作系统版本 ===
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
=== 2. 显卡驱动与 CUDA 版本 ===
Wed Jul 29 15:26:38 2026
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.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. |
|===============================+======================+======================|
| 0 NVIDIA A40 Off | 00000000:4F:00.0 Off | 0 |
| 0% 31C P0 71W / 300W | 4580MiB / 46068MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 1 NVIDIA A40 Off | 00000000:52:00.0 Off | 0 |
| 0% 29C P0 71W / 300W | 0MiB / 46068MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 2 NVIDIA A40 Off | 00000000:56:00.0 Off | 0 |
| 0% 30C P0 74W / 300W | 0MiB / 46068MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 3 NVIDIA A40 Off | 00000000:D1:00.0 Off | 0 |
| 0% 31C P0 73W / 300W | 0MiB / 46068MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 4 NVIDIA 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 |
|=============================================================================|
| 0 N/A N/A 4435 C python 4578MiB |
+-----------------------------------------------------------------------------+
=== 3. Docker 版本 ===
Docker version 28.0.4, build b8034c0
=== 4. NVIDIA Container Toolkit 版本 ===
NVIDIA Container Runtime Hook version 1.14.5
commit: 9ea336070134e612145d342e495f2fc616aab063
后面需要先升级才能继续!
自 2025 年 2 月 15 日起,官方直接请求 nvcr.io 下载 NIM 镜像和模型的 API/CLI 路径对中国大陆 IP 进行了拦截与限制。官方常规文档中的注册、直接 docker login 以及默认 nvcr.io 拉取等步骤,在纯国内网络环境下均会触发 unauthorized 或被拒绝下载。国内用户请直接从下文的"国内专用通道"开始操作。文中0.1~0.3 都是没用的,可以直接跳转到1开始
0.1Register:
API Key 获取https://org.ngc.nvidia.com/setup/api-keys

0.2 Login

0.3 docker 拉取&服务启动
bash
export NIM_LLM_IMAGE=nvcr.io/nim/meta/llama-3.1-8b-instruct:2.0.9
export LOCAL_NIM_CACHE=/data/nim-cache
docker run --gpus=all \
-e NGC_API_KEY=$NGC_API_KEY \
-v "$LOCAL_NIM_CACHE:/opt/nim/.cache" \
-p 8000:8000 \
${NIM_LLM_IMAGE}```
如果直接按照官方,然后就会出现下面的问题:
> CND 必需 自 2025 年 2 月 15 日起,所有来自中国 IP 地址用于下载 NIM 镜像和模型的 API/CLI 请求将被拒绝
> 对于中国用户,请使用以下链接跳转到我们中国 NIM 合作伙伴提供的地址下载 NIM 镜像和模型:
> https://catalog.ngc.nvidia.com/china-nim-distributors
1. 国内环境下使用流程
所以国内情况下,上面三个步骤都是踩的坑
点击网址会跳转到这么个地方,三个都可以,选一个喜欢的

选一个你可以能使用的,喜欢的模型


下载镜像:
bash
sudo tgc --user 'tgc$cnd***' --token 'CQm****3ZQ' --type c --container tgcr.turing-agi.com/cnd/nim/qwen/qwen-2.5-7b-instruct:latest
- 设置模型缓存目录:这个要设置大一点的目录,df -h 看下,选择一个合适的
bash
export LOCAL_NIM_CACHE=/data/nim/
mkdir -p "$LOCAL_NIM_CACHE"
sudo chmod 0777 -R "$LOCAL_NIM_CACHE"
- 拉去模型文件
bash
sudo tgc --user 'tgc$cnd****' --token 'CQ****3ZQ' --type m --container tgcr.turing-agi.com/cnd/nim/qwen/qwen-2.5-7b-instruct:latest --save_dir "$LOCAL_NIM_CACHE"
- 启动
默认可以使用全部GPU
bash
sudo docker run --name nim-qwen25-7b -itd \
--gpus all \
--ipc=host \
--ulimit memlock=-1 \
--ulimit stack=67108864 \
-v "$LOCAL_NIM_CACHE":/opt/nim/.cache \
-p 18000:8000 \
tgcr.turing-agi.com/cnd/nim/qwen/qwen-2.5-7b-instruct:latest
固定使用特定GPU
bash
# 使用一张
sudo docker run --name nim-qwen25-7b -itd \
--gpus '"device=0"' \
--ipc=host \
--ulimit memlock=-1 \
--ulimit stack=67108864 \
-v /data/nim-cache:/opt/nim/.cache \
-p 18000:8000 \
tgcr.turing-agi.com/cnd/nim/qwen/qwen-2.5-7b-instruct:latest
# 使用多张
sudo docker run --name nim-qwen25-7b -itd \
--gpus '"device=1,2"' \
--ipc=host \
--ulimit memlock=-1 \
--ulimit stack=67108864 \
-v /data/nim-cache:/opt/nim/.cache \
-p 18000:8000 \
tgcr.turing-agi.com/cnd/nim/qwen/qwen-2.5-7b-instruct:latest
- 检查&使用
bash
# 检查健康
curl http://localhost:8000/v1/health/ready
# 使用大模型
curl -X 'POST' \
'http://localhost:8000/v1/chat/completions' \
-H 'accept: application/json' \
-H 'Content-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字节/参数 - INT8 (8位量化):
1字节/参数 - INT4 / AWQ / GPTQ / EXL2 (4位量化):
0.5字节/参数
💡 快速口算示例 :
一个 32B (320亿参数)的模型,如果用 FP16 跑:
32 × 2 1 = 64 GB \frac{32 \times 2}{1} = 64 \text{ GB} 132×2=64 GB 基础权重。
第二步:乘以框架与运行时安全系数(Runtime Overhead)
大模型跑起来时,GPU 驱动、CUDA 上下文以及推理框架(如 vLLM、Triton、NIM)会占用额外的显存。因此,需要把基础权重乘以一个安全系数(通常取 1.25):
实际运行底座显存 (GB) = 权重显存 × 1.25 \text{实际运行底座显存 (GB)} = \text{权重显存} \times 1.25 实际运行底座显存 (GB)=权重显存×1.25
第三步:加上上下文与并发显存(KV Cache)
KV 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 GB | 18 - 20 GB | 24 GB (如 RTX 3090/4090) |
| 14B / 13B | ~28 GB | 35 - 38 GB | 48 GB (如单张 A40 / A100) |
| 32B / 34B | ~64 GB | 80 - 85 GB | 96 GB+ (如双卡 A40 / A100) |
| 70B / 72B | ~140 GB | 175 - 185 GB | 256 GB+ (如 4卡 或 8卡集群) |