2.15. Pod への GPU の割り当て
属性ベースの GPU 割り当てを使用すると、OpenShift Container Platform でのグラフィックスプロセッシングユニット (GPU) リソース割り当てを細かく制御できるようになります。これにより、製品名、GPU メモリー容量、計算能力、ベンダー名、ドライバーバージョンなどの特定のデバイス属性に基づいて Pod が GPU を要求できるようになります。これらの属性は、サードパーティーの Dynamic Resource Allocation (DRA) ドライバーによって公開されます。
属性ベースの GPU 割り当ては、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
2.15.1. ワークロードへの GPU の割り当てについて リンクのコピーリンクがクリップボードにコピーされました!
属性ベースの GPU 割り当てを使用すると、Pod が特定のデバイス属性に基づいてグラフィックスプロセッシングユニット (GPU) を要求できるようになります。これにより、Pod が必要とする指定どおりの GPU が各 Pod に割り当てられます。
属性ベースのリソース割り当てを使用するには、Dynamic Resource Allocation (DRA) ドライバーをインストールする必要があります。DRA ドライバーは、クラスター内の各ノードで動作し、そのノードのハードウェアとの橋渡しをするサードパーティーアプリケーションです。
DRA ドライバーは、以下の属性を含むいくつかの GPU デバイス属性をアドバタイズします。これらは OpenShift Container Platform が GPU の正確な選択に使用できる属性です。
- 製品名
- Pod は、パフォーマンス要件やアプリケーションとの互換性に基づいて、正確な GPU モデルを要求できます。これにより、ワークロードがタスクに最適なハードウェアを活用できるようになります。
- GPU メモリー容量
- Pod は、8 GB、16 GB、40 GB など、最小または最大メモリー容量を持つ GPU を要求できます。これは、大規模な AI モデルのトレーニングやデータ処理など、メモリーを大量に消費するワークロードに役立ちます。この属性を使用すると、リソースの過剰な割り当てや不十分な使用を防ぎながら、アプリケーションがメモリーの要件に合わせて GPU を確保できるようになります。
- 計算能力
- Pod は、サポートされている CUDA バージョンなど、GPU の計算能力に基づいて GPU を要求できます。Pod は、アプリケーションのフレームワークと互換性のある GPU をターゲットにして、最適化された処理能力を活用できます。
- 電力と熱のプロファイル
- Pod は、電力使用量や熱特性に基づいて GPU を要求できます。これにより、電力や温度の影響を受けやすいアプリケーションを効率的に動作させることができます。これは、電力や冷却に制約がある高密度環境で特に役立ちます。
- デバイス ID とベンダー ID
- Pod は、GPU のハードウェアの詳細に基づいて GPU を要求できます。これにより、特定のベンダーまたはデバイスタイプを必要とするアプリケーションが、ターゲットを絞った要求を行えるようになります。
- ドライバーバージョン
- Pod は、特定のドライバーバージョンを実行する GPU を要求できます。これにより、アプリケーションの依存関係との互換性が確保され、GPU 機能へのアクセスが最大化されます。
2.15.2. GPU 割り当てオブジェクトについて リンクのコピーリンクがクリップボードにコピーされました!
属性ベースの GPU 割り当ては、次のオブジェクトを使用して、グラフィックスプロセッシングユニット (GPU) の主要な割り当て機能を提供します。これらの API の種類は、すべて resource.k8s.io/v1beta2
API グループに含まれています。
- デバイスクラス
デバイスクラスは、Pod が要求できるデバイスのカテゴリーと、要求時に特定のデバイス属性を選択する方法です。一部のデバイスドライバーには独自のデバイスクラスが含まれています。管理者がデバイスクラスを作成することもできます。デバイスクラスにはデバイスセレクターが含まれています。デバイスセレクターは、デバイスが要求を満たす場合に true と評価される Common Expression Language (CEL) 式です。
次の例の
DeviceClass
オブジェクトは、driver.example.com
デバイスドライバーによって管理されるすべてのデバイスを選択します。デバイスクラスオブジェクトの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - リソーススライス
- 各ノードの Dynamic Resource Allocation (DRA) ドライバーは、クラスター内の リソーススライス を作成および管理します。リソーススライスは、ノードに割り当てられている 1 つ以上の GPU リソースを表します。リソースクレームが作成され、Pod で使用されると、OpenShift Container Platform はリソーススライスを使用して、要求されたリソースにアクセスできるノードを探します。リソースクレームに適したリソーススライスが見つかると、OpenShift Container Platform のスケジューラーが、割り当ての詳細を使用してリソースクレームを更新し、リソースクレームにリソースを割り当て、リソースにアクセスできるノードに Pod をスケジュールします。
- リソースクレームテンプレート
クラスターの管理者と運用担当者は、特定のデバイスクラスから GPU を要求するための リソースクレームテンプレート を作成できます。リソースクレームテンプレートは、それぞれ分離された類似のリソースへのアクセスを Pod に提供します。OpenShift Container Platform は、リソースクレームテンプレートを使用して、Pod のリソースクレームを生成します。OpenShift Container Platform がテンプレートから生成する各リソースクレームは、特定の Pod にバインドされます。Pod が終了すると、OpenShift Container Platform は対応するリソースクレームを削除します。
次のリソースクレームテンプレートの例では、
example-device-class
デバイスクラス内のデバイスを要求します。リソースクレームテンプレートオブジェクトの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - リソースクレーム
管理者と運用担当者は、特定のデバイスクラスから GPU を要求する リソースクレーム を作成できます。リソースクレームは、GPU を複数の Pod で共有できる点で、リソースクレームテンプレートとは異なります。また、要求元の Pod が終了しても、リソースクレームは削除されません。
次のリソースクレームテンプレートの例では、CEL 式を使用して、
example-device-class
デバイスクラス内の特定のサイズを持つ特定のデバイスを要求します。リソースクレームオブジェクトの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
リソースクレーム、リソースクレームテンプレートの設定の詳細は、Dynamic Resource Allocation (Kubernetes ドキュメント) を参照してください。
Pod にリソースクレームを追加する方法は、「Pod へのリソースクレームの追加」を参照してください。
次のステップ
2.15.3. Pod へのリソースクレームの追加 リンクのコピーリンクがクリップボードにコピーされました!
属性ベースの GPU 割り当てでは、Pod 内のコンテナーに対して特定のグラフィックスプロセッシングユニット (GPU) を要求できるようにするために、リソースクレームとリソースクレームテンプレートを使用します。リソースクレームは複数のコンテナーで使用できますが、リソースクレームテンプレートは 1 つのコンテナーでのみ使用できます。詳細は、関連情報 セクションの「デバイス属性を使用したデバイス割り当ての設定について」を参照してください。
次の手順の例では、特定の GPU を container0
に割り当てるリソースクレームテンプレートと、container1
と container2
間で GPU を共有するリソースクレームを作成します。
前提条件
- Dynamic Resource Allocation (DRA) ドライバーがインストールされている。DRA の詳細は、Dynamic Resource Allocation (Kubernetes ドキュメント) を参照してください。
- リソーススライスが作成されている。
- リソースクレームやリソースクレームテンプレートが作成されている。
cluster
という名前のFeatureGate
CR を編集して、クラスターに必要なテクノロジープレビュー機能を有効にした。FeatureGate
CR の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 必要な機能を有効にします。
警告クラスターで
TechPreviewNoUpgrade
機能セットを有効にすると、元に戻すことができず、マイナーバージョンの更新が妨げられます。この機能セットを使用すると、該当するテクノロジープレビュー機能をテストクラスターで有効にして、完全にテストすることができます。実稼働クラスターではこの機能セットを有効にしないでください。
手順
次のような YAML ファイルを作成して Pod を作成します。
リソースを要求する Pod の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow CRD オブジェクトを作成します。
oc create -f <file_name>.yaml
$ oc create -f <file_name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Pod のリソースクレームを設定する方法の詳細は、Dynamic Resource Allocation (Kubernetes ドキュメント) を参照してください。