# project-hami/hami

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/project-hami-hami).**

3,028 stars · 476 forks · Go · apache-2.0

## Links

- GitHub: https://github.com/Project-HAMi/HAMi
- Homepage: https://project-hami.io
- awesome-repositories: https://awesome-repositories.com/repository/project-hami-hami.md

## Topics

`ascend` `cambricon` `cncf` `device-plugin` `gpu-acceleration` `gpu-management` `gpu-shareable` `gpu-virtualization` `hygon` `iluvatar` `kubernetes` `kubernetes-gpu-cluster` `metax` `mthreads` `nvidia` `vgpu` `vgpu-hypervisor`

## Description

HAMi is a hardware orchestration and virtualization system designed to manage accelerators within Kubernetes. It functions as a device plugin that partitions physical hardware into isolated virtual slices, enabling multiple containers to share a single device through enforced memory limits and compute quotas.

The project provides a virtualization manager and a heterogeneous compute scheduler that distributes tasks across diverse accelerator types. It uses packing and topology policies to optimize workload placement and allows for specific hardware targeting using unique device identifiers.

The system includes a monitoring tool that collects real-time memory and core utilization metrics across different hardware vendors, exporting this data via Prometheus-compatible endpoints for cluster health dashboards. Administrative tasks and hardware allocations are managed through a web-based graphical interface.

## Tags

### Operating Systems & Systems Programming

- [GPU Resource Virtualization](https://awesome-repositories.com/f/operating-systems-systems-programming/gpu-resource-virtualization.md) — Partitions physical accelerators into smaller virtual slices to enable efficient sharing across multiple containers.
- [Dynamic Hardware Partitioning](https://awesome-repositories.com/f/operating-systems-systems-programming/gpu-resource-virtualization/dynamic-hardware-partitioning.md) — Partitions physical GPU hardware into isolated virtual slices to allow multiple containers to share the same device. ([source](https://cdn.jsdelivr.net/gh/project-hami/hami@master/README.md))
- [Hardware Device Sharing](https://awesome-repositories.com/f/operating-systems-systems-programming/hardware-device-sharing.md) — Allows multiple concurrent containers to access a single physical device using resource offsets and shared access handles.
- [Hardware Memory Limiters](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/process-and-memory-management/memory-management/allocation-strategies/dynamic-memory-allocation/custom-memory-allocators/explicit-memory-allocators/hardware-memory-limiters.md) — Enforces strict hardware memory limits and allocates capacity via absolute values or percentages to ensure isolation. ([source](https://project-hami.io/docs))
- [Multi-Tenant Hardware Sharing](https://awesome-repositories.com/f/operating-systems-systems-programming/multi-tenant-hardware-sharing.md) — Allows multiple containers simultaneous access to the same hardware devices to increase overall resource utilization. ([source](https://project-hami.io/docs))
- [Device Plugin Virtualization](https://awesome-repositories.com/f/operating-systems-systems-programming/virtualization-emulation/virtual-device-drivers/device-plugin-virtualization.md) — Implements a Kubernetes device plugin to partition physical accelerators into isolated virtual slices for containers.
- [Mixed-Accelerator Orchestration](https://awesome-repositories.com/f/operating-systems-systems-programming/data-center-hardware-offloading/mixed-accelerator-orchestration.md) — Enables running tasks across different types of hardware accelerators within a single unified workflow.
- [Virtualization Management](https://awesome-repositories.com/f/operating-systems-systems-programming/gpu-resource-virtualization/virtualization-management.md) — Provides a graphical interface and backend for partitioning physical hardware into isolated virtual slices.

### Artificial Intelligence & ML

- [Hardware Acceleration Abstractions](https://awesome-repositories.com/f/artificial-intelligence-ml/hardware-acceleration-abstractions.md) — Provides a unified abstraction for scheduling workloads across diverse accelerator pools from different vendors.

### DevOps & Infrastructure

- [Topology-Aware Schedulers](https://awesome-repositories.com/f/devops-infrastructure/control-planes/workload-scheduling/ai-workload-schedulers/topology-aware-schedulers.md) — Assigns tasks to hardware nodes using topology-aware policies to maximize throughput and proximity.
- [GPU Resource Orchestrators](https://awesome-repositories.com/f/devops-infrastructure/gpu-resource-orchestrators.md) — Dynamically manages, partitions, and allocates GPU hardware across shared AI workloads.
- [Device Plugin Integration](https://awesome-repositories.com/f/devops-infrastructure/gpu-resource-orchestrators/kubernetes-orchestrators/device-plugin-integration.md) — Acts as a Kubernetes extension to manage the allocation and partitioning of hardware accelerators.
- [Heterogeneous Device Schedulers](https://awesome-repositories.com/f/devops-infrastructure/job-scheduling/gpu-cluster-job-schedulers/heterogeneous-device-schedulers.md) — Manages workload placement across diverse hardware accelerators using topology and packing policies.
- [Workload Placement Policies](https://awesome-repositories.com/f/devops-infrastructure/workload-placement-policies.md) — Uses packing and topology policies to optimize where containerized workloads are placed on hardware nodes. ([source](https://project-hami.io/))

### Security & Cryptography

- [Multi-Tenant Isolation](https://awesome-repositories.com/f/security-cryptography/multi-tenant-isolation.md) — Enforces strict memory limits and compute quotas to prevent interference between workloads on shared hardware.

### Software Engineering & Architecture

- [Hardware-Level Isolation](https://awesome-repositories.com/f/software-engineering-architecture/execution-control/namespace-isolation/namespace-provisioners/container-isolation/hardware-level-isolation.md) — Enforces strict hardware memory limits at the driver level to provide secure hardware-backed isolation.
- [Compute Core Isolation](https://awesome-repositories.com/f/software-engineering-architecture/execution-control/namespace-isolation/namespace-provisioners/container-isolation/hardware-level-isolation/compute-core-isolation.md) — Separates memory and compute cores on hardware to allow multiple workloads to share a single physical device securely. ([source](https://project-hami.io/docs/userguide/device-supported))

### Development Tools & Productivity

- [Resource Quotas](https://awesome-repositories.com/f/development-tools-productivity/execution-sandboxes/task-sandboxing/resource-quotas.md) — Applies hard memory and compute limits at runtime to prevent interfering workloads in shared environments. ([source](https://project-hami.io/))

### Hardware & IoT

- [Resource Management Interfaces](https://awesome-repositories.com/f/hardware-iot/connectivity-iot/internet-of-things/device-management/web-based/resource-management-interfaces.md) — Provides a web-based graphical interface to administer virtualization environments and hardware allocations. ([source](https://project-hami.github.io/HAMi/))

### System Administration & Monitoring

- [Hardware Performance Monitoring](https://awesome-repositories.com/f/system-administration-monitoring/hardware-performance-monitoring.md) — Collects real-time memory and compute utilization data from various hardware vendors for system dashboards.
- [Hardware Resource Tracking](https://awesome-repositories.com/f/system-administration-monitoring/hardware-resource-tracking.md) — Provides a dedicated endpoint for monitoring the consumption of hardware accelerator resources. ([source](https://cdn.jsdelivr.net/gh/project-hami/hami@master/README.md))
- [Accelerator Device Targeting](https://awesome-repositories.com/f/system-administration-monitoring/hardware-specification-evaluators/accelerator-device-targeting.md) — Provides the ability to target specific accelerators or exact hardware devices using unique identifiers to meet strict requirements. ([source](https://project-hami.io/docs))
- [Hardware Telemetry Collection](https://awesome-repositories.com/f/system-administration-monitoring/metric-collection/hardware-telemetry-collection.md) — Collects real-time memory and core utilization data across hardware vendors and exports it via open standards. ([source](https://project-hami.io/))
- [Accelerator Monitoring](https://awesome-repositories.com/f/system-administration-monitoring/performance-monitoring-tools/accelerator-monitoring.md) — Tracks performance metrics and resource allocation for specialized hardware accelerators across vendors.
- [Prometheus System Metrics Exporters](https://awesome-repositories.com/f/system-administration-monitoring/prometheus-exporters/prometheus-based-metric-exporters/prometheus-system-metrics-exporters.md) — Exposes real-time hardware utilization data via a Prometheus-compatible REST endpoint for monitoring.
