Volcano コミュニティ v1.8.0 が正式リリースされました

Volcano Community v1.8.0 バージョンが正式にリリースされました。このバージョンには次の新機能が追加されています。

  • vGPU のスケジューリングと分離をサポート

  • vGPU およびユーザー定義リソースのプリエンプションをサポート

  • JobFlow ワークフロー オーケストレーション エンジンを追加しました

  • ノードの負荷を認識したスケジューリングと再スケジューリングは、さまざまな監視システムをサポートします

  • 一般的なサービスをスケジュールする Volcano の機能を最適化する

  • Volcano charts パッケージのリリースとアーカイブを最適化する

vGPU のスケジューリングと分離をサポート

ChatGPT の爆発以来、AI 大型モデルの研究開発が際限なく行われ、さまざまなタイプの AI 大型モデルも次々と発表されていますが、その膨大なトレーニング タスクには多くの計算能力が必要となるため、供給はGPUを核とした計算能力の向上が、大型モデル産業の発展の鍵となっています。実際の利用シナリオでは、ユーザーは、GPU リソース使用時のリソース使用率の低さやリソース割り当ての柔軟性の低さなどの問題点を抱えており、ビジネス ニーズを満たすために冗長な異種コンピューティング能力を大量に購入する必要があり、異種コンピューティング能力自体が高価です。企業の発展は大きな負担をもたらしました。

バージョン 1.8 以降、Volcano は共有可能なデバイス (GPU、NPU、FPGA...) 用の抽象的な一般フレームワークを提供し、開発者はこのフレームワークに基づいて複数のタイプの共有デバイスをカスタマイズできます。現在、Volcano はこのフレームワークに基づいて実装されています GPU 仮想化機能、サポート GPU デバイス多重化、リソース分離およびその他の機能の詳細は次のとおりです。

  • GPU 共有: 各タスクは GPU カードの一部のリソースに適用でき、GPU カードは複数のタスク間で共有できます。

  • デバイス メモリ制御: GPU は、デバイス メモリ (例: 3000M) に従って割り当てたり、比例して割り当てたり (例: 50%) して、GPU 仮想化リソース分離機能を実現できます。

vGPU の詳細については、以下を参照してください。

vGPU およびユーザー定義リソースのプリエンプションをサポート

現在、Volcano は、CPU、メモリ、その他の基本的なリソースのプリエンプション機能をサポートしています。GPU リソースと、Volcano フレームワークに基づくユーザーの二次開発およびスケジューリング プラグイン、および自己管理リソース (NPU、ネットワーク リソースなど) 、プリエンプション機能はまだ十分にサポートされていません。

バージョン 1.8 では、Volcano はノード フィルタリング関連の処理 (PredicateFn コールバック関数) をリファクタリングし、返された結果に Status タイプを追加しました。これは、現在のノードがスケジューリングやプリエンプションなどのシナリオでジョブ配信条件を満たしているかどうかを識別するために使用されます。最適化されたフレームワークに基づいてGPUプリエンプション機能がリリースされており、Volcanoをベースにユーザーが開発したスケジューリングプラグインをビジネスシナリオに応じて適応およびアップグレードできます。

拡張リソース プリエンプションのサポートの詳細については、https: //github.com/volcano-sh/volcano/pull/2916を参照してください。

JobFlow ワークフロー オーケストレーション エンジンを追加しました

ワークフロー オーケストレーション エンジンは、ハイ パフォーマンス コンピューティング、AI 生物医学、画像処理、美容、ゲーム AGI、科学コンピューティング、その他のシナリオで広く使用されており、ユーザーが複数のタスクの並列処理と依存関係の管理を簡素化し、全体的なコンピューティング効率を大幅に向上させるのに役立ちます。

JobFlow は、Volcano のジョブ オーケストレーションに焦点を当てた軽量のタスク フロー オーケストレーション エンジンです。これは、Volcano にジョブ プローブ、ジョブ完了の依存関係、ジョブ失敗率の許容値、およびその他の多様なジョブ依存関係の種類を提供し、複雑なプロセス制御プリミティブをサポートします。具体的な機能は次のとおりです。以下に続きます:

  • 大規模なジョブ管理と複雑なタスク フロー オーケストレーションをサポート

  • 関連するすべてのジョブの実行ステータスとタスクの進行状況のリアルタイム クエリをサポートします。

  • ジョブの自動運用と計画的な開始から人件費の解放をサポート

  • さまざまなタスクに対して複数のアクション戦略を設定でき、タスクがタイムアウト再試行、ノード障害ドリフトなどの特定の条件を満たしたときに、対応するアクションをトリガーできます。

JobFlow タスクの実行デモは次のとおりです。

JobFlow の詳細については、https: //github.com/volcano-sh/volcano/blob/master/docs/design/jobflow/README.mdを参照してください。

ノードの負荷を認識したスケジューリングと再スケジューリングは、さまざまな監視システムをサポートします

Kubernetes クラスターのステータスは、タスクの作成と終了に応じてリアルタイムで変化します (ノードの追加と削除、ポッドとノードのアフィニティの変更、ジョブのライフ サイクルの動的変更など)。 、クラスター ノード間のリソース使用率が一貫していない、バランシング、ノード パフォーマンスのボトルネック、オフラインなどの問題がある場合、現時点では、実際の負荷に基づいてスケジュールと再スケジュールを行うことで、上記の問題を解決できます。

Volcano バージョン 1.8 より前では、実負荷スケジューリングと再スケジューリングのインデックス取得は Prometheus のみをサポートしていましたが、バージョン 1.8 からは、監視インデックス取得フレームワークが最適化され、ElasticSearch 監視システムのサポートが追加され、小規模適応ワークロードモア タイプの監視システムとのスムーズなドッキングがサポートされます。

複数の監視システムのサポートの詳細については、以下を参照してください。

Volcano のマイクロサービスのスケジュール機能を最適化する

Kubernetes のデフォルトのスケジューラ プラグイン スイッチを追加する

Volcano は、AI や BigData などのコンピューティング ジョブをサポートするだけでなく、マイクロサービス ワークロードもサポートする統合統合スケジューリング システムであり、Kubernetes のデフォルト スケジューラの PodTopologySpread、 VolumeZone、 VolumeLimits、NodeAffinity、PodAffinity などのスケジューリング プラグインと互換性があります、および Kubernetes のデフォルト スケジューリング プラグイン機能 Volcano ではデフォルトで有効になっています。

Volcano 1.8 以降、Kubernetes のデフォルト スケジューリング プラグインは、構成ファイルを通じて自由にオン/オフを選択でき、デフォルトですべてがオンになります。 VolumeZone プラグインでは、述語プラグインに対応する値を設定できます。 false の場合、構成は次のとおりです。

actions: "allocate, backfill, preempt"
tiers:
- plugins:
  - name: priority
  - name: gang
  - name: conformance
- plugins:
  - name: drf
  - name: predicates
    arguments:
      predicate.VolumeZoneEnable: false
      predicate.PodTopologySpreadEnable: false
  - name: proportion
  - name: nodeorder

詳細については、https: //github.com/volcano-sh/volcano/issues/2748を参照してください。

ClusterAutoscaler の互換性の強化

Kubernetes プラットフォームでは、Volcano はバッチ コンピューティング サービスのスケジューラとしてだけでなく、一般的なサービスのスケジューラとしても使用されることが増えています。ノードの水平スケーリング (クラスター オートスケーラー) は、Kubernetes の中核機能の 1 つであり、ユーザー トラフィックの急増に対処し、運用コストを節約する上で重要な役割を果たします。Volcano は、ジョブ スケジューリングとその他の関連ロジックを最適化し、主に次の 2 つの側面で ClusterAutoscaler との互換性と相互作用を強化します。

  • スケジューリング段階でパイプライン状態になるポッドは、やがて容量拡張をトリガーします
  • 候補ノードは勾配でスコア付けされ、クラスタ終了ポッドがスケジューリング負荷に及ぼす影響を軽減し、ポッドが無効なパイプライン状態に入り、誤ってクラスタが拡張されるのを防ぎます。

詳細については、以下を参照してください。

回復力を強化するためのノードリソースの洗練された管理

デバイスプラグインなどの何らかの理由でノードが異常情報を報告し、ノードの特定のリソースの合計量が割り当てられたリソース量を下回る場合、Volcano はノードのデータに一貫性がないとみなし、ノードを隔離し、スケジューリングを停止します。ノードのロードに対する新しい作業。バージョン 1.8 では、ノードのリソースのきめ細かな管理が行われ、たとえば、ノードの GPU リソースの合計容量が割り当てられたリソースよりも少ない場合、GPU リソースを申請するポッドはノードに再スケジュールされなくなります。非 GPU リソースに適用されるものは、「このノードへの通常のスケジューリングを許可する」のままになります。

詳細については、https: //github.com/volcano-sh/volcano/issues/2999を参照してください。

Volcano charts パッケージのリリースとアーカイブを最適化する

Volcano は実稼働環境やクラウド環境で使用され、ユーザーがますます増えているため、シンプルで標準的なインストール操作が重要です。バージョン 1.8 以降、Volcano はチャート パッケージの公開およびアーカイブ アクションを最適化し、インストールと使用プロセスを標準化し、履歴バージョン (v1.6、v1.7) の新しい Helm ウェアハウスへの移行を完了しました。

  • 火山図の倉庫住所を追加
helm repo add volcano-sh https://volcano-sh.github.io/helm-chart
  • Volcano のインストール可能なすべてのバージョンをクエリする
helm search repo volcano -l
  • 最新バージョンの Volcano をインストールする
helm install volcano volcano-sh/volcano -n volcano-system --create-namespace
  • 指定したバージョンの Volcano をインストールします (例: 1.7.0)。
helm install volcano volcano-sh/volcano -n volcano-system --create-namespace --version 1.7.0

Volcano charts パッケージの詳細については、https: //github.com/volcano-sh/helm-chartsを参照してください。

おすすめ

転載: www.oschina.net/news/254878/volcano-1-8-0-released