第 2 章

NVIDIA 软件栈与 AI 生命周期

·约 15 分钟

光有 GPU 没用,得有软件把计算交给它。NVIDIA 常说自己是"全栈"公司,指的就是从驱动到行业应用每一层都有自己的软件。这一章把这些名字归位:每一层解决什么问题,一个模型从开发到上线的每个阶段用哪些工具。

软件栈分几层

从下往上:

层代表解决什么问题
驱动NVIDIA 驱动、nvidia-smi让操作系统认识并管理 GPU
CUDACUDA Toolkit、CUDA Runtime让程序能把通用计算交给 GPU
加速库(CUDA-X)cuBLAS、cuDNN、NCCL、TensorRT、RAPIDS把常用计算写成高度优化的库,不用人人手写 GPU 代码
框架PyTorch、TensorFlow、JAX让研究者用 Python 描述模型,底层自动调用加速库
平台与服务NGC、NeMo、NIM、Dynamo-Triton打包好的容器、模型、训练和部署工具
企业套件NVIDIA AI Enterprise上面这些软件的企业版:技术支持、安全更新、长期维护
行业方案Clara、DRIVE、Isaac、Omniverse……面向具体行业的平台和预训练模型

写 PyTorch 代码的人通常只接触框架这一层,但底下每一层版本都要对得上,这也是容器流行的原因(后面讲 NGC 时展开)。

驱动与 CUDA

驱动是内核模块,操作系统通过它管理 GPU。nvidia-smi 随驱动一起安装,用来查看 GPU 状态(第 7 章细讲)。

CUDA 是 NVIDIA 在 2006 年推出的并行计算平台和编程模型。在它之前,想用 GPU 做通用计算,得把问题伪装成图形渲染;有了 CUDA,程序员可以用类 C 的语言写 GPU 程序(kernel),由成千上万个线程并行执行。线程按 block 组织,block 再组成 grid,这是 CUDA 编程模型的基本结构。Associate 考试不要求会写 CUDA 程序,知道它是整个生态的地基就够了。

CUDA 分两部分:

  • CUDA Toolkit:开发工具,包括编译器 nvcc、头文件和库,开发和编译 GPU 程序时需要;
  • CUDA Runtime:程序运行时需要的库。

版本关系上最容易混淆的一点:驱动向下兼容,新驱动能跑用旧版 CUDA 编译的程序,反过来不行。nvidia-smi 右上角显示的 "CUDA Version" 是这个驱动最高支持的 CUDA 版本,不是机器上装了哪个 CUDA Toolkit。比如数据盘上架那篇截到的 Driver Version: 595.71.05、CUDA Version: 13.2,意思是这版驱动最高支持到 CUDA 13.2。

用 pip 安装的 PyTorch 自带了它需要的 CUDA 运行库,所以机器上只要驱动够新,不装 CUDA Toolkit 也能跑。

加速库

NVIDIA 把针对不同领域优化好的库统称 CUDA-X。和 AI 基础设施关系最大的几个:

库干什么
cuBLAS线性代数(矩阵乘法等),几乎所有深度学习计算的底层
cuDNN深度学习常用算子:卷积、注意力、归一化、激活函数
NCCL多 GPU、多节点之间的集合通信(all-reduce 等)
TensorRT推理优化,下一节讲
RAPIDSGPU 加速的数据科学:cuDF 对应 pandas,cuML 对应 scikit-learn
DALIGPU 加速的数据加载与预处理(图片解码、数据增强)
Magnum IO数据中心 IO 技术的总称,包括 GPUDirect RDMA、GPUDirect Storage 等

NCCL(读作 "nickel")值得多说一句。多卡训练时,每一步都要把各卡算出的梯度汇总再分发回去,这个操作叫 all-reduce。NCCL 负责实现这些集合通信,并且会感知拓扑:同一台机器里走 NVLink,跨机器走 InfiniBand 或 RoCE。PyTorch 多卡训练默认的通信后端就是 NCCL。第 3、4 章讲的互连和网络,很大程度上就是为了让 NCCL 跑得快。

RAPIDS 的意义在于把 GPU 加速从深度学习扩展到了传统数据处理。数据准备往往占整个 AI 项目的大部分时间,用 cuDF 可以直接把 pandas 风格的代码放到 GPU 上跑。

容器与 NGC

驱动、CUDA、cuDNN、NCCL、框架,每一层都有版本,组合起来很容易冲突:"我这能跑,你那跑不了"。解决办法是把 CUDA 及以上的所有东西打包进容器,宿主机只需要装驱动。容器本身的原理(镜像分层、Namespace 和 Cgroups)在 ACA 合集的容器技术基础里讲过。

  • NVIDIA Container Toolkit:让容器能用上 GPU。它在启动容器时把宿主机的驱动库和 GPU 设备挂进容器。驱动始终在宿主机上,容器里不装驱动。
  • NGC(NVIDIA GPU Cloud)目录:NVIDIA 官方的软件仓库,提供预先测试好的容器(PyTorch、TensorFlow、Dynamo-Triton 等,按月发布版本)、预训练模型、Helm Chart 和 SDK。
# 用 NGC 的 PyTorch 容器,把宿主机所有 GPU 交给容器
docker run --gpus all -it --rm nvcr.io/nvidia/pytorch:<版本>-py3

用 NGC 容器的好处是版本组合经过 NVIDIA 测试,而且针对 NVIDIA GPU 做过性能调优。

推理这一侧:TensorRT、Dynamo-Triton、NIM

模型训好之后要变成能对外服务的东西,这里有三个名字容易混:

TensorRT 是推理优化器和运行时。它把训练好的模型编译成针对特定 GPU 优化过的"引擎",常用手段有:

  • 层融合:把多个连续的小算子合成一个,减少读写显存的次数;
  • 精度校准:把 FP32 模型转成 FP16、INT8 或 FP8,尽量保住精度;
  • 内核自动调优:针对具体 GPU 型号挑最快的实现。

针对大语言模型还有 TensorRT-LLM,加入了 in-flight batching、分页 KV cache 等 LLM 专用优化。

Dynamo-Triton 是推理服务器,负责把模型挂成 HTTP/gRPC 服务。它原名 Triton Inference Server,2025 年 3 月并入 NVIDIA Dynamo 推理平台并改了名;备考资料里大多还叫 Triton,两个名字指的是同一个东西。主要能力:

  • 支持多种框架的模型(TensorRT、PyTorch、ONNX 等),不用每种框架各搭一套服务;
  • 动态批处理:自动把零散请求拼成批次,提高吞吐;
  • 一张 GPU 上同时跑多个模型或同一模型的多个实例;
  • 暴露 Prometheus 指标,方便监控。

NVIDIA Dynamo 本身是面向大模型的分布式推理框架,解决的是数据中心规模的 LLM 推理:比如把 prefill 和 decode 拆到不同的 GPU 上跑、按 KV cache 命中情况路由请求。

NIM(NVIDIA Inference Microservices) 是再往上一层的打包:一个容器里装好模型、优化过的推理引擎和服务端,对外提供业界通用的 API(LLM 类的 NIM 兼容 OpenAI 接口)。拉下来就能用,不用自己做优化和部署。

三者的关系:TensorRT 负责让模型跑得快,Dynamo-Triton 负责把模型变成服务,NIM 把前两者连同模型打包成开箱即用的微服务。

训练与定制:NeMo

训练这一侧,大多数人直接用 PyTorch。NVIDIA 在上面做了 NeMo,一套构建和定制生成式 AI 模型的框架,覆盖大模型的整条流水线:

  • NeMo Curator:大规模数据清洗与去重;
  • 训练:内置张量并行、流水线并行等大规模分布式训练能力(基于 Megatron);
  • 定制:微调、参数高效微调(PEFT,比如 LoRA);
  • NeMo Guardrails:给大模型应用加"护栏",限制话题、过滤不安全输出。

NVIDIA AI Enterprise

上面这些软件大多有免费或开源版本。NVIDIA AI Enterprise 是它们的企业版订阅,按 GPU 数量授权,卖的不是"更多功能",而是企业生产环境需要的东西:

  • 企业级技术支持;
  • 安全漏洞修复和长期维护的稳定分支;
  • 在认证过的服务器、云平台和虚拟化环境上测试过兼容性。

它包含 NIM、NeMo、Dynamo-Triton、TensorRT、RAPIDS 等 AI 软件,也包含 GPU Operator、Network Operator 这类基础设施软件,以及虚拟化环境下做计算用的 vGPU 驱动(第 7 章)。可以部署在本地、云上或混合环境。

AI 生命周期里的软件

一个模型从想法到上线,大致经过这些阶段:

阶段做什么NVIDIA 工具常见通用工具
数据准备采集、清洗、标注、特征处理RAPIDS、DALI、NeMo CuratorSpark、pandas
训练在 GPU 集群上训练或微调模型PyTorch + CUDA/cuDNN/NCCL、NeMo、NGC 容器TensorFlow、JAX
优化量化、剪枝、编译成推理引擎TensorRT、TensorRT-LLMONNX Runtime
部署把模型变成在线服务Dynamo-Triton、NIMvLLM、KServe
监控与运维看服务状态、资源利用、模型效果DCGM、Run:aiPrometheus、Grafana

贯穿整条流水线的是编排和调度:训练作业、推理服务都跑在集群上,由 Slurm 或 Kubernetes 管理资源(第 6 章)。

MLOps

软件工程有 DevOps,机器学习对应的叫 MLOps,把模型开发到上线的过程工程化、自动化。它要解决的问题比普通软件多一层:代码之外,数据和模型也会变。

  • 版本管理:代码、数据集、模型都要有版本,能追溯"线上这个模型是用哪份数据、哪版代码训出来的";
  • 实验追踪:记录每次训练的超参数、指标和产出,方便对比(MLflow、Weights & Biases);
  • 流水线自动化:数据更新后自动触发训练、评估、打包、部署(Kubeflow 等);
  • 部署与回滚:新模型不直接全量上线,而是先用金丝雀发布(切一小部分流量给新模型)或 A/B 测试(新旧模型同时服务不同用户,比较效果)验证,效果不好能退回;
  • 监控:除了服务是否正常,还要看模型效果有没有随数据变化而下降(数据漂移)。

行业方案一览

NVIDIA 为不少行业做了专门的平台,通常包含 SDK、预训练模型和参考流程。考试考的是"名字对应什么领域":

方案领域
Clara医疗与生命科学:医学影像、药物发现、基因组学
DRIVE自动驾驶:车载计算平台和软件栈
Isaac机器人:仿真、感知、操控
Metropolis视觉 AI:智慧城市、零售、工厂的视频分析
Omniverse3D 协作、仿真与数字孪生,基于 OpenUSD
Cosmos面向物理 AI(机器人、自动驾驶)的世界基础模型
Riva语音 AI:语音识别、语音合成、翻译
Merlin推荐系统
Morpheus网络安全:用 AI 实时分析网络流量和日志
Holoscan传感器数据实时处理,如医疗设备
Aerial5G/6G 无线接入网
Earth-2天气与气候模拟
Jetson边缘和嵌入式 AI 的硬件模组(机器人、无人机、IoT)
EGX / IGX边缘计算平台:EGX 面向企业边缘服务器,IGX 面向工业和医疗,强调功能安全

速查

词一句话
CUDAGPU 通用计算的平台和编程模型,整个生态的地基
驱动兼容新驱动能跑旧 CUDA 程序;nvidia-smi 的 CUDA Version 是驱动支持的上限
cuDNN / cuBLAS深度学习算子库 / 线性代数库
NCCL多卡多机集合通信,感知 NVLink 和网络拓扑
RAPIDSGPU 加速的 pandas / scikit-learn
NGC官方容器、模型、Helm Chart 仓库
Container Toolkit让容器用上宿主机的 GPU 和驱动
TensorRT推理优化:层融合、降精度、调优内核
Dynamo-Triton推理服务器,原名 Triton Inference Server
NIM模型 + 引擎 + 服务打包好的推理微服务
NeMo生成式 AI 模型的构建与定制框架
AI Enterprise企业版订阅:支持、安全更新、兼容性认证