GPU 软件栈与容器化
认识机器与问题讲清楚了 GPU 这台机器;本部分回答下一个问题:应用如何合法地触达这台机器。答案是一条由契约组成的链:Kubernetes 编排容器,容器运行时按 OCI 规范创建进程,而 GPU 是内核模块与用户态库的组合,两者之间天然存在一道缝。
第一段:两边的来历。Kubernetes 的出身解释这台编排器为什么、以及如何成为 GPU 的事实标准;容器与 GPU 的问题则揭示根本矛盾:GPU 不是内核原生资源,标准容器拿不到设备文件,也拿不到驱动库。
第二段:缝合两层。NVIDIA 软件栈自顶向下过一遍从固件到 TensorRT 的每一层及其故障信号;NVIDIA Container Toolkit 深入四个组件(libnvidia-container、OCI 钩子、运行时包装器与 nvidia-ctk),以及 CDI 这条现代路径。
读完本部分,你会明白数据平面各切分机制注入的资源到底是什么,也能在“容器里看不见 GPU”时精确定位断在哪一层。
章节目录
从固件到 TensorRT,GPU 应用坐在一张由契约组成的分层图上:应用调库、库调 CUDA、运行时找驱动、驱动管硬件。逐层拆解每层的职责与故障信号,理解驱动与运行时的兼容性方向。
Kubernetes 如何从 Google Borg 的内部经验走向开源事实标准,又为什么在容器与 AI 推理爆炸之后成为 GPU 工作负载的默认编排器:一段编年时间线加三个关键洞察。
容器只是命名空间与 cgroups,而 GPU 由专有内核模块与用户态驱动库组成,标准容器拿不到设备文件也拿不到库。从 nvidia-docker v1 到 v2 的 OCI 钩子方案,看这道缝最初是如何缝合的。
libnvidia-container、OCI 运行时钩子、nvidia-container-runtime 与 nvidia-ctk 各自做什么、如何协作;CDI 如何把厂商钩子变成中立标准;附驱动安装、工具包安装、运行时配置与验证的完整命令,以及关键 NVIDIA 基础镜像选型。