基于 CUDA 版本调度推理服务
简介
在 Kubernetes 集群中,不同 GPU 节点上的 GPU 型号和 CUDA 驱动版本不一致,会导致以下问题:
-
版本不匹配:应用程序使用的 CUDA Runtime 版本可能与某些节点上的 CUDA Driver 版本不兼容,从而导致失败或性能问题。
-
调度挑战:原生 Kubernetes 调度器无法感知 CUDA 版本依赖关系,不能保证应用程序被调度到具有兼容版本的 GPU 节点上。
-
维护开销高:手动管理节点与应用程序之间的 CUDA 版本依赖关系会增加运维复杂度。
本文将逐步介绍如何基于 CUDA Runtime 版本和 Nvidia Driver 版本调度推理服务。 通过这些设置,你可以在 Kubernetes 调度层面解决 CUDA Runtime 和 CUDA Driver 版本不匹配的问题,确保应用程序被调度到兼容的 GPU 节点上。
步骤
在节点标签中添加 CUDA 版本
-
在每个 GPU 节点上,运行以下命令以获取支持的 CUDA Runtime 版本:
例如,输出可能为 12.4。
-
在控制节点上,为该 GPU 节点添加对应的主版本和次版本标签:
TIP
如果你的集群中有很多 GPU 节点,手动为它们添加标签会比较困难。你可以安装 Node Feature Discovery 集群插件。
通过部署 Node Feature Discovery(NFD)集群插件并开启 GFD 扩展,GPU 节点会自动添加 CUDA 版本标签。
Node Feature Discovery 集群插件可以从 Customer Portal 获取。更多信息请联系 Consumer Support。
基于 CUDA 版本调度推理服务
从 Alauda AI 1.5 开始,产品将根据 CUDA 版本自动调度推理服务的 pod。对于更早的版本,你可以按照以下步骤操作:
- 在创建推理服务时,确定需要选择哪个 ClusterServingRuntime。
- 解析 ClusterServingRuntime 标签:
如果
cpaas.io/accelerator-type为 nvidia,则进一步解析cpaas.io/cuda-version(例如 11.8)。 - 在推理服务中添加 nodeAffinity 字段,例如: