Project-HAMi/HAMi-core

A transparent, in-container GPU resource controller that enforces memory and compute limits by intercepting CUDA calls without application or driver changes.

何を解決するか

HAMi-core はコンテナ内 GPU リソースコントローラーであり、CUDA アプリケーションに対してデバイスメモリおよびコンピューティング利用量(SM利用度)の厳格な制限を設定できるようにします。GPUリソースの断片化と非効率な割り当ての問題を解決し、コンテナ内での GPU リソース仮想化を可能にすることで、単一のアプリケーションが利用可能な GPU メモリやコンピューティングパワーをすべて消費するのを防ぎます。

動作方法

このライブラリは、CUDA Runtime(libcudart.so)と CUDA Driver(libcuda.so)の間の API 呼び出しをハッキング(インターセプト)することで動作します。これらの呼び出しの間に配置されることで、アプリケーションコードや NVIDIA ドライバーの変更なしに、メモリおよびコンピューティング制限を監視・強制できます。

対象ユーザー

このツールは、GPUアクセラレートされたコンテナを管理する開発者やプラットフォームエンジニア向けです。特に、Volcano や広範な HAMi プロジェクトなどのオーケストレーターを使用して共有 GPU リソースを管理している方々に適しています。

特徴

  • アプリケーション変更ゼロ:CUDA アプリケーションのソースコードを変更せずに制限を強制します。
  • メモリ仮想化:コンテナごとに特定の上限を設定できるデバイスメモリの仮想化を実現します。
  • コンピューティング制限:自前実装のタイムシャーディングメカニズムにより、デバイス利用量を制限します。
  • リアルタイム監視:デバイス利用状況を監視する組み込みモニタを備えています。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト