Dynamia ascend-device-plugin Chart 0.2.1
Release date: 2026-09-04
| Version | Previous | This release |
|---|---|---|
| Chart | 0.2.0 | 0.2.1 |
| appVersion | v1.4.0 | v1.4.1 |
HAMi Enterprise compatibility
| Feature or mode | Minimum usable HAMi Enterprise version | Compatibility requirements and upgrade conclusion |
|---|---|---|
| Template-based hard partitioning with shared Enterprise device configuration | v2.9.0-rc0 | Retains the shared device configuration and template allocation interface; this release does not require an Enterprise upgrade. |
hami-core static soft partitioning | v2.9.0-rc0 | Explicitly set huawei.com/vnpu-mode: hami-core. Ensure the PostStart hook injected by older schedulers can run successfully, or that a valid workload-supplied PostStart prevents injection. With these conditions met, this plugin upgrade does not require an Enterprise upgrade. |
| Static soft partitioning without the legacy PostStart hook | v2.10.0-r2 | This version removes the legacy hook. Upgrade Enterprise first if the container cannot run the hook and does not provide a custom PostStart. |
Changes
Application changes
- [Enterprise feature] Bundled libvnpu v1.4.1 performs memory-limit checks and usage accounting per device. When a container uses multiple NPUs, each card's usage is tracked separately; freed memory is returned to the originally allocated device to avoid charging the wrong card after switching the current device.
rtMemGetInfoExreports virtual memory information for the current device. - [Enterprise feature] Fixes concurrent overwrites in memory accounting by reserving capacity before allocation, rolling it back on allocation failure, and clearing residual per-device usage when a process exits. Background DCMI snapshots no longer overwrite the allocation/free ledger.
- [Enterprise feature] Improves
/etc/ld.so.preloadcompatibility. The runtime library no longer requires CANN runtime and DCMI libraries to be linked when an ordinary program loads; related symbols are resolved only when used. It also removes log initialization and globalsigactioninterception during preload. - [Enterprise feature] Memory queries such as
npu-smi infoin a container use a read-only shared-memory view. A query does not start the throttling manager thread, initialize CANN runtime, or create state files. Memory still reflects the container limit and tracked usage; compute-utilization queries now pass through the driver result instead of scaling it by the container's compute share. - [Enterprise feature] Plugin monitoring recognizes the local shared-memory layouts of both libvnpu v1.4.0 and v1.4.1, fixing reads of memory usage, process slots, and active worker threads with the new layout. Container totals aggregate per-device counts; per-device usage remains available separately.
Upgrade guidance
- Select Enterprise compatibility based on the existing soft-partitioning startup conditions. This release does not add an interface that requires a universal Enterprise upgrade. An older scheduler injects a
bashstartup command intohami-corecontainers without a PostStart; the hook fails if the container lacksbash. Keep a valid existing PostStart, or upgrade Enterprise tov2.10.0-r2to remove this legacy startup dependency. This limitation predates this plugin release. - Stop affected workloads before updating the soft-partitioning runtime. libvnpu v1.4.1 changes the container-local shared-memory layout. The plugin's ability to read old files does not mean old and new runtimes can share them. Stop soft-partitioned workloads on nodes being upgraded and confirm their processes have exited before updating the plugin. Rolling the plugin alone does not migrate running workloads. Template-based hard partitioning does not use this runtime state.
- Use new container-local state. The default
NPU_LOCAL_SHM_PATH=/hami-vnpu-shmem/vnpu_local_shmemmaps to host path/usr/local/hami-vnpu-core/containers/<Pod UID>_<container name>/vnpu_local_shmem. Recreate soft-partitioned Pods after upgrading so the plugin creates new container directories; do not copy old files into them. IfNPU_LOCAL_SHM_PATH,HOOK_PATH, or mounts are customized, locate files from the actual configuration, confirm all users have exited, then remove the old files or use a new path. Do not remove files still in use. The global shared-memory layout is unchanged; there is no need to clear all of/usr/local/hami-shared-region. - Confirm the runtime library and image are updated. The default image is
ghcr.io/dynamia-ai/ascend-device-plugin:v1.4.1and includes libvnpu v1.4.1. After the plugin starts, confirm that the host/usr/local/hami-vnpu-core/libvnpu.sohas been updated before starting new workloads. Update a customimage.tag; ifimage.digestis set, update it or clear it because the digest takes precedence over the tag. The Chart adds no configuration options.
See the Chart and appVersion mapping or the software center.
Values reference
The following parameter descriptions are taken from the README bundled with the Chart 0.2.1 release package and are preserved as published. Use this version's values.yaml as the source of default configuration.
Expand values table
| Key | Type | Default | Description |
|---|---|---|---|
| config.create | bool | false | Create the bundled device configuration ConfigMap for an installation without HAMi. Leave disabled when HAMi owns the device configuration. |
| config.deviceConfigMapName | string | "hami-scheduler-device" | Name of the device configuration ConfigMap created when config.create=true. |
| config.existingDeviceConfigMapName | string | "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 | "--v=4" | |
| daemonSet.args[3] | string | "--node_config_file" | |
| daemonSet.args[4] | string | "/node-config.yaml" | |
| daemonSet.name | string | "hami-ascend-device-plugin" | Device plugin DaemonSet name. |
| fullnameOverride | string | "" | Override the fully qualified resource name. |
| hamiVnpuCore.enabled | bool | false | Enable hami-vnpu-core in the bundled device configuration when config.create=true. This mode requires the HAMi scheduler. |
| image.digest | string | "" | Optional immutable OCI manifest digest. When set, it takes precedence over image.tag. |
| image.pullPolicy | string | "IfNotPresent" | Kubernetes image pull policy. |
| image.repository | string | "ghcr.io/dynamia-ai/ascend-device-plugin" | Container image repository. |
| image.tag | string | "v1.4.1" | Container image tag. |
| nameOverride | string | "" | Override the chart name used in resource names. |
| nodeConfig | string | "nodes: []" | Per-node hami-vnpu-core configuration written to the node ConfigMap. |
| nodeConfigMap.create | bool | true | Create the per-node configuration ConfigMap. |
| nodeConfigMap.name | string | "hami-device-node-config" | Per-node configuration ConfigMap name. |
| nodeSelector.ascend | string | "on" | Node label value used to schedule the device plugin. |
| rbac.name | string | "hami-ascend" | Name shared by the chart-managed RBAC resources. |
| resources.limits.cpu | string | "500m" | |
| resources.limits.memory | string | "500Mi" | |
| resources.requests.cpu | string | "500m" | |
| resources.requests.memory | string | "500Mi" | |
| runtimeClass.create | bool | true | Create the Ascend RuntimeClass. |
| runtimeClass.handler | string | "ascend" | Container runtime handler used by the RuntimeClass. |
| runtimeClass.name | string | "ascend" | RuntimeClass resource name. |
| serviceAccount.create | bool | true | Create a ServiceAccount for the device plugin. |
| serviceAccount.name | string | "hami-ascend" | ServiceAccount name. |
| vnpuMonitor.enabled | bool | false | Expose device plugin metrics and create optional Prometheus Operator resources. |
| vnpuMonitor.prometheusRule.create | bool | true | Create a PrometheusRule when vnpuMonitor.enabled=true. |
| vnpuMonitor.prometheusRule.groupLabels.vendor | string | "ascend" | |
| vnpuMonitor.prometheusRule.groupName | string | "ascend-vnpu" | Recording-rule group name. |
| vnpuMonitor.prometheusRule.interval | string | "15s" | Recording-rule evaluation interval. |
| vnpuMonitor.prometheusRule.labels.release | string | "prometheus" | |
| vnpuMonitor.prometheusRule.labels.role | string | "recording-rules" | |
| vnpuMonitor.prometheusRule.labels.vendor | string | "ascend" | |
| vnpuMonitor.prometheusRule.name | string | "hami-ascend-vnpu-monitor" | PrometheusRule resource name. |
| vnpuMonitor.prometheusRule.namespace | string | "monitoring" | Namespace for the PrometheusRule. |
| vnpuMonitor.service.name | string | "hami-ascend-device-plugin-metrics" | Headless Service that exposes the device plugin metrics port. |
| vnpuMonitor.serviceMonitor.create | bool | true | Create a ServiceMonitor when vnpuMonitor.enabled=true. |
| vnpuMonitor.serviceMonitor.interval | string | "15s" | Prometheus scrape interval. |
| vnpuMonitor.serviceMonitor.labels.release | string | "prometheus" | |
| vnpuMonitor.serviceMonitor.name | string | "hami-ascend-vnpu-monitor" | ServiceMonitor resource name. |
| vnpuMonitor.serviceMonitor.namespace | string | "monitoring" | Namespace for the ServiceMonitor. |
| vnpuMonitor.serviceMonitor.path | string | "/metrics" | Metrics HTTP path. |