第 2 章
NVIDIA 软件栈与 AI 生命周期
光有 GPU 没用,得有软件把计算交给它。NVIDIA 常说自己是"全栈"公司,指的就是从驱动到行业应用每一层都有自己的软件。这一章把这些名字归位:每一层解决什么问题,一个模型从开发到上线的每个阶段用哪些工具。
软件栈分几层
从下往上:
| 层 | 代表 | 解决什么问题 |
|---|---|---|
| 驱动 | NVIDIA 驱动、nvidia-smi | 让操作系统认识并管理 GPU |
| CUDA | CUDA 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 | 推理优化,下一节讲 |
| RAPIDS | GPU 加速的数据科学:cuDF 对应 pandas,cuML 对应 scikit-learn |
| DALI | GPU 加速的数据加载与预处理(图片解码、数据增强) |
| 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 Curator | Spark、pandas |
| 训练 | 在 GPU 集群上训练或微调模型 | PyTorch + CUDA/cuDNN/NCCL、NeMo、NGC 容器 | TensorFlow、JAX |
| 优化 | 量化、剪枝、编译成推理引擎 | TensorRT、TensorRT-LLM | ONNX Runtime |
| 部署 | 把模型变成在线服务 | Dynamo-Triton、NIM | vLLM、KServe |
| 监控与运维 | 看服务状态、资源利用、模型效果 | DCGM、Run:ai | Prometheus、Grafana |
贯穿整条流水线的是编排和调度:训练作业、推理服务都跑在集群上,由 Slurm 或 Kubernetes 管理资源(第 6 章)。
MLOps
软件工程有 DevOps,机器学习对应的叫 MLOps,把模型开发到上线的过程工程化、自动化。它要解决的问题比普通软件多一层:代码之外,数据和模型也会变。
- 版本管理:代码、数据集、模型都要有版本,能追溯"线上这个模型是用哪份数据、哪版代码训出来的";
- 实验追踪:记录每次训练的超参数、指标和产出,方便对比(MLflow、Weights & Biases);
- 流水线自动化:数据更新后自动触发训练、评估、打包、部署(Kubeflow 等);
- 部署与回滚:新模型不直接全量上线,而是先用金丝雀发布(切一小部分流量给新模型)或 A/B 测试(新旧模型同时服务不同用户,比较效果)验证,效果不好能退回;
- 监控:除了服务是否正常,还要看模型效果有没有随数据变化而下降(数据漂移)。
行业方案一览
NVIDIA 为不少行业做了专门的平台,通常包含 SDK、预训练模型和参考流程。考试考的是"名字对应什么领域":
| 方案 | 领域 |
|---|---|
| Clara | 医疗与生命科学:医学影像、药物发现、基因组学 |
| DRIVE | 自动驾驶:车载计算平台和软件栈 |
| Isaac | 机器人:仿真、感知、操控 |
| Metropolis | 视觉 AI:智慧城市、零售、工厂的视频分析 |
| Omniverse | 3D 协作、仿真与数字孪生,基于 OpenUSD |
| Cosmos | 面向物理 AI(机器人、自动驾驶)的世界基础模型 |
| Riva | 语音 AI:语音识别、语音合成、翻译 |
| Merlin | 推荐系统 |
| Morpheus | 网络安全:用 AI 实时分析网络流量和日志 |
| Holoscan | 传感器数据实时处理,如医疗设备 |
| Aerial | 5G/6G 无线接入网 |
| Earth-2 | 天气与气候模拟 |
| Jetson | 边缘和嵌入式 AI 的硬件模组(机器人、无人机、IoT) |
| EGX / IGX | 边缘计算平台:EGX 面向企业边缘服务器,IGX 面向工业和医疗,强调功能安全 |
速查
| 词 | 一句话 |
|---|---|
| CUDA | GPU 通用计算的平台和编程模型,整个生态的地基 |
| 驱动兼容 | 新驱动能跑旧 CUDA 程序;nvidia-smi 的 CUDA Version 是驱动支持的上限 |
| cuDNN / cuBLAS | 深度学习算子库 / 线性代数库 |
| NCCL | 多卡多机集合通信,感知 NVLink 和网络拓扑 |
| RAPIDS | GPU 加速的 pandas / scikit-learn |
| NGC | 官方容器、模型、Helm Chart 仓库 |
| Container Toolkit | 让容器用上宿主机的 GPU 和驱动 |
| TensorRT | 推理优化:层融合、降精度、调优内核 |
| Dynamo-Triton | 推理服务器,原名 Triton Inference Server |
| NIM | 模型 + 引擎 + 服务打包好的推理微服务 |
| NeMo | 生成式 AI 模型的构建与定制框架 |
| AI Enterprise | 企业版订阅:支持、安全更新、兼容性认证 |