mrkeyoor.com_
Tue 08 Sept 16:08 UTC
Self-Hostedevaluationupdated 08 Sept 2026

HAMi review

HAMi is Kubernetes middleware for sharing GPUs and other AI accelerators, enforcing supported memory or compute limits, and placing workloads with device-aware policies. It combines a webhook, scheduler extender, device plugins, and in-container components so applications can request accelerator resources through ordinary pod specifications.

Verdict

Our HAMi build succeeded in 178 seconds, but its Go run finished with 80 passes and 7 failures out of 87, so adoption should begin in a disposable cluster rather than a production GPU pool. Use HAMi when accelerator sharing and mixed-vendor scheduling are expensive enough to justify another cluster control layer. Do not treat its in-container quotas as protection from hostile workloads; the project's own security policy limits that promise to cooperative tenants.

We ran it

Lab card: what happened when we ran HAMiScreenshot of HAMi (project-hami.io)
Install✓ · 31s234 packages
Build✓ · 178s
Tests✗ · 72s80 passed · 7 failed of 87 (go test)
Repo553 files~109,220 lines of source · 8 MB · 18 CI workflows · tests dir

Answers from our run

Does HAMi build from source?

Dependencies installed in 31 seconds (234 packages), and the build succeeded in 178 seconds. We cloned commit 4434305 into a clean Debian container with 3 CPUs and no project-specific setup.

Do HAMi's tests pass?

Not all of them: 80 of 87 passed and 7 failed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use HAMi?

Hostile multi-tenant clusters that need the GPU quota mechanism to be a hard security boundary: HAMi's security policy says privileged workloads can bypass in-container hooks.

What are the alternatives to HAMi?

NVIDIA Kubernetes device plugin, NVIDIA GPU Operator, Volcano. Our HAMi build succeeded in 178 seconds, but its Go run finished with 80 passes and 7 failures out of 87, so adoption should begin in a disposable cluster rather than a production GPU pool.

Setup2/5Build passed, but 7 of 87 Go test targets failed
Docs5/5Clear architecture, prerequisites, policies, and security limits
Community5/54,534 stars with same-day commits and active issue replies
Maturity4/5CNCF Incubating and v2.10.0, with hardware-specific edges

Who it’s for

Kubernetes platform teams trying to place more inference, training, or notebook workloads on an accelerator fleet.
Operators managing NVIDIA plus other vendor devices through one scheduling layer.
Clusters that need binpack, spread, topology-aware, or dynamic MIG placement policies.
Trusted internal platforms willing to test each hardware, driver, runtime, and workload combination.
Claude Code users who want repository-supplied guidance and GPU troubleshooting skills.

Who it’s NOT for

Hostile multi-tenant clusters that need the GPU quota mechanism to be a hard security boundary: HAMi's security policy says privileged workloads can bypass in-container hooks.
Teams outside Kubernetes or below the documented NVIDIA prerequisites, including Kubernetes 1.23 and NVIDIA driver 440.
Operators expecting identical isolation on every accelerator: the README says capability varies by vendor, model, driver, and hardware generation.
Buyers requiring a green checkout suite before cluster trials: our Go run reported 80 passes and 7 failures out of 87.
Teams expecting Kubernetes DRA components in the main Helm chart: v2.10.0 removed them and points Ascend DRA to a separate driver repository.

Setup reality

Our sandbox installed 234 packages in 31 seconds and built commit 4434305 successfully in 178 seconds. Go tests then failed with exit 1 after 72 seconds: 80 passed and 7 failed out of 87. The log tail names test/e2e, test/e2e/node, and test/e2e/pod among the failures without showing their causes.

A useful deployment needs a Kubernetes cluster, Helm, accelerator nodes, working vendor drivers, a compatible container runtime, and cluster-level access for the chart. The NVIDIA quick start requires Kubernetes 1.23 or newer, driver 440 or newer, nvidia-docker above 2.0, glibc 2.17, and Linux 3.10.

The 8 MB checkout contained 553 files and about 109,220 source lines, with 18 CI workflows and a tests directory. Production behavior depends on hardware backend support. The security policy limits in-container enforcement to cooperative workloads on a trusted cluster.

Version 2.10 schedules shared accelerators through Kubernetes

HAMi v2.10 is a cluster layer for dividing and placing accelerators across pods. A mutating webhook prepares the workload, a scheduler extender filters and scores devices, and device plugins complete allocation on the chosen node. Vendor-specific runtime components can then apply supported memory or compute limits inside the container. Applications keep using Kubernetes resource requests, so platform operators do not have to rewrite each training or inference program.

commit 4434305 is sizable at 553 files and roughly 109,220 source lines, though the clean checkout occupied only 8 MB. The code covers scheduler logic, monitoring, Helm templates, device backends, examples, and end-to-end suites. HAMi lists NVIDIA, Ascend, Cambricon, Hygon, Iluvatar, Kunlunxin, MetaX, Moore Threads, and other device families. That breadth saves platform teams from building a separate scheduler vocabulary for every vendor, but support depth is explicitly hardware-dependent.

The 178-second build ends with 7 failing test targets

Our sandbox installed 234 packages in 31 seconds and compiled the project successfully in 178 seconds. That proves the measured commit can resolve its Go dependencies and build in a fresh golang:1.24-bookworm container with 3 CPUs and 8 GB of RAM. It does not prove that a Helm deployment will work with a particular GPU, driver, runtime, or Kubernetes configuration. A scheduler that builds cleanly can still make a poor placement decision under real cluster state.

The test command exited 1 after 72 seconds, reporting 80 passes and 7 failures out of 87. The supplied tail shows successful utility, client, flag, leader-election, node-lock, and version packages. It then names failures under test/e2e, test/e2e/node, and test/e2e/pod. The tail contains no error explaining those failures, so assigning them to a missing cluster, permissions, timing, or code would be guesswork. The result remains red until a better log proves otherwise.

What happened when we ran it

Our run used commit 4434305 in an unprivileged Debian container with no secrets. Installation succeeded in 31 seconds, the build passed in 178 seconds, and tests failed after 72 seconds with 80 of 87 reported targets passing. The repository scan also found 18 CI workflow files, no Dockerfile at the scanned location, and a tests directory. The 234 installed packages are the only dependency count this review attributes to the setup.

Those numbers describe source mechanics, not a live accelerator trial. Our sandbox did not install HAMi into Kubernetes, attach a GPU, schedule a pod, enforce a memory share, or inspect Prometheus output. We measured no utilization gain, placement quality, workload throughput, or isolation strength. A buyer should replay the failing targets with full logs, then run the chart against the exact server model and container runtime intended for production. The 72-second failure is a release gate, not a performance benchmark.

Kubernetes 1.23 is only the start of the platform contract

The NVIDIA quick start requires Kubernetes 1.23 or newer, an NVIDIA driver at least 440, nvidia-docker above 2.0, glibc 2.17 or newer, Linux 3.10 or newer, and Helm above 3.0. Nodes must be labeled for management, and the NVIDIA runtime must be configured as the default for containerd, Docker, or CRI-O. The Helm chart then installs scheduler and device-plugin components into the cluster, where both must reach a Running state before a sample workload means anything.

Day-two operation includes more than those 6 prerequisites. Teams must own webhook availability, scheduler behavior, device-plugin rollout, certificates, node labels, vendor drivers, runtime configuration, and safe chart upgrades. Metrics are exposed from the scheduler monitor endpoint, whose README default is port 31993, and the project supplies Grafana material plus a separate WebUI. Alerts and rollback policy still belong to the cluster owner.

Cooperative quotas do not isolate hostile tenants

HAMi's security policy draws a useful boundary: in-container enforcement is for cooperative sharing on a trusted cluster. A sufficiently privileged workload may bypass its hook by changing LD_PRELOAD, using a static binary, or attaching with ptrace. That means memory and compute quotas should be treated as scheduling and fairness controls. They are not a substitute for a security boundary between mutually hostile tenants that can change their own process environment or container privileges.

The same caveat appears in the README's device wording. Isolation depends on what each backend, model, driver, and hardware generation supports. Before admitting a device type, run escape, over-allocation, restart, and failure tests for that exact combination. The open issue tracker gives a current example: issue 2974 reports that changing a v2.10.0 node from MIG mode to HAMi-core left the physical GPU in MIG mode even though reported node information changed. Maintainers were replying on September 8, 2026.

Release v2.10.0 expands scheduling and separates DRA

Release v2.10.0 arrived on August 21, 2026. Its notes cover init-container accounting, pod-group handling, dynamic MIG work, a mutex scheduling policy, policy combinations, NUMA alignment, and more device support. The same release removes Dynamic Resource Allocation components from the main HAMi chart and links Ascend DRA to a separate driver project. That split matters for evaluation: installing the primary chart does not deliver every DRA path named elsewhere in the ecosystem.

September 2026 activity supports a serious cluster trial

GitHub showed 4,534 stars, 55 combined issues and pull requests, and a last push on September 8, 2026. That push fixed a scheduler liveness-probe placement in the Helm template, while nearby commits handled image-pull secrets, an Ascend webhook rejection, NVIDIA allocation input, and cached allocations. Issue 2974 received discussion the same day. The latest release is only weeks behind the default branch, so both code and issue activity indicate current maintenance.

HAMi is worth a trial for platform teams whose unused accelerator capacity has a clear cost. The project documents more of its operational and security limits than many infrastructure tools, and the 178-second successful build is a useful starting signal. The trial still needs a disposable cluster, vendor-specific acceptance tests, and a repeat of the 87-target Go run with full failure output.

Alternatives

ProjectWhat it isPick it when
NVIDIA Kubernetes device pluginNVIDIA's device plugin exposes GPUs to Kubernetes with a narrower vendor scope.pick this instead when you use NVIDIA hardware and whole-device allocation is enough.
NVIDIA GPU OperatorAn operator for installing and managing the NVIDIA GPU software stack in clusters.pick this instead when driver and runtime lifecycle are the main problem; HAMi can also coexist with it.
VolcanoA Kubernetes batch system with queues, gang scheduling, and workload-aware placement.pick this instead when batch queues and gang scheduling matter more than fractional device isolation.

What people are saying

  1. [github-trending] Project-HAMi/HAMi

Sources

  1. HAMi README
  2. HAMi v2.10.0 release notes
  3. HAMi security policy
  4. Issue 2974: MIG mode remains enabled after configuration change
  5. HAMi device support matrix
  6. HAMi repository

More self-hosted reviews

FlClash · zulip · mediamtx · toolhive · filebrowser · remux · the whole board →