volcano-sh/volcano

A Cloud Native Batch System (Project under CNCF)

Volcano – AI/ML、ビッグデータ、HPC向けクラウドネイティブバッチスケジューラ

何であるか – VolcanoはKubernetesネイティブなバッチジョブスケジューラであり、デフォルトのkube-schedulerに高スループット・高性能ワークロード向けの豊富な機能を拡張しています。AI/MLトレーニング、ディープラーニング、ゲノミクス、Spark/Flinkジョブ、MPI/Horovod、およびその他の「ビッグデータ」またはHPCワークロードをKubernetesクラスタ上で実行するために設計されています。

なぜ重要か – 標準的なKubernetesスケジューリングはレイテンシに敏感なサービスに最適化されていますが、ギャングスケジューリング、リソースパッキング、またはトポロジーアウェアな配置が必要な大規模で並列なGPU重視ジョブには不向きです。Volcanoはこれらの機能を追加しつつ、Kubernetes APIおよびCRDと完全に互換性を持ち、AIトレーニングパイプライン、データ処理ジョブ、科学的シミュレーションをスケールして実行できます。


コア機能

  • ギャングスケジューリング – 分散ジョブのすべてのポッドが同時に開始されることを保証し、MPI、TensorFlow、PyTorch、Horovodなどでのデッドロックを防止します。
  • リソースアウェアな配置 – GPU、CPU、メモリ、カスタムリソースをサポート。トポロジーアウェアおよびネットワークアウェアなスケジューリングにより、フラグメンテーションを低減し、パフォーマンスを向上します。
  • ジョブライフサイクル管理 – オリジナルの Job および JobSet CRD、組み込みのリトライ、バックオフ、ジョブ完了追跡機能を備えています。
  • 優先度とプリエンプション – 高優先度のトレーニングジョブが低優先度のバッチジョブをプリエンプトできます。
  • 拡張可能なプラグイン – スケジューラ、アドミッション、コントローラプラグインは特定のフレームワーク向けにカスタマイズ可能です。
  • モニタリングとUI – オプションのPrometheusメトリクス、Grafanaダッシュボード、およびジョブの可視化に使えるWebダッシュボードを提供します。

エコシステム統合(一部)

フレームワーク / ツール 統合ポイント
Spark K8s上のSpark用スケジューラバックエンド、Spark Operatorサポート
Flink Flink-on-K8s Operator用カスタムスケジューラ
Ray / KubeRay Rayクラスタ用の直接Volcanoバックエンド
TensorFlow / PyTorch / MXNet / PaddlePaddle / MindSpore 専用プラグインと例のマニフェスト
Kubeflow Trainer / Arena Volcanoベースのジョブ定義
MPI / Horovod 分散MPIジョブ用ギャングスケジューリング
Argo Argoワークフロー用のリソーススケジューラとしてのVolcano
Cromwell, Kthena, Grove, LeaderWorkerSet 複数のワークフローエンジン用バックエンドサポート

一般的なユースケース(プロジェクトが強調する点)

  • GPUクラスタ上で大規模なAIモデルトレーニング(例:LLMの事前学習、知識蒸留)。
  • SparkまたはFlinkを用いた分散データ処理パイプライン。
  • 多数のCPUコアと高速インターコネクトを必要とするバイオインフォマティクス/ゲノミクスパイプライン。
  • メテオロジー、金融、製造業におけるHPCシミュレーションで、ノードレベルでの密接な連携が必要なケース。
  • AIワークロードとレイテンシに敏感なサービスが共存するマルチテナントクラスタ。

クイックスタート(Kubernetesクラスタへのインストール)

  1. 前提条件 – CRDサポート付きKubernetes 1.12+。
  2. ワンライナーインストール(x86_64およびarm64で動作):
    kubectl apply -f https://raw.githubusercontent.com/volcano-sh/volcano/master/installer/volcano-development.yaml
    
    これにより、アドミッションコントローラ、コントローラマネージャ、スケジューラポッドを含む volcano-system 名前空間が作成されます。
  3. オプションのHelmインストール – 公式チャートを追加してインストール:
    helm repo add volcano-sh https://volcano-sh.github.io/helm-charts
    helm install volcano volcano-sh/volcano -n volcano-system --create-namespace
    
  4. モニタリングの追加(ダッシュボードが必要な場合):
    kubectl create -f installer/volcano-monitoring.yaml
    
  5. UIの探索 – ジョブ、リソース、イベントを表示するWeb UIについては、Volcano Dashboardリポジトリを参照してください。

コミュニティとガバナンス

  • CNCFインキュベーションプロジェクト – クラウドネイティブコンピューティングファウンデーション下で運営。
  • Slackとメーリングリスト – CNCF Slackのアクティブな #volcano チャンネル、Googleグループメーリングリスト、中国語ユーザー向けのWeChatグループ。
  • 定期的なコミュニティミーティング – 公開された議題と議事録、KubeCon(2019–2026)のトーク録画(AI、ビッグデータ、HPCユースケースをカバー)。
  • 貢献方法 – 数百人の貢献者。Travis、Go Report Card、OpenSSFスコアカードバッジによるCIにより、健全なコード品質が保証されています。

TL;DR

Volcanoは、標準のKubernetesクラスタをAI/ML、ビッグデータ、HPCワークロードに最適化されたプロダクショングレードのバッチジョブエンジンに変換します。ギャングスケジューリング、GPUアウェアな配置、優先度/プリエンプション、主要AIフレームワークとの深い統合を提供しつつ、Kubernetes APIおよびエコシステムに完全にネイティブです。

関連

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