基础使用方法
硬件与环境要求
| 支持的 NVIDIA 硬件 | CUDA 版本 | 支持的操作系统 | CUDA 计算能力 | CUDA 驱动版本 | 平台 |
|---|---|---|---|---|---|
| Blackwell 架构 Hopper 架构 Ampere 架构 Turing 架构 | 13.0 及更高版本 | Ubuntu 24.04 Ubuntu 22.04 Ubuntu 20.04 及其他兼容 manylinux2_28 的系统 | SM 7.5 及更高 | r580 或更高 | linux x86_64 |
| Blackwell 架构 Hopper 架构 Ampere 架构 Turing 架构 Thor 架构 | 13.0 及更高版本 | Ubuntu 24.04 Ubuntu 22.04 Ubuntu 20.04 及其他兼容 manylinux2_28 的系统 | SM 7.5 及更高 | r580 或更高 | linux aarch64 SBSA |
主要增强功能
- 无开源许可证问题
- 无严重和高危 CVE 问题
- Profile 选择与管理系统
- 模型构件自动下载
- 构件与 profile 校验
- 支持 GPU Fallback Profile 机制,可在任意 GPU 上尝试启动 (不保证部署成功)。
- 2026 年 3 月及之后发布的 中国NIM 均支持 Fallback Profile。
- OTEL(OpenTelemetry)支持
- 硬件与推理指标
- 调优参数注入系统
次要功能
- 修复 Response API 工具调用问题
构建步骤
1. 测试特定模型能否由base container版本的 SGLang 启动
2. 构建 Manifest 文件
-
确定范围,包括 SKU、精度、并行策略的组合
-
一个 profile 代表 SKU、精度与并行策略的单一组合
-
为每个 profile 填写内容。最佳实践是,用户可以维护两种类型的 profile:
- 普通 profile(已验证,针对特定 SKU)
- 兜底 SKU(未验证,用于覆盖边缘 SKU)
以下是这两种类型对应的
profile.yaml示例:- 普通 profile 示例
- 兜底 profile 示例
schema_version: "1.0" # 请勿修改
model: "minimaxai_minimax-m2_5" # 模型名称
release: "1.7.0-variant" # 模型发布版本
other_llm:
llm_engine: sglang # 若使用 sglang 基础容器,请勿修改
profiles:
- model_version: "hf-3040beaf-nim"
tags:
# dp: 数据并行度,默认为 1
# vram: 该 profile 所需的最小显存,需汇总启动 GPU 的显存
# nim_custom_startup_script: 附加自定义脚本,仅限高级用户
feat_lora: "false"
pp: "1"
tp: "8"
ep: "8"
gpu: H20-3e
precision: "fp8"
profile: throughput
gpu_device: 232c:10de # nimtools 识别 GPU 设备所必需
ignore_precision_in_config: true # 启用后可防止 nimtools 覆盖精度配置
- model_version: "hf-3040beaf-nim"
tags:
feat_lora: "false"
pp: "1"
tp: ["2", "4"]
ep: "1"
gpu: B200
precision: "fp8"
profile: throughput
gpu_device: 2901:10de
ignore_precision_in_config: true
更多关于 profile 创建的详细信息,请参考: https://developer.nvidia.com/docs/nim-tools/latest/templates/nimlib/nim-generate-manifest.html
- 使用
nim_generate_manifest生成model_manifest.yaml
3. 性能配置注入
-
找到最优的原始 SGLang 服务器配置——性能调优工具正在持续完善,但 AIC 可能有助于确定并行策略。
-
配置覆盖顺序: 配置文件 > 环境变量 > tags > 默认值
-
配置文件是动态的,例如:
# ENV:环境变量。渲染后,inference.py 在函数内部将其设置到 os.environ 中;
# 它们不包含在返回值中。
# 字面量键值对必须严格遵守;使用 {{ var }} 表示动态值,
# 由启发式插件消费。
ENV:
# 字面量示例
NIM_LOG_LEVEL: "INFO"
# 动态示例(当没有处理器提供值时使用默认值)
CUSTOM_PREFIX: "{{ custom_prefix | default('minimax') }}"
# sglang_config 部分:渲染后作为字典从 render_config 返回,并与 engine_extra_args 合并。
# 字面量参数严格遵守;使用 {{ var }} 表示动态值,由已注册的处理器提供。
attention_backend: flashinfer
trust_remote_code: true
mem_fraction_static: 0.9
max_running_requests: {{ concurrency | default(8) }}
kv_cache_dtype: fp8_e4m3
quantization: "{{ quantization | default('fp8') }}"
reasoning_parser: minimax
tool_call_parser: minimax-m2 -
用户可以选择创建 YAML 配置文件用于 profile 级别的静态性能配置,或创建 yaml.j2 文件 + 插件系统以实现更智能的性能调优。
-
检查实际运行配置是否符合预期。
4. 环境变量列表
| 环境变量 | 说明 |
|---|---|
NIM_FORCE_DETERMINISTIC | 需要适配 |
TOOL_CALL_PARSER | 布尔值,用于开启/关闭该功能 |
REASONING_PARSER | 布尔值,用于开启/关闭该功能 |
NIM_ENABLE_INFERENCE_METRICS | 启用推理指标 |
NIM_COLLECT_TOKENS_HISTOGRAM | 收集 token 直方图 |
NIM_CONFIG_FILE | 覆盖配置文件;否则自动查找 {gpu}_{profile}_{precision}_{tp}.j2(或 .yaml) |
5. Dockerfile 示例
docker build \
--build-arg BASE_IMAGE=<cnd_base_image_location> \
--build-arg NIM_NAME=my-nim \
--build-arg NIM_MODEL_NAME=org_name/model_name \
--build-arg MANIFEST_FILE=model_manifest.yaml \
-t my-nim:latest \
.
以下是3家CND NIM Base Image 最新镜像位置:
| CND | 镜像位置 |
|---|---|
| 图灵新智算 | - amd64: tgcr.turing-agi.com/cnd/nvidia/china-sglang-basecontainer:latest - arm64: tgcr.turing-agi.com/cnd/nvidia/china-sglang-basecontainer-spark:latest |
| 图灵模镜 | - amd64: resource.turingcm.com:8443/nim-base-container/china-sglang-basecontainer:latest - arm64: resource.turingcm.com:8443/nim-base-container/china-sglang-basecontainer-spark:latest |
| 丽蟾云 | - amd64: io.chancloud.com/nim-base-container/china-sglang-basecontainer:latest - arm64: io.chancloud.com/cnd-enterprise/nim-base-container/china-sglang-basecontainer-spark:latest |
ARG BASE_IMAGE
FROM ${BASE_IMAGE}
USER root
# 基础设置 - 必填
ARG NIM_NAME
ARG NIM_MODEL_NAME
ARG MANIFEST_FILE
ENV NIM_NAME=${NIM_NAME}
ENV NIM_MODEL_NAME=${NIM_MODEL_NAME}
COPY ./LICENSE ./VERSION $NIM_DIR_PATH/
COPY ${MANIFEST_FILE} /opt/nim/etc/default/model_manifest.yaml
# 按模型调整 - 在所有 profile 中统一 - 必填
ENV NIM_TOOL_CALL_PARSER_NAME=""
ENV NIM_REASONING_PARSER_NAME="deepseek-r1"
ENV NIM_MODEL_LOADER_EXTRA_CONFIG='{"enable_multithread_load": "true","num_threads": 32}'
# 高级设置 - 可选
ENV NIM_HTTP_API_PORT="8000" # 默认 8000
ENV NIM_HEURISTIC_PLUGIN_DIR="/opt/nim/heuristic_plugin/" # 默认 /opt/nim/heuristic_plugin
# 默认为每个 profile 优化后的配置文件路径
# 文件名结构为 {gpu}_{profile}_{precision}_{tp}.yaml(可选 yaml.j2)
ENV NIM_CONFIG_FILE=""
# 其他设置与以下文档保持一致:
# https://developer.nvidia.com/docs/nim-tools/latest/templates/supported-image-labels-and-environment-variables.html
# 注意:这是 sglang 后端,因此部分变量不适用。
# 性能调优 - 可选
# 注意:tuning_configs 必须在 profile tag 中注册,或遵循自动搜索命名约定
COPY ./tuning_configs/* /opt/nim/
# 要启用此功能,调优配置必须为 j2 格式,且插件能够捕获 j2 中的变量名
COPY ./heuristic_plugins/* ${NIM_HEURISTIC_PLUGIN_DIR}
USER nvs:1000