Dynamia ppu-vgpu-device-plugin Chart 0.0.1
Release date: 2026-07-14
| Version | Previous | This release |
|---|---|---|
| Chart | — (first Chart release) | 0.0.1 |
| appVersion | — | 1.0.2 |
This is the first PPU device-plugin Chart release. It brings the plugin, monitor, device configuration, and access permissions under Helm management. Plugin and monitor default to ghcr.io/dynamia-ai/ppu-device-plugin:v1.0.2. The application capabilities below are included in this first Chart; this does not mean that all of them were first introduced in application 1.0.2.
HAMi Enterprise compatibility
| Feature or use case | Minimum usable HAMi Enterprise version | Compatibility requirements and deployment conclusion |
|---|---|---|
| PPU scheduling and memory/compute partitioning | v2.9.0-rc2 | The first HAMi Enterprise release that supports this PPU plugin. Existing deployments with working compatibility can adopt this Chart without upgrading Enterprise. |
This release does not include per-container authorization delivery, monitor renewal, or runtime-library authorization checks. When upgrading to Chart 0.0.2, follow that release's authorization-migration requirements.
Changes
Chart changes
The first Helm Chart release manages the following components:
- Device-plugin DaemonSet to register PPU resources with kubelet, read scheduler allocation results, and prepare device and runtime-library mounts for containers.
- Monitor DaemonSet and metrics Service, enabled by default; plugin and monitor share the same image configuration.
- Device ConfigMap, two ServiceAccounts, ClusterRole, and ClusterRoleBinding. The Chart can create the device configuration or refer to an existing ConfigMap.
Key defaults are listed below; verify them against the target deployment before installation.
| Setting or object | Initial default and meaning |
|---|---|
| Kubernetes version declaration | >=1.20.0-0; installation constraint declared by the Chart |
| Namespace | namespaceOverride: hami-system; this value determines the default resource namespace |
| Deployment nodes | nodeSelector.alibabappu: "on" |
| Plugin and monitor | plugin.enabled: true, monitor.enabled: true |
| Device configuration | config.create: true; creates ppu-vgpu-device-plugin-config by default |
| Resource count, memory, and compute names | alibaba.com/ppu, alibaba.com/ppu-memory, alibaba.com/gpu-core |
| Virtual devices per card | config.data.alibaba.deviceSplitCount: 2 |
| Memory and compute scaling factors | deviceMemoryScaling: 1.0, deviceCoreScaling: 1.0, under config.data.alibaba |
| Monitor Service | NodePort; Service port and NodePort are both 31992, target container port is 9394 |
| Default resource names | Plugin: ppu-vgpu-device-plugin; monitor and Service: ppu-vgpu-device-plugin-monitor |
When image.tag is empty, templates select v1.0.2 from appVersion; explicit image.repository and image.tag values override the defaults. The monitor Service provides a metrics endpoint, but the Chart does not create a Prometheus ServiceMonitor; configure the scraper separately.
Bundled application capabilities
- Discovers PPUs on nodes and reports device count, memory, compute, and device identity. Registers virtual devices per physical card according to configuration so multiple workloads can request shared resources.
- Works with HAMi Enterprise allocation results to prepare PPU device files, PPU-HAMi-core, and resource-limit environment variables for workload containers, enforcing memory and compute limits from requested values. Resource names use the fields above, including
alibaba.com/gpu-corefor compute. - The monitor reads device and container shared state and exposes metrics. The initial monitor does not renew the container authorization files introduced in later releases.
These capabilities require a working PPU driver, corresponding device files, and a compatible scheduler on the nodes. Virtual devices per card control sharing and do not add physical capacity.
Upgrade guidance
There is no previous Chart. This section applies to first-time installation or adopting the Chart when a plugin or monitor is already running from manual manifests.
Fix numeric argument quoting before first installation
The original Chart renders numeric plugin arguments with extra quotation marks, which are passed as part of the argument. For example:
--device-split-count="2"
--device-memory-scaling="1"
This causes the corresponding numeric arguments to fail parsing. If you must deploy this release, use a controlled Chart copy or Helm post-processing manifest to remove the quotes around the numeric values, yielding --device-split-count=2 and --device-memory-scaling=1; apply the same correction to custom values. Changing the values' data types alone does not remove the quotes added by the template. This issue is fixed in Chart 0.0.2, which also has authorization-migration requirements to follow if you upgrade.
Verify deployment configuration
- Before installation, confirm the target namespace matches
namespaceOverride, target nodes have labelalibabappu=on, and the PPU driver and device files are ready. The Chart creates RuntimeClass usingnode.k8s.io/v1; the cluster must serve this API. The plugin uses privileged containers, host networking, and hostPath mounts, so node policies must permit them. - With external device configuration, set
config.create: falseandconfig.existingConfigMapName, and prepare a ConfigMap in the same namespace with data keydevice-config.yaml. The plugin reads itsalibabasettings;config.datadoes not update an external object. Resource names must match the scheduler. - This release's templates also derive some startup arguments from
config.data.alibaba. Keep these values consistent with an external ConfigMap even when referencing it, and correct the argument quoting described above. The plugin reports device split and scaling; Enterprise configuration controls the scheduler's default requests and policy. - Configure the monitor Service according to the collection method and confirm NodePort
31992is unused. Check the actual scrape target; a Ready monitor Pod alone does not show that metrics are integrated.
Migrate from manual manifests
This is the first Chart, so it can be used for a first Helm-managed deployment. If the plugin or monitor currently runs from manual YAML, first check resource names, namespace, RBAC, device configuration, and host directories. Then plan for the old deployment to exit and Helm to take over, avoiding two plugins registering the same resource on a node at the same time. Do not directly overwrite or delete host runtime libraries or shared state still used by workloads.
After migration, check the actual plugin and monitor images and logs, node resource registration, and allocation, device visibility, memory limits, and compute limits for a new workload. If changing images, mounts, or runtime libraries as well, separately schedule workload recreation and validation; do not treat those changes as merely switching Helm management.
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.0.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 |
|---|---|---|---|
| commonAnnotations | object | {} | |
| commonLabels | object | {} | |
| config.create | bool | true | |
| config.data.alibaba.defaultCores | int | 0 | |
| config.data.alibaba.defaultGPUNum | int | 1 | |
| config.data.alibaba.defaultMemory | int | 0 | |
| config.data.alibaba.deviceCoreScaling | float | 1 | |
| config.data.alibaba.deviceMemoryScaling | float | 1 | |
| config.data.alibaba.deviceSplitCount | int | 2 | |
| config.data.alibaba.gpuCorePolicy | string | "default" | |
| config.data.alibaba.memoryFactor | int | 1 | |
| config.data.alibaba.overwriteEnv | bool | false | |
| config.data.alibaba.resourceCoreName | string | "alibaba.com/gpu-core" | |
| config.data.alibaba.resourceCountName | string | "alibaba.com/ppu" | |
| config.data.alibaba.resourceMemoryName | string | "alibaba.com/ppu-memory" | |
| config.data.alibaba.resourceMemoryPercentageName | string | "alibaba.com/ppu-memory-percentage" | |
| config.data.alibaba.runtimeClassName | string | "" | |
| config.existingConfigMapName | string | "" | |
| fullnameOverride | string | "" | |
| image.pullPolicy | string | "IfNotPresent" | |
| image.pullSecrets | list | [] | |
| image.repository | string | "ghcr.io/dynamia-ai/ppu-device-plugin" | |
| image.tag | string | "" | |
| monitor.enabled | bool | true | |
| monitor.resources | object | {} | |
| monitor.service.enabled | bool | true | |
| monitor.service.nodePort | int | 31992 | |
| monitor.service.port | int | 31992 | |
| monitor.service.type | string | "NodePort" | |
| nameOverride | string | "" | |
| namespaceOverride | string | "hami-system" | |
| nodeSelector.alibabappu | string | "on" | |
| plugin.enabled | bool | true | |
| plugin.resources.limits.cpu | string | "500m" | |
| plugin.resources.limits.memory | string | "512Mi" | |
| plugin.resources.requests.cpu | string | "100m" | |
| plugin.resources.requests.memory | string | "128Mi" | |
| priorityClassName | string | "system-node-critical" | |
| tolerations[0].key | string | "CriticalAddonsOnly" | |
| tolerations[0].operator | string | "Exists" | |
| tolerations[1].effect | string | "NoSchedule" | |
| tolerations[1].operator | string | "Exists" |