HAMi
September 8, 2026 · View on GitHub
English version | 中文版 | 日本語版
HAMi
AI インフラストラクチャ向け Kubernetes GPU 仮想化およびヘテロジニアスアクセラレータスケジューリング。

HAMi は Heterogeneous AI Computing Virtualization Middleware(異種 AI コンピューティング仮想化ミドルウェア)の略称です。旧称 k8s-vGPU-scheduler。HAMi はプラットフォームチームが Kubernetes ワークロード間で高価な GPU やその他の AI アクセラレータを共有し、デバイスメモリとコンピュートを分離し、アプリケーションコードを変更することなくデバイスアウェアなスケジューリングポリシーで Pod をスケジュールできるようにします。
HAMi は CNCF Incubating および CNCF Landscape プロジェクトであり、CNAI Landscape にも掲載されています。

なぜ HAMi?
AI インフラストラクチャチームは、同じような Kubernetes アクセラレータの問題に直面しています:GPU 全体が小さなジョブに割り当てられ、チームが希少なデバイスを争い、異なるアクセラレータベンダーが異なる運用モデルを提供し、スケジューラがワークロードを効率的に配置するための十分なデバイスコンテキストを持っていません。
HAMi は Kubernetes ネイティブなレイヤーを提供します:
- デバイス共有:メモリ、コア、またはデバイス数によって物理アクセラレータの一部を割り当てます。
- リソース分離:デバイスバックエンドがサポートする場合、ワークロードごとのアクセラレータメモリとコンピュートの制限を強制します。
- デバイスアウェアスケジューリング:トポロジアウェア、binpack、spread、およびデバイス固有のスケジューリングポリシーで Pod を配置します。
- ヘテロジニアス AI クラスター:NVIDIA GPU、NPU、HCU、MLU など、1 つのスケジューリングおよび割り当てワークフローで複数のアクセラレータタイプを管理します。
- アプリケーションの変更不要:標準の Kubernetes リソースリクエストとリミットを引き続き使用します。
- 本番運用:メトリクス、ダッシュボード、WebUI、Helm インストール、コミュニティサポートのデプロイガイダンスを提供します。
ユースケース
- 共有 Kubernetes AI クラスターでの GPU 利用率の向上。
- 同一のアクセラレータプール上でマルチテナントのノートブック、トレーニング、推論ワークロードを実行。
- 公平なデバイス割り当てとクォータ制御を備えたプライベートクラウド AI プラットフォームの構築。
- NVIDIA、Ascend、Cambricon、Hygon、Iluvatar、MetaX、Moore Threads など、複数ベンダーのヘテロジニアスアクセラレータクラスターの運用。
- バッチ AI ワークロード向けに kube-scheduler や Volcano などの Kubernetes スケジューラと HAMi を組み合わせて使用。
仕組み
HAMi は Mutating Webhook、スケジューラエクステンダー、デバイスプラグイン、およびデバイス固有のコンテナ内仮想化コンポーネントで構成されています。
Pod サブミッション
-> HAMi Mutating Webhook
-> HAMi スケジューラ filter / score / bind
-> デバイス割り当てを Pod アノテーションに書き込み
-> デバイスプラグイン Allocate()
-> コンテナランタイム環境
-> HAMi モニターおよびメトリクス
デバイス仮想化
HAMi はワークロードが必要なアクセラレータリソースのみをリクエストできるようにします。例えば、次の Pod は 3 GiB の GPU メモリを持つ物理 NVIDIA GPU を 1 つリクエストします:
resources:
limits:
nvidia.com/gpu: 1
nvidia.com/gpumem: 3000
ワークロードはコンテナ内で割り当てられたデバイスリソースを確認し、HAMi がスケジューリング、割り当て、分離を調整します。

注意:
- HAMi のインストール後、ノードに登録される
nvidia.com/gpuの値はデフォルトで vGPU の数になります。- Pod でリソースをリクエストする場合、
nvidia.com/gpuは現在の Pod が必要とする物理 GPU の数を指します。
サポートされているデバイス
HAMi は GPU、NPU、HCU、MLU、GCU、XPU など、複数のヘテロジニアスアクセラレータバックエンドをサポートしています。デバイスの機能はベンダー、モデル、ドライバー、ハードウェア世代によって異なります。
最新のサポートマトリクスについては、HAMi サポートデバイスページを参照してください。
クイックスタート
前提条件
NVIDIA デバイスプラグインを使用する場合:
- NVIDIA ドライバー >= 440
nvidia-dockerバージョン > 2.0- NVIDIA が containerd、Docker、または CRI-O のデフォルトランタイムとして設定されていること
- Kubernetes >= 1.23
- glibc >= 2.17
- Linux カーネル >= 3.10
- Helm > 3.0
Helm でインストール
HAMi が管理できるように GPU ノードにラベルを付けます:
kubectl label nodes <node-name> gpu=on
HAMi Helm リポジトリを追加します:
helm repo add hami-charts https://project-hami.github.io/HAMi/
helm repo update
HAMi をインストールします:
helm install hami hami-charts/hami -n kube-system
スケジューラとデバイスプラグインが実行されていることを確認します:
kubectl get pods -n kube-system
hami-device-plugin と hami-scheduler が両方とも Running になったら、サンプルワークロードをデプロイします:
kubectl apply -f examples/nvidia/default_use.yaml
完全なインストールガイドと設定オプションについては、HAMi ドキュメントを参照してください。
スケジューリングポリシー
HAMi は AI ワークロード向けに複数のスケジューリングモードをサポートしています:
- binpack:少数のノードまたはデバイスにワークロードをパックしてリソース利用率を向上させます。
- spread:ノードまたはデバイス間でワークロードを分散させ、競合を減らします。
- トポロジアウェアスケジューリング:サポートされている場合、GPU トポロジに基づいてデバイスの組み合わせを選択します。
- ダイナミック MIG:対応するカードとモードに対して NVIDIA MIG インスタンスを動的に作成および割り当てます。
HAMi はデフォルトの Kubernetes スケジューラパスと互換性があり、バッチ指向の AI ワークロードに Volcano を組み合わせて使用することもできます。現在のスケジューラ統合ガイドについては、HAMi Web サイトを参照してください。
オブザーバビリティと WebUI
HAMi はクラスタのアクセラレータ使用状況を監視するためのメトリクスを公開します。インストール後、スケジューラのモニターエンドポイントからメトリクスにアクセスできます:
http://<scheduler-ip>:<monitor-port>/metrics
デフォルトのモニターポートは 31993 です。Helm の値で --set scheduler.service.monitorPort=<port> のように変更できます。
HAMi は他にも以下を提供します:
- HAMi-WebUI:ビジュアルクラスタおよびデバイス管理。
- Grafana ダッシュボードの例:アクセラレータモニタリング用。
- ベンチマーク素材:ワークロードの動作とスケジューリング効果の評価用。

エコシステム連携
| プロジェクト | 連携内容 |
|---|---|
| vLLM | GPU メモリ上限付きで推論サーバーを実行し、複数モデルで 1 枚の GPU を共有 |
| Volcano | GPU ワークロード向けのギャングスケジューリングおよびキューベースのバッチスケジューリング |
| Kueue | ResourceTransformation を通じて HAMi リソースを Kueue に公開し、バッチジョブのキューイングを実現 |
| Prometheus | HAMi はコンテナごとの GPU メトリクス(メモリ使用量・利用率)を公開 |
| Grafana | HAMi GPU メトリクスを可視化するための事前構築済みダッシュボードを提供 |
| NVIDIA GPU Operator | HAMi がスケジューリング、GPU Operator がドライバー管理を担う構成で共存可能 |
ロードマップ、ガバナンス、コントリビューション
HAMi はメンテナーとコントリビューターによって管理されています。ガバナンスについては、HAMi コミュニティリポジトリを参照してください。
コード、ドキュメント、テスト、デバイスバックエンドの改善に貢献するには、CONTRIBUTING.md をお読みください。
コミュニティ
HAMi コミュニティは、ユーザー、コントリビューター、ハードウェアベンダー、Kubernetes ベースの AI インフラストラクチャを構築するプラットフォームチームに開かれています。
- Web サイト:project-hami.io
- Discord:HAMi Discord に参加(推奨)
- Slack:CNCF Slack #hami-dev
- メーリングリスト:hami-project
- ミーティングノートとアジェンダ
- 中国語コミュニティミーティング:毎週金曜日 16:00 UTC+8、ミーティングリンク
- 英語コミュニティミーティング:隔週水曜日 16:00 UTC+8、ミーティングリンク
講演と参考資料
| イベント | 講演 |
|---|---|
| 中国クラウドコンピューティング・インフラ開発者会議、北京 2024 | k8s クラスターにおける異種 AI インフラストラクチャの解放 |
| KubeDay Japan 2024 | Unlocking Heterogeneous AI Infrastructure K8s Cluster: Leveraging the Power of HAMi |
| KubeCon + AI_dev Open Source GenAI & ML Summit China 2024 | Is Your GPU Really Working Efficiently in the Data Center? N Ways to Improve GPU Usage |
| KubeCon + AI_dev Open Source GenAI & ML Summit China 2024 | Unlocking Heterogeneous AI Infrastructure K8s Cluster |
| KubeCon Europe 2024 | Cloud Native Batch Computing with Volcano: Updates and Future |
ライセンス
HAMi は Apache License 2.0 の下でライセンスされています。詳細は LICENSE を参照してください。
Copyright Contributors to HAMi, established as HAMi a Series of LF Projects, LLC.