跳到主要内容

Dynamia ascend-device-plugin Chart 0.1.0

发布时间:2026-08-04

版本上一版本版
Chart—(首次 Chart 发布)0.1.0
appVersion—v1.3.0

这是 Dynamia Ascend Device Plugin 的首个 Chart 发布,默认交付已有的 v1.3.0 应用。下文说明首版 Chart 及其随附能力;已有手工部署接入 Helm 的操作见升级说明。

HAMi Enterprise 兼容性​

功能或模式最低可用 HAMi Enterprise 版本本版配套要求与升级结论
既有设备和模板的硬切分v2.7.1-rc0配套 2.7/2.8 系列时,插件需使用独立的新格式设备配置,与调度器保持相同设备、资源名及模板;不能直接复用旧格式共享配置。
hami-core 静态软切分v2.9.0-rc0节点启用软切分,工作负载显式设置 huawei.com/vnpu-mode: hami-core 并申请对应显存、算力资源;容器内必须运行独立 limiter。已有自定义 PostStart 时,需自行安排 limiter 启动。

版本变化​

Chart 变化​

  • [开源同步] 提供 Helm 部署入口,管理设备插件 DaemonSet、ServiceAccount、RBAC、RuntimeClass 和节点配置。可通过 values 设置节点选择、资源配置和全局/节点级设备模式。来源:ascend-device-plugin #96。
  • [开源同步] 通过 daemonSet.args 配置完整启动参数列表;本版默认传入设备配置和节点配置两个文件路径。来源:ascend-device-plugin #112。
  • [企业版特性] 适配企业版镜像和配置管理:默认复用已有设备 ConfigMap,由 config.create 明确选择创建或复用;支持通过 image.digest 固定镜像内容,摘要优先于标签。安装时校验 values 的类型和字段,拒绝未声明的顶层键。
配置项默认值含义
image.repository / image.tagghcr.io/dynamia-ai/ascend-device-plugin / v1.3.0默认插件镜像;image.digest 默认为空
nodeSelectorascend: "on"插件部署到带有该标签的节点
config.create / config.existingDeviceConfigMapNamefalse / hami-scheduler-device使用同命名空间的既有设备配置
nodeConfigMap.create / nodeConfigMap.nametrue / hami-device-node-config创建节点配置,初始 nodes: []
hamiVnpuCore.enabledfalse仅影响 config.create=true 时生成的设备配置
runtimeClass.create / runtimeClass.name / runtimeClass.handlertrue / ascend / ascend创建 RuntimeClass 对象;节点仍需预先配置对应运行时

应用变化​

以下为首版 Chart 随附的 v1.3.0 应用能力。

  • [开源同步] 硬切分路径读取统一设备配置和调度器分配结果,将设备可见列表及虚拟化模板传入容器。支持按注解中的容器槽位分别完成分配,并在全部完成后释放节点分配锁。模板选择依赖配套调度器与设备配置。来源:ascend-device-plugin #71、#75。
  • [开源同步] 集成基于 libvnpu.so 和独立 limiter 的软切分,向容器挂载运行库、预加载文件及共享状态,并传入显存额度和计算共享参数。可按全局或指定节点选择模式,节点配置优先;运行时默认按相对权重分配计算份额,不能将申请值视为精确的物理卡利用率硬上限。来源:ascend-device-plugin #61、#67。
  • [开源同步] 在插件启动、重启及周期任务中清理驱动判定为空闲的 vNPU,默认检查间隔为 60 秒。此判断依据设备是否被实际使用;尚未使用 NPU 的已分配工作负载也可能被回收,不能将其等同于仅清理已结束的 Pod。来源:ascend-device-plugin #54。
  • [企业版特性] 使用按容器保存的本地共享状态提供基础监控,在 :9395/metrics 输出 vnpu_* 指标。物理卡指标不依赖软切分状态;容器指标依赖运行库产生的本地状态及其与 Pod 的关联。指标使用限制见升级说明。
  • [企业版特性] 在 fork 后识别子进程并重新建立运行库客户端;部分 DSMI/DCMI 查询返回容器配额视图,供容器内查看对应分配。

升级说明​

本版没有上一 Chart。以下适用于首次安装,或将已有手工部署接入此 Chart。

  • 准备节点运行环境和设备配置。 节点须已有可用的 Ascend 驱动与容器运行时,并匹配 nodeSelector。Chart 默认创建 RuntimeClass 使用 node.k8s.io/v1,集群须提供该 API;创建对象不会安装主机运行时,也不会自动应用到业务 Pod。工作负载需设置有效的 runtimeClassName(默认名称为 ascend),或使用已配置好的对应默认运行时。默认设备 ConfigMap 必须已存在于插件安装的命名空间,数据键为 device-config.yaml。若由 Chart 管理,设置 config.create=true;HAMi 仍管理该对象时应继续复用,避免重复管理。
  • 旧调度器单独提供插件配置。 对 2.7/2.8 系列的既有硬切分部署,保留调度器原来的 vnpus 列表;在独立插件 ConfigMap 中将设备列表放到 vnpus.configs 下,并设置 vnpus.hamiVnpuCore: false。将 config.existingDeviceConfigMapName 指向该独立配置,两端设备、资源名和模板须一致。已有符合条件的独立配置可以保留。
  • 软切分需同时配置节点和工作负载。 该模式要求 Ascend 驱动 >=25.5,并预先为所用设备开启 device-share;本版插件不会自动设置。通过实际设备配置的 vnpus.hamiVnpuCore 或节点配置启用模式,并给 Pod 设置 huawei.com/vnpu-mode: hami-core,申请对应显存、算力资源。默认复用外部 ConfigMap 时,仅修改 hamiVnpuCore.enabled 不会更新该配置。
  • 确保独立 limiter 持续运行。 插件向软切分容器挂载 /hami-vnpu-core/limiter,但不会替容器执行它。Enterprise v2.9.0-rc0 对没有自带 PostStart 的此类容器注入 bash 后台启动命令;镜像须能执行 bash,且 /tmp/limiter_manager.log 可写。已有自定义 PostStart,或配套已移除自动启动钩子的 Enterprise v2.10.0-r2 时,需在自己的启动流程中启动 limiter,并使用插件注入的共享状态路径及配额环境。仅有 Pod Running 不代表启动成功;缺少 limiter 时,运行库会持续等待本地共享状态。
  • 满足软切分容器的动态加载条件。 libvnpu.so 预加载时须能解析 CANN libruntime.so 及其依赖,包含 PostStart 的 bash、limiter 和业务进程启动时。应事先准备库挂载及搜索路径,不能只在业务 entrypoint 已启动后再设置。本版交付的 amd64 运行库和 limiter 要求兼容 GLIBC_2.34 的符号环境,应检查业务镜像,而非只检查插件镜像。首次安装由 limiter 初始化共享状态,无需套用后续版本的状态迁移或清理步骤。
  • 为既有资源明确管理归属。 默认 DaemonSet、RBAC、RuntimeClass 和节点 ConfigMap 使用固定名称。迁入已有部署时,先处理同名资源及其管理方;仅更换 Helm release 名或命名空间不能消除集群级资源冲突。关闭节点 ConfigMap 或 ServiceAccount 的创建后,应确保插件引用的资源已存在;关闭 runtimeClass.create 后,应确认工作负载所选运行时已配置可用。将本 Chart 嵌入父 Chart 时,注意根级 schema 会拒绝 global 等未声明字段。
  • 自行配置指标采集。 本版 Chart 仅声明 9395 容器端口,没有 Service、ServiceMonitor 或 PrometheusRule,也没有 vnpuMonitor.enabled 开关。按现有监控体系采集插件的 PodIP:9395/metrics,或自行建立 Service。端点在硬切分和软切分节点均初始化;容器数据需满足前述软切分状态条件。

配置看板和告警时,保留以下指标边界:

指标或关联信息本版含义与限制
vnpu_vgpu_memory_used_bytes / vnpu_vgpu_memory_limit_bytes来自容器本地状态的显存用量/配额,单位为字节;每容器单条,尚无逐设备明细
vnpu_host_memory_used_bytes通常来自物理卡;存在非零容器汇总时会改用该汇总,不保证始终反映整卡全部用量
vnpu_host_utilization_ratio物理设备 AI Core 利用率,范围 0–100
vnpu_container_device_utilization_ratio实际取首个物理设备的利用率,不代表该容器独占的算力,也不保证对应其所用设备
vnpu_container_last_kernel_elapsed_seconds固定为 0,不能用于判断实际空闲时间
容器的设备 UUID 关联仅解析 huawei.com/Ascend310P 注解的首个 UUID,不能据此获得通用的多卡/多型号容器统计

查看 Chart 与 appVersion 对应关系或软件中心。

Values 说明​

以下参数说明取自 Chart 0.1.0 发布包随附的 README,保留原文。默认配置以该版本的 values.yaml 为准。

展开参数表
KeyTypeDefaultDescription
config.createboolfalseCreate the bundled device configuration ConfigMap for an installation without HAMi. Leave disabled when HAMi owns the device configuration.
config.deviceConfigMapNamestring"hami-scheduler-device"Name of the device configuration ConfigMap created when config.create=true.
config.existingDeviceConfigMapNamestring"hami-scheduler-device"HAMi-managed device configuration ConfigMap to reuse when config.create=false. The ConfigMap must be in the release namespace.
daemonSet.args[0]string"--config_file"
daemonSet.args[1]string"/device-config.yaml"
daemonSet.args[2]string"--node_config_file"
daemonSet.args[3]string"/node-config.yaml"
daemonSet.namestring"hami-ascend-device-plugin"Device plugin DaemonSet name.
fullnameOverridestring""Override the fully qualified resource name.
hamiVnpuCore.enabledboolfalseEnable hami-vnpu-core in the bundled device configuration when config.create=true. This mode requires the HAMi scheduler.
image.digeststring""Optional immutable OCI manifest digest. When set, it takes precedence over image.tag.
image.pullPolicystring"IfNotPresent"Kubernetes image pull policy.
image.repositorystring"ghcr.io/dynamia-ai/ascend-device-plugin"Container image repository.
image.tagstring"v1.3.0"Container image tag.
nameOverridestring""Override the chart name used in resource names.
nodeConfigstring"nodes: []"Per-node hami-vnpu-core configuration written to the node ConfigMap.
nodeConfigMap.createbooltrueCreate the per-node configuration ConfigMap.
nodeConfigMap.namestring"hami-device-node-config"Per-node configuration ConfigMap name.
nodeSelector.ascendstring"on"Node label value used to schedule the device plugin.
rbac.namestring"hami-ascend"Name shared by the chart-managed RBAC resources.
resources.limits.cpustring"500m"
resources.limits.memorystring"500Mi"
resources.requests.cpustring"500m"
resources.requests.memorystring"500Mi"
runtimeClass.createbooltrueCreate the Ascend RuntimeClass.
runtimeClass.handlerstring"ascend"Container runtime handler used by the RuntimeClass.
runtimeClass.namestring"ascend"RuntimeClass resource name.
serviceAccount.createbooltrueCreate a ServiceAccount for the device plugin.
serviceAccount.namestring"hami-ascend"ServiceAccount name.