国产算力接入全流程 SOP

需要把一款新的国产 GPU/NPU 接入 CubeStudio,想要一份可照做的分步流程与命令时阅读

部署安装 / GPU与异构算力
国产算力接入信创适配异构算力device-pluginGPU_RESOURCEDEFAULT_GPU_RESOURCE_NAMEGPU_NONE昇腾AscendAscend Docker Runtimenpu-exportergpu-type节点标签资源占用禁用卡指定卡

国产算力接入全流程 SOP

把「将一款国产 GPU/NPU 接入 CubeStudio」拆成 8 步可照做的流程,附命令级操作与平台侧配置位置。通用流程与各厂商子篇见 国产GPU与ARM64适配总览

一、为什么流程统一

CubeStudio 站在 Kubernetes 之上:各厂商 device-plugin 把算力卡注册成 K8s 扩展资源(如 nvidia.com/gpuhuawei.com/Ascend910hygon.com/dcu),平台只需在 GPU_RESOURCE 登记资源名,即可把卡纳入统一算力池(项目组配额、计量计费、监控告警、多资源组全部生效)。因此接入一款新卡 = 打通「厂商侧三件套(驱动/运行时/插件)」+「平台侧一行资源名配置」。

以昇腾为例,厂商侧一套完整组件(install/kubernetes/ascend/readme.md):

组件 作用
容器运行时(Ascend Docker Runtime) 为容器自动挂载卡设备与依赖
Device Plugin 向 K8s 上报卡资源、设备发现/分配/健康检查
Exporter(NPU Exporter) 采集利用率、显存、温度、电压等指标
Volcano 卡亲和调度、gang scheduling、故障重调度
Ascend Operator / HCCL Controller 分布式训练生命周期与集合通信配置生成

二、8 步通用接入流程

  1. 算力卡驱动:按厂商要求在每台算力节点安装驱动;昇腾装驱动加 --install-for-all 并装 CANN,npu-smi info 验证;海光装 rock 驱动后 lsmod | grep hydcu 确认模块加载。
  2. 容器运行时:使卡可被 docker 与 containerd 调用。昇腾 Ascend Docker Runtime:
    ./Ascend-docker-runtime_6.0.0_linux-aarch64.run --install          # docker
    ./Ascend-docker-runtime_6.0.0_linux-aarch64.run --install --install-scene=containerd \
      --config-file-path /etc/containerd/config.toml                    # containerd
    stat -fc %T /sys/fs/cgroup/    # 确认 cgroup 版本并按文档调整
    
    容器验卡:docker run -it --rm -e ASCEND_VISIBLE_DEVICES=0 <镜像> /bin/bashnpu-smi info 应只见 1 卡。
  3. K8s device-pluginkubectl apply -f device-plugin-910-v6.0.0.yaml(改镜像名、nodeSelector: gpu-type: NPU910、拉取策略 IfNotPresent)。成功标志:kubectl describe nodeAllocatable 出现 huawei.com/Ascend910: 8
  4. 资源占用约定:明确①资源名;②禁止 Pod 占卡的环境变量(混用机器必需);③指定「第 n 张卡」的可见设备环境变量(昇腾 ASCEND_VISIBLE_DEVICES、海光 HIP_VISIBLE_DEVICES、NVIDIA NVIDIA_VISIBLE_DEVICES)。
  5. 监控组件:部署厂商 exporter 接入 Prometheus,配置对应 Grafana 看板。详见 国产算力监控与统一纳管
  6. 平台配置:在 install/docker/config.pyGPU_RESOURCE:1193)加入该卡 K8s 资源名;按需设置 DEFAULT_GPU_RESOURCE_NAME:1210,默认 nvidia.com/gpu)。
  7. 环境镜像:按厂商开发环境镜像(昇腾从 AscendHub 获取),配置为 notebook(NOTEBOOK_IMAGES)与 pipeline 运行镜像。
  8. 框架包:按厂商 TF/PyTorch/MindSpore 安装方法,在业务代码中安装并跑通最小示例。

GPU_RESOURCE 内置映射(14 项)

key K8s 资源名
gpu / mig nvidia.com/gpu / nvidia.com/mig-1g.5gb NVIDIA 整卡 / MIG
npu310 / npu310p / npu910 huawei.com/Ascend310 / Ascend310P / Ascend910 华为昇腾
vnpu huawei.com/Ascend910-5c.1cpu.16g 昇腾静态虚拟化
dcu / vdcu / vdcu1 hygon.com/dcu / dcunum / dcu-share-30c-16g 海光整卡 / HAMi / 驱动层虚拟化
mlu370 cambricon.com/mlu370 寒武纪 370
mx metax-tech.com/gpu 沐曦 C500
xpu kunlunxin.com/xpu 昆仑芯
mthread mthreads.com/gpu 摩尔线程
gcu enrigin.com.cn/gcu 江原 GCU

命名约定:GPU_RESOURCE 的 key 必须小写,主机 gpu-type 节点标签必须大写(如 NPU910)。平台按 gpu-type 标签调度到对应机型节点。

三、任务侧申请写法

统一用「数量(资源简称)」,括号内为 GPU_RESOURCE 的 key:整卡 1(gpu) / 1(npu910) / 1(dcu) / 2(mlu370);虚拟化 1(vdcu)(另配显存/算力)、按 vnpu 占用、NVIDIA 小数卡 0.5

四、禁用卡 / 指定卡(混用机器)

对 CPU+GPU 混用机器,不申请卡的容器需注入厂商「屏蔽」环境变量,避免偷占卡。平台内置 GPU_NONEinstall/docker/config.py:1215):

GPU_NONE = {
    "gpu":    ['NVIDIA_VISIBLE_DEVICES', 'none'],
    "dcu":    ['HIP_VISIBLE_DEVICES', '-1'],
    "npu":    ['ASCEND_VISIBLE_DEVICES', 'void'],
    "npu910": ['ASCEND_VISIBLE_DEVICES', 'void'],
}

接入新卡时按同样思路补入其可见设备环境变量;指定「第 n 张卡」同样用这组变量实现。

五、昇腾落地实例

  1. 驱动 + CANN(--install-for-allnpu-smi info 验证);2. 安装 Ascend Docker Runtime,docker info 确认默认运行态为 ascend;3. 将 docker NPU device 适配云原生使 K8s 可识别;4. 明确 NPU 资源占用方式并设机器卡型 gpu-type: NPU910;5. 部署 npu-exporter 与监控看板;6. GPU_RESOURCEhuawei.com/Ascend910(key npu910);7. 构建 NPU 开发/调试镜像;8. 构建昇腾 MindIE 推理镜像并在 K8s 提供 API。

昇腾 910 的 device-plugin 无共享占用模式,单卡共享需挂载 /usr/local/Ascend/driver/npu-smi 到容器,或用静态 vNPU。昇腾另提供 Ascend Operator、HCCL Controller、故障重调度、临终 CheckPoint(MindIO ACP/TTP)等进阶能力。详见 华为昇腾 NPU 子目录

最后更新 2026-08-24完整文档以官方仓库为准:GitHub Wiki