Skip to content

Latest commit

 

History

History
191 lines (125 loc) · 12 KB

README_ja.md

File metadata and controls

191 lines (125 loc) · 12 KB

English version | 中文版 | 日本語版

LICENSE build status Releases OpenSSF Best Practices Go Report Card codecov FOSSA Status docker pulls Contact Me slack discord website

Project-HAMi: 異種AIコンピューティング仮想化ミドルウェア

はじめに

HAMi(旧称「k8s-vGPU-scheduler」)は、Kubernetes用のヘテロジニアスデバイス管理ミドルウェアです。GPU、NPUなどの異なるタイプのヘテロジニアスデバイスを管理し、Pod間でヘテロジニアスデバイスを共有し、デバイスのトポロジーとスケジューリングポリシーに基づいてより良いスケジューリング決定を行うことができます。

HAMiは、異なるヘテロジニアスデバイス間のギャップを埋め、ユーザーがアプリケーションを変更することなく統一されたインターフェースで管理できるようにすることを目指しています。2024年12月現在、HAMiはインターネット、パブリッククラウド、プライベートクラウドだけでなく、金融、証券、エネルギー、通信、教育、製造などのさまざまな垂直産業でも広く採用されています。50以上の企業や機関がエンドユーザーであるだけでなく、アクティブな貢献者でもあります。

cncf_logo

HAMiはCloud Native Computing Foundation(CNCF)のサンドボックス及びlandscapeプロジェクトであり、 CNAI Landscapeプロジェクトでもあります。

デバイス仮想化

HAMiは、デバイス共有とデバイスリソース分離をサポートすることにより、GPUを含むいくつかのヘテロジニアスデバイスにデバイス仮想化を提供します。デバイス仮想化をサポートするデバイスのリストについては、サポートされているデバイスを参照してください。

デバイス共有

  • デバイスコアの使用量を指定することにより、部分的なデバイス割り当てが可能です。
  • デバイスメモリを指定することにより、部分的なデバイス割り当てが可能です。
  • ストリーミングマルチプロセッサに厳格な制限を課します。
  • 既存のプログラムへの変更は不要です。
  • dynamic-mig機能をサポートします。例

デバイスリソース分離

デバイス分離の簡単なデモンストレーション: 次のリソースを持つタスクは、コンテナ内で3000MのデバイスメモリーとGPUを認識します:

      resources:
        limits:
          nvidia.com/gpu: 1 # Podが必要とする物理GPUの数を宣言
          nvidia.com/gpumem: 3000 # 各物理GPUがPodに割り当てる3GのGPUメモリを識別

img

注意:

  1. HAMiをインストールした後、ノードに登録されるnvidia.com/gpuの値はデフォルトでvGPUの数になります。
  2. Pod内でリソースをリクエストする場合、nvidia.com/gpuは現在のPodが必要とする物理GPUの数を指します。

サポートされているデバイス

NVIDIA GPU
Cambricon MLU
HYGON DCU
Iluvatar CoreX GPU
Moore Threads GPU
HUAWEI Ascend NPU
MetaX GPU

アーキテクチャ

HAMiは、統一されたmutatingwebhook、統一されたスケジューラーエクステンダー、異なるデバイスプラグイン、および各ヘテロジニアスAIデバイスのための異なるコンテナ内仮想化技術を含む、いくつかのコンポーネントで構成されています。

クイックスタート

オーケストレーターを選択

kube-scheduler volcano-scheduler

前提条件

NVIDIAデバイスプラグインを実行するための前提条件のリストは以下の通りです:

  • NVIDIA drivers >= 440
  • nvidia-docker version > 2.0
  • containerd/docker/cri-oコンテナランタイムのデフォルトランタイムとしてnvidiaが設定されていること
  • Kubernetes version >= 1.23
  • glibc >= 2.17 & glibc < 2.30
  • kernel version >= 3.10
  • helm > 3.0

インストール

まず、「gpu=on」ラベルを追加して、HAMiでスケジューリングするためにGPUノードにラベルを付けます。このラベルがないと、ノードはスケジューラーで管理できません。

kubectl label nodes {nodeid} gpu=on

helmにリポジトリを追加します

helm repo add hami-charts https://project-hami.github.io/HAMi/

次のコマンドでデプロイします:

helm install hami hami-charts/hami -n kube-system

設定を調整してインストールをカスタマイズします。

次のコマンドでインストールを確認します:

kubectl get pods -n kube-system

hami-device-plugin(旧称vgpu-device-plugin)とhami-scheduler(旧称vgpu-scheduler)の両方のPodがRunning状態であれば、インストールは成功です。こちらの例を試すことができます。

WebUI

HAMi-WebUIはHAMi v2.4以降で利用可能です。

インストールガイドについては、こちらをクリックしてください。

モニタリング

モニタリングはインストール後に自動的に有効になります。次のURLにアクセスしてクラスター情報の概要を取得します:

http://{scheduler ip}:{monitorPort}/metrics

デフォルトのmonitorPortは31993です。他の値はインストール時に--set devicePlugin.service.httpPortを使用して設定できます。

Grafanaダッシュボードの例

注意 タスクを送信する前にノードのステータスは収集されません

注意事項

  • NVIDIAイメージでデバイスプラグインを使用する際にvGPUをリクエストしない場合、マシン上のすべてのGPUがコンテナ内に公開される可能性があります
  • 現在、A100 MIGは「none」および「mixed」モードでのみサポートされています。
  • 「nodeName」フィールドを持つタスクは現時点ではスケジュールできません。代わりに「nodeSelector」を使用してください。

ロードマップ、ガバナンス、コントリビューション

このプロジェクトはメンテナーとコントリビューターのグループによって管理されています。彼らがどのように選ばれ、管理されているかは、ガバナンスドキュメントに概説されています。

コントリビューターになり、HAMiコードの開発に関わることに興味がある場合は、パッチの送信とコントリビューションワークフローの詳細についてCONTRIBUTINGを参照してください。

興味のあることについてはロードマップを参照してください。

ミーティングと連絡先

HAMiコミュニティは、オープンで歓迎的な環境を育むことに取り組んでおり、他のユーザーや開発者と関わるための複数の方法があります。

ご質問がある場合は、以下のチャネルからお気軽にお問い合わせください:

講演と参考資料

リンク
CHINA CLOUD COMPUTING INFRASTRUCTURE DEVELOPER CONFERENCE (Beijing 2024) Unlocking heterogeneous AI infrastructure on k8s clusters 03:06:15から開始
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(EU 2024) Cloud Native Batch Computing with Volcano: Updates and Future

ライセンス

HAMiはApache 2.0ライセンスの下にあります。詳細についてはLICENSEファイルを参照してください。

スター履歴

Star History Chart