从云原生走向 AI 原生:一套面向未来的架构方法论 → 阅读《AI 原生基础设施》

昇腾 vNPU:驱动硬切分与运行时软切分

草稿

昇腾生态把 GPU 世界里“硬件切分还是软件共享”的路线之争,在同一厂商内部重演了一遍,而且给了两个软件答案:一个来自华为自己,一个来自 HAMi 社区。

本章要解决什么

前面几章建立了数据平面谱系,并用它分析了 MIG(硬件切分)、HAMi(软件共享)和 DRA(资源分配 API)。这些分析都以 NVIDIA 生态为主。本章把同一组决策轴应用到昇腾(Ascend)NPU 生态,回答六个问题:

  1. 昇腾为什么叫 NPU?它的芯片谱系经历了怎样的演进,各代产品对应哪些芯片?
  2. NPU 与 NVIDIA GPU 在架构和生态上有何本质差异,这些差异如何决定“能切什么”?
  3. 昇腾官方的 vNPU 虚拟化到底是什么机制,隔离边界在哪里?
  4. 华为 2026 年推出的官方软切分(vCANN-RT)与 HAMi 的 libvnpu 是什么关系?
  5. 在 Kubernetes 里,Volcano 的 MindCluster 模式与 HAMi 模式有何区别,HAMi 对各代芯片的支持到什么程度?
  6. 一个真实的推理集群应该怎么选?

结论先行:昇腾生态当前存在三条可用的 vNPU 路径,它们在数据平面谱系上的位置如下图。驱动硬切分对应 NVIDIA 世界的 MIG,官方软切分 vCANN-RT 与 HAMi 软切分共同对应“HAMi 式运行时拦截”,三者共享同一套底层注入设施(Ascend Docker Runtime 与 ld.so.preload)。

图 1: 昇腾 vNPU 三条路径:驱动硬切分与运行时软切分
图 1: 昇腾 vNPU 三条路径:驱动硬切分与运行时软切分

昇腾谱系:从 310/910 到 910C

先厘清命名体系:昇腾(Ascend)是芯片品牌,覆盖推理与训练;Atlas 是硬件产品品牌(模块、板卡、服务器、集群);软件栈是 CANN(Compute Architecture for Neural Networks,对标 CUDA)加框架 MindSpore,再往上是一直到 2024 年还叫 MindX DL、后来归一为 mind-cluster 的集群组件。所以“昇腾 310P3”是芯片,“Atlas 300I Duo”是用这颗芯片(的两颗)做成的推理卡。

芯片与产品的大事记:

时间芯片与产品定位与要点
2018-10昇腾 310 发布(HC2018)12nm 达芬奇 Lite 架构 SoC,面向边缘与推理;同场预告 910
2019-08昇腾 910 商用7nm,32 个达芬奇 Max 核心,FP16 256 TFLOPS、INT8 512 TOPS;同场发布 MindSpore
2019 至 2020出口管制华为 2019 年 5 月被列入美国实体清单,2020 年外国直接产品规则进一步限制先进制程代工,直接重塑了后续路线
2020 至 2022910A 世代、310P 世代910A 用于 Atlas 800 训练服务器;2022 年 310P 系列落地:Atlas 300I Duo(双芯,280 TOPS INT8,96GB LPDDR4X)与 300I Pro(单芯 140 TOPS,24GB),推理主力
2023910B 家族与 Atlas A2 整机910B1/B2/B3/B4/B4-1 等型号;Atlas 800T A2 训练服务器(8 颗 910B)、800I A2 推理服务器(910B4)、300I A2 推理卡,整体对标 A100 世代
2025910C 与超节点910C 采用双 die 封装(约 800 TFLOPS FP16);CloudMatrix 384 超节点以 384 颗 910C 组成紧耦合逻辑节点,实现全域可寻址的统一内存池;9 月发布三年路线图

理解这张表对选型很关键:vNPU 能力只存在于推理形态的芯片上。310P 系列(300I Duo、300I Pro)与 910B4 代推理(300I A2、800I A2)有驱动切分模板;训练卡(910A、910B2/B3)没有。910C 目前以超节点整卡调度为主,HAMi v2.9.0 为其 SuperPod 场景加入了模块对分配,但同样没有切分模板。

从 GPU 到 NPU:架构与生态差异

为什么叫 NPU

NPU(Neural-network Processing Unit,神经网络处理器)这个名字传达的是领域专用:整颗芯片为张量计算设计,而不是像 GPU 那样从图形处理演化成通用并行处理器。GPU 的计算主力是流式多处理器里的 SIMT CUDA Core 加 Tensor Core;昇腾 NPU 采用达芬奇(Da Vinci)架构,每个 AI Core 由三部分组成:

  • Cube 单元:专用矩阵乘引擎,一个时钟周期完成固定规模的乘加阵列,是卷积与 GEMM 的绝对主力
  • Vector 单元:激活函数与逐元素运算
  • Scalar 单元:标量与控制逻辑

AI Core 之外还有两类“陪跑”单元:AI CPU 承接未被 AI Core 加速的算子,DVPP 媒体引擎负责图像编解码。连管理工具的命名都在强调差异:NVIDIA 是 nvidia-smi,昇腾是 npu-smi

GPU(NVIDIA)NPU(昇腾)
定位通用并行处理器,图形血统面向神经网络的专用处理器(达芬奇架构)
计算单元流式多处理器:SIMT CUDA Core 加 Tensor CoreAI Core:Cube 矩阵引擎加 Vector 加 Scalar
算子兜底CUDA 库,跑在同样的核心上AI CPU,与 AI Core 并列的独立单元
媒体引擎编解码模块,不是 MIG 的切分维度DVPP 引擎,vNPU 模板的显式切分维度
显存GDDR 或 HBM310P 用 LPDDR4X,910B 起用 HBM
芯片间互连NVLink 与 NVSwitchHCCS;910C 超节点升级为统一总线与统一内存
软件栈CUDA(加上十余年的库与工具积累)CANN、MindSpore、MindIE,兼容 PyTorch(torch-npu)

生态差异是比算力更深的鸿沟

CUDA 生态是 NVIDIA 真正的护城河:算子库、调试器、profiler、框架后端经过十余年积累。昇腾的对策是 CANN 提供 aclRuntime 与算子库,通过 torch-npu 适配 PyTorch 生态,同时自研 MindSpore 与推理引擎 MindIE。实际工程里这意味着两点:模型迁移需要验证算子覆盖与精度(部分算子会落到 AI CPU 上拉低性能),版本配套也更严格(驱动、CANN、框架、容器镜像常常要求成对匹配,本书实验中 libvnpu 与驱动版本必须匹配就是同一逻辑的缩影)。

差异如何决定“能切什么”

把架构差异投影到虚拟化上,就能解释两条生态各自的切分维度:

  • NVIDIA 的 MIG 切的是 SM 与显存(连同 L2 缓存),编解码引擎不在切分维度里。
  • 昇腾的驱动模板切的是 AI Core、AI CPU、显存、DVPP 四个维度,模板名直接编码了切法:vir04_3c_ndvpp 表示 4 个 AI Core、3 个 AI CPU、不含 DVPP。
  • 软切分同理:GPU 侧拦截 CUDA 调用(HAMi 的 libvgpu.so),NPU 侧拦截 CANN/DCMI 调用(libvnpu.solibvruntime.so)。

本章真机验证用的 310P3 报告 8 个 AI Core、7 个 AI CPU、21525 MB 可见显存。这组数字就是 vNPU 世界的“切分库存”:模板 vir01vir04 分配 1 到 4 个 AI Core,HAMi 配置里的 aiCoreaiCPUmemoryAllocatable 字段对应的也是同一份清单。

什么是 vNPU

vNPU(虚拟 NPU)是 NPU 世界里的 vGPU:一张小于物理卡的逻辑 NPU,容器拿到它就像拿到一整颗设备。它有两种诞生方式,这个区别正是本章的主线:由昇腾驱动把硬件静态分区成模板大小的 vNPU(硬切分),或者由运行时拦截库在用户态改写设备视图并按容器强制配额(软切分)。下面依次展开三条路径。

路径一:驱动级模板硬切分

机制:模板就是静态分区表

昇腾驱动(npu-smi)提供 vNPU 切分能力:按“虚拟化实例模板”把一张物理 NPU 的 AI Core、AI CPU、显存和编解码引擎(VPC/VENC/VDEC/JPEGD/JPEGE/PNGD) 一次性静态分区,每个 vNPU 拿到独占的硬件份额,边界由驱动强制执行。这与 MIG 在谱系上完全同构:离散资源单位、强隔离、切分粒度受模板集合约束。

模板命名规则为 vir<AI Core 数>_<AI CPU 数>c_<显存>。以华为官方硬切分参考实践(2025 年 12 月发布,配套 Ascend HDK 25.5.0)列出的模板为例:

硬件可用模板
Atlas 300I Duo 96G(310P3 芯片,单卡双芯)vir01vir02vir02_1cvir04vir04_3cvir04_3c_ndvppvir04_4c_dvpp
Atlas 300I A2 / 800I A2 32G(910B4 代推理)vir05_1c_8gvir10_3c_16gvir10_3c_16g_nmvir10_4c_16g_m
Atlas 300I A2 / 800I A2 64Gvir05_1c_16gvir10_3c_32g

裸机操作命令:

npu-smi info -t template-info                      # 查询本机支持的模板
npu-smi set -t create-vnpu -i <id> -c <chip> -f <模板名>   # 创建 vNPU
npu-smi set -t destroy-vnpu -i <id> -c <chip> -v <vnpu_id> # 销毁
npu-smi set -t vnpu-cfg-recover -d mode            # 重启后恢复切分配置

容器挂载有两种方式:原生 Docker 直接挂 /dev/vdavinci<id>;或通过 Ascend Docker Runtime,用 ASCEND_VISIBLE_DEVICES=<vNPU id>ASCEND_RUNTIME_OPTIONS=VIRTUAL 注入,也可以用 ASCEND_VISIBLE_DEVICES=<物理卡号>ASCEND_VNPU_SPECS=<模板> 在容器启动时按需切分。

硬约束

参考实践明确列出的限制,选型前必须知道:

  • 仅支持推理场景。训练卡(如 800T A2 训练整机)没有 vNPU 模板能力。
  • 物理 NPU 与 vNPU 不能混用,已切分的卡不能再整卡挂载。
  • 同一台服务器必须插同规格卡(48G 与 96G 不可混插)。
  • 一个推理服务只能绑定一个 vNPU。
  • 容器重启后 vNPU 仍在(vnpu-cfg-recover),但调整切分布局属于破坏性操作,需要业务侧配合。

Kubernetes 集成:静态与动态两条入口

手动 npu-smi 切分再挂载的方式对应华为云文档里的“静态虚拟化”。生产上更有价值的是动态虚拟化:Pod 调度到节点后,由设备插件按调度决策实时创建 vNPU,Pod 销毁后回收。这条路径依赖华为 mind-cluster 全家桶:

  • ascend-device-plugin:发现并上报物理与虚拟设备,故障时换卡重建任务
  • Ascend Docker Runtime:设备与库文件注入
  • NodeD / ClusterD / Ascend Operator:节点与集群级运维
  • Volcano:批量调度(MindCluster 模式即由此而来)

Volcano v1.14 起,MindCluster 的核心调度逻辑被原生集成进 deviceshare 插件(deviceshare.AscendMindClusterVNPUEnable: true),需要把初始化参数 presetVirtualDevice 设为 "false" 开启动态虚拟化。Pod 通过标签声明需求:ring-controller.atlas: ascend-310Pvnpu-level: low/highvnpu-dvpp: yes/no,并请求 huawei.com/npu-core 资源;调度器按 AI Core 数、档位与 dvpp 维度匹配 vir 模板(high 档资源不足时可降级)。

按 Volcano 官方文档,MindCluster 模式当前只支持昇腾 310 系列,910 系列在计划中。这与其代码路径一致:Volcano 源码中 MindCluster 的 vNPU 实现位于 pkg/scheduler/api/devices/ascend/mindcluster/ascend310p/,模板常量正是上面 300I Duo 的 vir01vir04_4c_dvpp 那一组。

路径二:官方软切分 vCANN-RT

华为在 2026 年发布的软切分参考实践中给出了第二条路径:vCANN-RT。它来自 openEuler 的 ubs-virt 仓库(ubs-virt-enpu/vcann-rt),核心是两个产物:

  • libvruntime.so:通过 ld.so.preload 预加载进业务容器,拦截昇腾 runtime 调用
  • enpu-monitor:监控工具

机制要点:

  • 算力按时间片轮转,每个时间片默认 100ms。申请 20% 算力的容器在每个轮转周期获得 20ms 使用权。
  • 粒度极细:AI Core 配额 1 到 100(整数百分比),显存最小 1MB。
  • 三种调度策略:fixed-share(严格按配比,空闲也不让出)、elastic(推荐,跳过空闲容器的时间片)、best-effort(利用率最高,无 QoS 保证)。
  • 每容器一份 npu_info.config,声明物理 NPU id、vNPU id、配额、共享内存 id 与调度策略。

支持范围与定位也很明确:面向 Atlas 300I A2 / 800I A2,要求 Ascend HDK 25.5.0、CANN 8.5.0 或 9.1.0、MindCluster 组件 26.0.0.0,节点需先执行 npu-smi set -t device-share 开启容器共享模式。单卡最多 63 个容器,单容器限一张物理 NPU,不支持特权容器。官方给的目标场景是成本敏感的教育实训,单卡同时跑至少 8 个实训任务,而不是生产多租户。

部署上,Ascend Deployer 工具提供 --install-scene=softshare(K8s 场景)和 --install-scene=vcannrt(纯 Docker 场景)一键安装;K8s 路径同样依赖 device plugin、Volcano、ClusterD、Ascend Operator 与 Ascend Docker Runtime,节点打 chip1softsharedev 标签。

注意这份参考实践声明“仅供用户参考使用”,不可直接用于商用产品。定位介于社区方案与正式产品之间。

路径三:HAMi 路径

HAMi 是 CNCF Sandbox 项目 Project-HAMi/HAMi(仓库创建于 2021 年 9 月,前身是 k8s-vgpu-scheduler),覆盖 NVIDIA、昇腾、寒武纪等十余类加速器。它在昇腾上实际提供两个子模式,容易混淆:

HAMi 模板模式:换调度器,不换数据面

HAMi 的 ascend 设备插件(Project-HAMi/ascend-device-plugin)读取 hami-scheduler-device ConfigMap 中的自定义模板,Pod 请求 huawei.com/Ascend310Phuawei.com/Ascend310P-memory。显存请求会自动对齐到最近的可满足模板(例如卡上有 1/4 和 1/2 档模板时,请求 1024MB 会按 1/4 档对齐)。数据面仍然是驱动级 vNPU:插件最终通过 ASCEND_VNPU_SPECS 让 Ascend Docker Runtime 按模板切分。所以 HAMi 模板模式与路径一的区别只在控制面(调度器、模板治理、异构集群支持),隔离强度相同。

HAMi-core 软切分:社区版的运行时拦截

HAMi v2.9.0(2026 年 5 月)引入 HAMi-core 模式,软切分引擎是 Project-HAMi/hami-vnpu-core,以子模块形式内嵌在 ascend-device-plugin 中,由其 CI 在 CANN 环境里编译出 ARM64 的 libvnpu.so。机制与 vCANN-RT 高度同构,细节上有自己的实现:

  • 插件 DaemonSet 把 libvnpu.sold.so.preload 放到宿主机 /usr/local/hami-vnpu-core/,由 Ascend Docker Runtime 注入容器。
  • 显存配额通过环境变量 NPU_MEM_QUOTA 下发,npu-smi 等设备查询被改写为配额视图。
  • 算力通过共享内存注册表(/hami-shared-region/0_global_registry)上的 Global Manager 协调。真机日志中的 Compute limit: 1, Memory limit: 8192, FixedShare: false 与 vCANN-RT 的 fixed-share 与 elastic 策略显然处在同一设计空间。
  • Prometheus 指标暴露在插件 Pod 的 :9395,含每容器显存上限、用量与利用率。

约束:软切分仅支持 ARM 平台,要求 Ascend 驱动不低于 25.5、节点上有 npu-smi,且需 huawei.com/vnpu-mode: hami-core 注解显式开启。

2026 年 8 月 14 日在昇腾 310P3 ARM 服务器上的真机验证(麒麟 V10、驱动 25.5.1、Kubernetes 1.28、Volcano master)给出了完整证据链:申请 8192MB 切片的容器内 npu-smi 显示 0 / 8192,宿主机同卡显示 1848 / 21525;两个 Pod 以 binpack 落到同一张物理卡(同 Bus-Id),各自独立 8192MB 窗口;指标端点上报的 hami_vgpu_memory_limit_bytes 精确等于 8192MiB。完整过程见 HAMi 网站的博客实验 13

Volcano 里的 HAMi 模式

Volcano v1.14(2026 年 1 月)同样原生集成了 HAMi 模式:deviceshare.AscendHAMiVNPUEnable: true,配合 deviceshare.SchedulePolicy: binpack|spread 与指向 hami-scheduler-device ConfigMap 的 KnownGeometriesCMName。与 MindCluster 模式的差异:

MindCluster 模式HAMi 模式
Volcano 开关AscendMindClusterVNPUEnableAscendHAMiVNPUEnable
设备插件华为 mind-cluster ascend-device-pluginProject-HAMi ascend-device-plugin
芯片覆盖仅 310 系列(910 计划中)310P、910A/B2/B3/B4/C,支持异构集群
资源名huawei.com/npu-core 加档位标签huawei.com/Ascend310P-memory(及可选 -core
切分方式驱动模板(动态虚拟化)模板模式为驱动模板;加注解后为 libvnpu 软切分
软切分支持有(vnpu-mode: hami-core,需 Volcano 1.16 及以上)

若同一 Volcano 集群同时跑 vGPU(NVIDIA)与 vNPU,需要把两边的模板 ConfigMap 合并为一个再供 KnownGeometriesCMName 引用。

按芯片看支持矩阵

路径层面的对比之外,选型时更常卡住的是“我这批卡到底支持什么”。把谱系、官方路径与 HAMi 支持历史合并成一张按芯片的矩阵(以 2026 年 8 月的公开信息为准):

芯片代表产品驱动硬切分模板vCANN-RT 软切分HAMi 模板模式HAMi-core 软切分Volcano MindCluster
310P3Atlas 300I Duo / 300I Pro有(vir01vir04_4c_dvpp有(v2.4.0 起)有(2026-08 真机验证)有(唯一支持的系列)
910AAtlas 800 训练服务器有(整卡与显存调度)未标注支持
910B2 / 910B3Atlas 800T A2 训练整机有(v2.6.0 起)未标注支持
910B4 / 910B4-1Atlas 800I A2、300I A2 推理有(vir05vir10 系列)有(官方标注 910B 验证)无(计划中)
910CCloudMatrix 384 超节点模块对分配(v2.9.0)未标注支持

读表的方式:训练芯片(910A、910B2/B3)在数据平面上只有整卡分配,多租户要靠队列与配额在控制面解决;推理芯片是三条路径的主战场;910C 走的是“超节点统一内存池”的另一条扩展路线,切分不是它的重点。

支持历史与成熟度时间线

这套生态的分工不是设计出来的,而是近两年加速演化出来的。把芯片历史与虚拟化支持史放在同一条轴上看:

时间事件
2018-10昇腾 310 发布,910 预告(HC2018)
2019-08昇腾 910 商用(FP16 256 TFLOPS),MindSpore 同场发布
2019 至 2020实体清单与代工限制重塑路线
2021-09HAMi 仓库创建(前身 k8s-vgpu-scheduler),初期聚焦 NVIDIA
2021 至 2023MindX DL 私有化套件时代,昇腾虚拟化主要经华为云 CCE 等产品化路径交付
2022310P 世代推理产品(300I Duo / 300I Pro)落地
2023910B 家族与 Atlas A2 整机上市
2024-09HAMi v2.4.0:昇腾 310P 支持 GA,加入 NPU 虚拟化自定义配置;同月 ascend-device-plugin 独立仓库创建(2024-09-11,初建于 dynamia-ai 组织)
2024 至 2025华为将 MindX DL 各组件“代码仓归一”为开源的 mind-cluster 仓库
2025-02 / 2025-06HAMi v2.5.0 补齐 910B4 配置;v2.6.0 支持 910B2
2025910C 与 CloudMatrix 384 超节点发布;9 月公布三年路线图
2025-12华为发布 NPU 硬切分参考实践(HDK 25.5.0 基线)
2026-01HAMi v2.8.0:ascend-device-plugin 迁入 Project-HAMi,同时服务 HAMi 与 Volcano;Volcano v1.14.0 原生集成两种 vNPU 模式(PR #4656、#4717)
2026-05HAMi v2.9.0:HAMi-core 用户态虚拟化上线,增加 Ascendxxx-core 资源与 910C SuperPod 模块对分配
2026 年华为发布 vCANN-RT 软切分参考实践;Volcano 1.16(alpha)为 HAMi 模式补上软切分调度支持
2026-08310P3 真机全链路验证源码编译部署(HAMi 博客与实验 13)

三条曲线的成熟度判断:

  • 驱动硬切分最成熟,经由 CCE 与 MindX DL 商用多年,参考实践只是把既有能力文档化。短板是芯片与场景覆盖(仅推理系列)以及模板粒度固定。
  • vCANN-RT 最新也最不成熟,参考实践定位非商用,且绑定 MindCluster 26.0.0 与 openEuler 环境。
  • HAMi 路径介于两者之间:模板模式与华为路径同源同强度;HAMi-core 软切分已真机验证,但依赖 Volcano 1.16(尚未正式发布)且 ARM-only。

支持程度对比

把三条路径放回本书的决策轴:

决策轴驱动硬切分(模板)vCANN-RT 软切分HAMi 软切分(hami-core)
资源单位离散模板(核数、显存、编解码引擎组合)连续:算力 1%、显存 1MB连续:任意显存 MB,算力按比例
隔离强度强,驱动级硬件分区软件拦截,时间片调度软件拦截,时间片调度
性能可预测性中(elastic 策略下依赖邻居负载)
重配置成本高,创建或销毁 vNPU 是驱动级操作低,改配额即可低,改 Pod 申请即可
芯片覆盖310P3、910B4 代推理系列,仅推理300I A2、800I A2310P、910A/B2/B3/B4/C
算力平台无限制ARM仅 ARM
依赖栈Ascend Docker Runtime 与驱动mind-cluster 26.0.0、openEuler 组件ascend-device-plugin 与 Ascend Docker Runtime
监控整卡粒度(npu-smi)enpu-monitor插件内嵌 Prometheus 端点(:9395)
商用许可随驱动与 CCE 商用参考实践声明非商用Apache 2.0 开源

使用场景选型

结合决策轴与支持矩阵给出可操作的建议:

  1. 生产推理多租户,隔离优先:选驱动硬切分。它有最强的边界与最长的商用历史。已有华为栈的集群直接走 mind-cluster 加 Volcano MindCluster 模式(或 CCE);模板粒度够用就不必引入软切分。注意先对照支持矩阵确认你的卡是 310P 或 910B4 推理形态。
  2. 教育实训与高倍超卖:vCANN-RT 是华为官方为此场景设计的答案,1% 算力粒度和 63 容器每卡的上限远超模板切分。接受其平台绑定与非商用声明的前提下可用。
  3. 异构集群统一管理,或需要任意显存粒度:HAMi 路径。一个调度器同时治理 NVIDIA 与昇腾,软切分可以精确申请 8192MB 这类非模板值。接受其较新的成熟度曲线。
  4. 已被 Volcano 约束的批量调度场景:两种模式都可与 gang 调度和队列组合。芯片是 310 系列且要强隔离选 MindCluster 模式;要 910 系列覆盖、binpack 共卡或软切分选 HAMi 模式。
  5. 训练集群:认清现实,数据平面没有切分选项。多租户靠整卡分配加队列配额(Volcano 队列、Kueue)解决,这正是控制面几章的主题。

一个务实的混合策略同样成立:核心付费推理流量跑硬切分保隔离,内部弹性与开发测试跑 HAMi 软切分保利用率,两者可以在同一集群不同节点池并存(注意一个节点同一时间只被一条设备插件路径管理)。

开放问题

  • 训练场景仍然缺席:三条路径都只覆盖推理。训练卡的多租户目前只有整卡分配加调度层配额(队列、gang),没有数据平面切分选项。
  • 两套软切分长期并存:vCANN-RT 与 libvnpu 机制同构、生态独立,是否同源没有公开说明。用户面临的是事实上的双栈,监控、配置与升级路径互不兼容。
  • Volcano 1.16 尚未发布:HAMi 模式的软切分调度依赖 1.16,当前只能用 alpha chart 或源码编译(实验 13 采用后者),生产采用需等正式发布。
  • MindCluster 模式覆盖窄:仅 310 系列,910 系列用户在 Volcano 里实际只有 HAMi 模式可选。
  • 实现细节的坑:HAMi ascend-device-plugin v1.3.1 不注册 -core 扩展资源、libvnpu 版本必须与驱动匹配(不匹配的表现是 npu-smi 卡死而非报错),这类问题在实验 13 的踩坑记录里有完整清单。

总结

昇腾是国产算力中谱系最完整、虚拟化路径最多的一条生态:芯片上从 2018 年的 310/910 演进到 2025 年的 910C 超节点,架构上用达芬奇的 Cube 矩阵引擎走领域专用路线,与 NVIDIA 的 SIMT 加 CUDA 生态形成从硬件到软件栈的全面差异。这些差异直接决定了 vNPU 的切分维度(AI Core、AI CPU、显存、DVPP)与软切分的拦截对象(CANN 而非 CUDA)。

三路径格局则是数据平面谱系的一次完整重演:驱动硬切分对应 MIG 的位置(强隔离、离散单位、高重配置成本),vCANN-RT 与 HAMi 软切分共同对应 HAMi 式运行时拦截的位置(连续粒度、低重配置成本、软件隔离)。选型因此可以完全复用谱系框架的判断方式:先问隔离边界要放哪里,再问粒度与重配置频率,最后才是生态与许可。

对平台工程师的实际建议:不要把“昇腾支持 vNPU”当作一个开关来评估,而是对照支持矩阵把它拆成“我这代芯片加这三条路径”分别评估。华为官方路径胜在边界与商用历史,HAMi 路径胜在异构统一治理与粒度自由,vCANN-RT 胜在教育场景的超卖倍数。真要做决策时,用与本书实验章一致的验收方法(容器内设备视图、越界分配行为、监控指标)去验证你选的那条路径,而不是依赖任何一方的宣传材料。

参考资料

创建于 2026/08/15 更新于 2026/08/15 8844 字 阅读约 18 分钟