跳到主要内容

基础使用方法

硬件与环境要求

支持的 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

参考文档:Supported NVIDIA hardware, CUDA, OS, and CUDA driver

主要增强功能

  • 无开源许可证问题
  • 无严重和高危 CVE 问题
  • Profile 选择与管理系统
  • 模型构件自动下载
  • 构件与 profile 校验
    • 支持 GPU Fallback Profile 机制,可在任意 GPU 上尝试启动 (不保证部署成功)。
    • 2026 年 3 月及之后发布的 中国NIM 均支持 Fallback Profile。
  • OTEL(OpenTelemetry)支持
  • 硬件与推理指标
  • 调优参数注入系统

次要功能

  • 修复 Response API 工具调用问题

构建步骤

1. 测试特定模型能否由base container版本的 SGLang 启动

2. 构建 Manifest 文件

  1. 确定范围,包括 SKU、精度、并行策略的组合

  2. 一个 profile 代表 SKU、精度与并行策略的单一组合

  3. 为每个 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

  1. 使用 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. 环境变量列表

参考文档:https://developer.nvidia.com/docs/nim-tools/latest/templates/supported-image-labels-and-environment-variables.html

环境变量说明
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