一文阐述国内网络环境下使用NIM方法

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
  1. 设置模型缓存目录:这个要设置大一点的目录,df -h 看下,选择一个合适的
bash 复制代码
export LOCAL_NIM_CACHE=/data/nim/
mkdir -p "$LOCAL_NIM_CACHE"
sudo chmod 0777 -R "$LOCAL_NIM_CACHE"
  1. 拉去模型文件
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"
  1. 启动

默认可以使用全部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
  1. 检查&使用
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卡集群)

Reference

Prerequisites

Installation & Configuration

Configuration

NVIDIA NIM for Large Language Models-QuickStart

图灵

相关推荐
GlobalHRTalk1 小时前
埃及名义雇主EOR业务概述与市场发展优势分析
大数据·运维·人工智能
董员外1 小时前
RAG 系统进化论(二):Naive RAG,检索增强生成的最小闭环
前端·人工智能·后端
Zeeland1 小时前
Agent 能完成一个任务,但它能持续追一个三个月的目标吗?
人工智能·github·openai
Sunlly1 小时前
一次消息如何变成多步行动:拆开 OpenClaw 的 Agent Loop
人工智能
黄华SJ520it1 小时前
甄味康商城系统开发|大健康新零售解决方案
人工智能·零售·系统开发
掘金一周1 小时前
看看大家每月的成本有多少 | 沸点周刊 7.30
前端·人工智能·后端
Zzj_tju1 小时前
如何复现一篇 LLM 论文:环境、数据、权重、seed 和日志
人工智能·自然语言处理
ZHOU_WUYI2 小时前
4. light wam 模型loss计算过程
开发语言·人工智能·python
SelectDB2 小时前
AI Agent 可观测性实战教程:用 Apache Doris 5 分钟搭建 Agent 监控系统
人工智能