この記事では、Azure Kubernetes Service (AKS) クラスターでグラフィックス処理装置 (GPU) ノードを使用するワークロードを効率的に実行する方法について説明します。 適切な SKU を選択し、GPU ノードを使用して機械学習モデルをトレーニングし、GPU ノードを使用して AKS で推論を実行する方法について説明します。
シナリオ
GPU ワークロードは、実行にコストがかかる場合があります。 不要なコストを回避するには、AKS クラスターに GPU ベースのノードをデプロイするタイミングを把握してください。
GPU は、グラフィックス、AI、機械学習、特殊なタスク用に構築されており、コンピューティング集中型のワークロードに最適です。 中央処理装置 (CPU) は、複雑なロジックと分岐を効果的に管理します。 GPU はスループット用に最適化され、基本的な算術演算とベクター演算を効率的に処理します。
AKS ワークロードに GPU を使用するタイミングを決定するには、GPU の最適化、コンピューティング強度、およびパフォーマンスに影響するその他の要因を理解する必要があります。 AKS ワークロードの GPU 使用率に関するより良い分析情報を得るために、AKS クラスター内の GPU ノードのメリットを得る次のワークロードの例を検討してください。
データ サイエンスと分析
GPU を使用して、データ サイエンス ワークフローのデータ前処理、特徴エンジニアリング、およびモデル トレーニングを高速化します。 GPU を効率的に使用するために、 RAPIDS や Dask の GPU サポートなどのフレームワークは、pandas や scikit-learn などの一般的なデータ処理ライブラリを拡張します。
オープン ソース ソフトウェア (OSS) で高速化された SQL クエリ エンジンや HeavyDB などの列形式データベースでは、GPU を使用して大規模なデータセットに対してクエリと分析を実行します。
機械学習とディープ ラーニング
TensorFlow、PyTorch、vLLM、Triton Inference Server などの一般的な機械学習とディープ ラーニング フレームワークは、モデルをトレーニングして推論を実行するタスクを高速化するため、GPU の利点があります。 たとえば、Azure Machine Learning では、 Triton Inference Server を使用して、マネージド オンライン エンドポイントで提供される高パフォーマンス モデルがサポートされます。
ディープ ラーニング モデルでは、複雑なニューラル ネットワークが使用されます。 GPU での並列処理により、計算が高速化されます。 GPU は、ディープ ラーニングの基本的な操作である、非常に効率的な行列乗算と畳み込み操作を提供します。
GPU を使用して、画像分類、物体検出、自然言語処理、音声認識などのタスクを高速化することもできます。
コンピュータ ビジョンと画像処理
コンピューター ビジョン タスクは、視覚的なデータを解釈して意味のある情報を抽出します。 これらのタスクは、自律走行車、医療画像、監視システム、拡張現実などの AI を利用したアプリケーションに表示されます。 GPU は並列処理を使用して、オブジェクト検出、画像分類、特徴抽出などのタスクの大規模な画像データと複雑な計算を効率的に処理します。
ビデオ処理とストリーミング
ビデオのトランスコード、エンコード、ストリーム配信を行うワークロードは、特に高解像度コンテンツがある場合にコンピューティング集中型です。 GPU は、スポーツ イベント ストリームや企業ビデオなどのアプリケーション全体で、低待機時間で高スループットのビデオ処理を行う効率的なプラットフォームを提供します。
GPU 対応エージェント ノードは、仮想デスクトップ環境の GPU にグラフィックス集中型タスクをオフロードします。 GPU を使用するビデオ エンコードとデコード機能は、リアルタイムのビデオ ストリーミング、トランスコーディング、および分析をサポートします。
物体検出、物体追跡、画像またはビデオ処理などのコンピューター ビジョン タスクを高速化するには、 OpenCV、 OpenCL、 NVIDIA CUDA、 NVIDIA cuDNN などのフレームワークを使用します。
ゲーム プラットフォームとクラウド ゲーム サービスでは、GPU を使用して高解像度のグラフィックスをレンダリングし、インターネット経由でスムーズなゲームプレイをストリーミングします。
ハイ パフォーマンス コンピューティング
ハイ パフォーマンス コンピューティング (HPC) アプリケーションでは、多くの場合、複雑なシミュレーション、数値分析、科学計算が必要です。 これらのタスクを効率的に実行するために、GPU を使用して複数のコア間でワークロードを並列化できます。 大規模な並列処理能力を必要とする HPC アプリケーションの例としては、科学シミュレーション、天気予報、計算流体力学、分子モデリングなどがあります。 GPU は並列計算をサポートし、HPC ワークロードを高速化します。 また、科学的および研究コンピューティング全体のパフォーマンスも向上します。
HPC アプリケーションを高速化するために、NVIDIA CUDA、OpenCL、 OpenACC などのフレームワークには、GPU 対応の API とライブラリが用意されています。
ゲノム解析とバイオインフォマティクス
ゲノム分析やバイオインフォマティクスアプリケーションなどの健康と生命科学のワークロードは、DNA配列やタンパク質構造などの遺伝子データを処理します。 シーケンスのアライン、バリアントの呼び出し、ゲノム データのマイニングを行うために、複雑なアルゴリズムに依存しています。 GPU は、研究者がデータを処理して分析情報をすばやく明らかにできるように、ゲノム分析ワークフローを高速化します。
生成的AIモデル
OpenAI GPT、Meta Llama、Falcon、Phi オープン モデルなどの言語モデルでは、GPU 並列処理機能を利用できます。 GPU を使用してこれらのモデルを実行し、パフォーマンスを向上させます。
GPU は、複雑な計算と大量のデータを含むトレーニングタスクと推論タスクを高速化します。 GPU には並列処理機能があり、特定のモデルの大規模な計算タスクを、同時に実行される小さなサブタスクに分割します。 このプロセスにより、待機時間が短縮され、パフォーマンスが向上します。
多くの場合、言語モデルには、複数のレイヤーとパラメーターを持つ複雑なニューラル ネットワークがあり、計算需要が増加する可能性があります。 GPU は、行列乗算や畳み込みなど、言語処理の主要な操作を高速化します。これにより、トレーニングと推論に必要な時間が短縮されます。
GPU は、会話インターフェイスを持ち、テキストを生成する言語モデル ベースのアプリケーションを処理するのに十分なメモリ容量、帯域幅、処理能力を提供します。 たとえば、GPU の機能強化により、チャットボットや AI アシスタントと対話するユーザーに対して待機時間の短い応答が提供されます。
すべてのワークロードが GPU 対応エージェント ノードの恩恵を受けるわけではありません。 場合によっては、CPU で十分です。 たとえば、主に入力と出力にバインドされているワークロードや、大量の計算を必要としないワークロードは、GPU の恩恵を受けない場合があります。
顧客事例
多くの Microsoft のお客様は、GPU ワークロードを利用して、お客様のためにイノベーションを起こしています。 次の例を考えてみましょう。
- カナダのロイヤル バンク (RBC) は、AKS 上の AI ツールチェーン 演算子と GPU を使用して、大規模な推論を高速化します
- NBA選手たちは、Azure AI インフラストラクチャ上のAIを活用してパフォーマンスを向上させています
- Mr. Turing という AI 企業が AI と AKS を使用して会社の情報を検索可能にする
GPU ワークロードのデプロイのベスト プラクティス
AKS には、GPU 対応の Linux および Windows ノード プールとワークロードをデプロイするためのさまざまなオプションが用意されています。
Linux ワークロード デプロイ
NVIDIA GPU または AMD GPU を使用する、サポートされている GPU 対応仮想マシン (VM) を持つノード プールを作成します。 GPU ベンダーのガイダンスに従って、関連する Kubernetes デバイス プラグインをインストールします。 このメソッドでは、GPU を追加するために既存のノード プールを更新することはできません。
Azure Linux GPU 対応ノード プールを使用する場合の制限事項について説明します。 AKS は自動セキュリティ パッチを適用せず、クラスターの既定の動作は 管理されていません。
GPU 対応ノード プールでワークロードをスケジュールする場合は、Kubernetes ノード セレクター、 ノード アフィニティ、 テイントと容認 を使用します。
Windows ワークロードのデプロイ
サポートされている GPU 対応 VM を使用してノード プールを作成します。 この方法では、GPU 対応の Windows ノード プールが作成されます。 AKS は 、ドライバーと Kubernetes デバイス プラグインを自動的にインストールします。 このメソッドでは、GPU を追加するために既存のノード プールを更新することはできません。
サポートされている GPU 対応 VM を選択すると、AKS によって必要な NVIDIA CUDA または GRID ドライバーが自動的にインストールされます。 一部のワークロードは、特定のドライバに依存しており、デプロイに影響を与える場合があります。 NC シリーズと ND シリーズ VM サイズの場合、AKS は、CUDA ドライバをインストールします。 NV シリーズ VM サイズの場合、AKS は GRID ドライバをインストールします。
Windows ノード プールを使用する場合の制限事項について説明します。
GPU 対応ノード プールでワークロードをスケジュールする場合は、Kubernetes ノード セレクター、ノード アフィニティ、テイントと容認を使用します。
注
Windows GPU はプレビュー機能です。 WindowsGPUPreview 機能フラグを登録する必要があります。
NVIDIA GPU 演算子
NVIDIA GPU オペレーターを使用して、Kubernetes クラスターに GPU リソースをデプロイおよび管理します。 オペレーターは、必要なソフトウェア コンポーネントのインストール、構成、およびメンテナンスを自動化します。 このアプローチは、AI や機械学習などのリソースを集中的に使用するワークロードに NVIDIA GPU を最適に使用するのに役立ちます。
NVIDIA GPU オペレーターは、 KUbernetes 用の NVIDIA デバイス プラグイン や NVIDIA コンテナー ランタイムなど、GPU のデプロイに必要な NVIDIA ソフトウェア コンポーネントを自動的に管理します。 演算子がドライバを自動的にインストールします。 詳細については、「 NVIDIA GPU オペレーターの概要」を参照してください。
高度な GPU ワークロードの制御と柔軟性を向上させる場合は、 AKS 上の GPU 対応ノードで NVIDIA GPU オペレーターを使用します。 オペレーターは Windows GPU をサポートしていません。
次のベスト プラクティスを検討してください。
NVIDIA GPU オペレーターを使用して、ドライバーバージョンの選択や GPU タイムスライスなどの高度な GPU 構成を行います。
オペレーターを使用する前に、ドライバーの自動インストールをスキップします。
クラスター オートスケーラーでオペレーターを使用する場合は、最小カウントを 1 に設定します。
注
NVIDIA GPU オペレーターを使用する場合、ノード イメージのデプロイの一部として NVIDIA ドライバーのメンテナンスと互換性はサポートまたは管理されません。 詳細については、 AKS の GPU のベスト プラクティスを参照してください。
言語モデルの GPU ワークロードのデプロイ
AI ツールチェーン演算子を使用すると、Kubernetes クラスターで Falcon などのオープンソース言語モデルを実行する方法が簡略化されます。 AKS のマネージド機能として、AKS クラスターに AI ツールチェーン オペレーターをデプロイできます。 AI ツールチェーン オペレーターは 、Karpenter を使用して、選択したモデルのワークスペース カスタム リソース定義の仕様に基づいて GPU ノードを自動的にプロビジョニングおよびデプロイします。 AI ツールチェーンオペレーターは、推論サーバーを言語モデルのエンドポイントとして作成し、オンボード時間を短縮して、インフラストラクチャのセットアップとメンテナンスではなく機械学習操作に集中できるようにします。
AKS に対する AI 操作を改善するために、AI ツールチェーン オペレーターは次の機能を提供します。
コンテナー イメージを管理します。 コンテナー イメージを使用して言語モデルを管理します。 AI ツールチェーン演算子は、 既定のモデル ワークスペース を使用して推論を実行し、ツールを呼び出し、モデル コンテキスト プロトコル (MCP) を使用できるように HTTP サーバーを提供します。
Bring Your Own (BYO) モデルをサポートします。 AI ツールチェーン 演算子を使用して、 カスタム デプロイ テンプレート と推論用の HuggingFace Transformers を使用して、社内の事前トレーニング済み言語モデルを導入します。
GPU ハードウェアを構成します。 AI ツールチェーン オペレーターは、モデルの要件に基づいて事前設定された構成を自動的に適用します。 GPU ハードウェアに合わせてデプロイ パラメーターを手動で調整したり、コストのかかる GPU メモリ不足 (OOM) エラーのトラブルシューティングを行う必要はありません。
組み込みの推論監視を提供します。 既定の vLLM 推論エンジンを使用してモデルをデプロイすると、AI ツールチェーン オペレーターは Prometheus と Grafana を介して リアルタイムの vLLM メトリックを表示 し、AKS クラスターの推論のパフォーマンスと正常性に関するメトリックを公開します。
AI ツールチェーン 演算子の詳細については、次のリソースを参照してください。
- AI ツールチェーン オペレーターのオープン ソース プロジェクトを調べる
- AI ツールチェーン演算子を使用して言語モデルを微調整する
- ツール呼び出しをサポートする言語モデルをデプロイする
- AI ツールチェーン 演算子を使用して MCP サーバーに接続する
ワークロードとクラスターのスケーリング
AI と機械学習のシナリオでは、トレーニング ワークロードと事前トレーニング済みモデルを使用した推論を区別する必要があります。 機械学習モデルを構築してトレーニングするには、ディープ ラーニング用に設計された GPU コンピューティングを使用し、AI 計算を並列化します。 トレーニングでは、多くの場合、GPU リソースを段階的にスケーリングし、GPU 間で大量のデータを分散して、データの並列処理によって高い精度を実現する必要があります。
モデル シャーディングは、モデル トレーニングのステージを分割するための一般的な高度な手法です。 AKS の NVIDIA GPU ノード プールで 複数インスタンス GPU (MIG) を有効にすることで、GPU を個別のタスクに割り当て、その使用を最大化できます。 GPU は、AZURE 上の NV シリーズや ND シリーズの VM など、HPC ワークロードをスケールアップおよびスケールアウトできます。 この機能は、高いリソース使用量を維持し、時間とコストのかかる機械学習トレーニング プロセスのユーザー介入を減らすのに役立ちます。
または、事前トレーニング済みのオープン ソースの AI モデルと機械学習モデルを推論に使用することもできます。 完全にカスタム言語モデルを構築してトレーニングするよりもコスト効率の高いオプションとして、ラマ、ファルコン、Phi などの人気のあるモデルから始めます。 詳細については、「AKS の言語モデル」を参照してください。
推論に事前トレーニング済みモデルを使用すると、処理するデータの量に基づいてリソースの使用量が変動する可能性があります。 選択したモデルを介してライブ データを実行すると、モデルのサイズと要件に応じてトラフィックが急増する可能性があります。 推論プロセス全体の待機時間を短く維持します。 GPU を効果的に使用して高パフォーマンスと低待機時間を実現するには、AI ツールチェーン オペレーターがサポートするモデルを使用して分散推論を実行します。 この方法では、コンピューティング オプションを拡張して、それぞれ 1 つまたは 2 つの GPU を持つ GPU カウントの低い SKU を含め、Azure リージョン間で高可用性を提供し、維持費用を削減します。
GPU の正常性の監視
GPU の問題は検出が困難であり、多くの場合、サイレント エラーが発生したり、完全に失敗するのではなくパフォーマンスが低下したりする可能性があります。 これらの問題により、トラブルシューティングに時間がかかり、リソースが不必要に消費され、運用コストが増加します。
AKS での GPU 正常性監視 では、ノードのイベントと状態の一貫性のある頻繁なチェックが提供されます。 Node Problem Detector (NPD) は、特定の GPU VM サイズでこれらのイベントを報告します。 NPD は、不適切な GPU 数やネットワーク接続エラーなどの主要な信号を直接 Kubernetes ノード条件に表示します。これにより、チームが問題を特定して対応するのに役立ちます。 このアプローチでは、自動アラート、ノードのコードニング、ワークロードの再スケジュールがサポートされます。 また、コンピューティング集中型環境でのアプリケーションの信頼性とパフォーマンスを維持するのにも役立ちます。
GPU ワークロードのコスト管理
GPU によってコストが増加する場合があります。 ワークロードを監視して、GPU コストの原因を理解し、最適化の機会を特定します。 コストの可視性を高めるために、 AKS コスト分析ツールを使用します。
次のシナリオでは、コストの可視性のメリットがあります。
GPU 対応 VM サイズのコスト
GPU 対応 VM の適切なサイズを選択して、GPU を実行するためのコストを最適化します。 日単位のコストは、選択した VM サイズによって異なる場合があります。 A100 GPU はコストがかかるため、ワークロードで必要とされない限り避けてください。 AKS コスト分析では、各 VM の 1 日あたりのコストが表示され、GPU 対応 VM 上で実行される各ワークロードの関連コストが表示されます。 このデータを使用して、適切な VM サイズがあるかどうか、またはよりコスト効率の高いオプションが必要かどうかを評価します。
アイドル コスト
GPU 対応ノード プールを作成すると、GPU ワークロードを実行しない場合でも、Azure リソースのコストが発生します。 アイドル コストは、ワークロードが使用しない利用可能なリソース容量のコストを表します。 未使用のノードが複数ある場合、これらのコストはすぐに加算されます。 高いアイドル コストを回避するには、ワークロードを実行するときにのみノード プールを作成し、ワークロードを実行しない場合は クラスター停止機能 などの方法を使用します。 AKS コスト分析では、各ノードのアイドル コストが表示されます。
オーバープロビジョニングと過小使用
オーバープロビジョニングは、ポッドに必要以上に多くのリソースを割り当てる場合です。 オーバープロビジョニングは、リソースの無駄と過小使用につながります。 ワークロードで使用されていない場合でも、ノードは余分なリソースを引き続き予約します。 オーバープロビジョニングを減らすには、仮想ポッドオートスケーラーを使用して、以前の使用パターンに基づいて正確な要求と制限を設定します。
ワークロードで GPU が完全に使用されていない場合は、過小使用が発生する場合があります。 GPU を共有およびパーティション分割するための高度な手法を検討してください。 複数のノードをデプロイする代わりに、パーティションを持つ 1 つのノードを使用して GPU 使用率を最大化できます。 これらの手法は、ワークロードごとに適切な量の GPU アクセラレーションを割り当てるのに役立ちます。これにより、使用を強化し、デプロイの運用コストを削減できます。
AKS での Linux GPU ワークロードのデプロイでは、複数インスタンスの GPU がサポートされます。 この機能を使用して、NVIDIA A100 および H100 GPU を最大 7 つの独立したインスタンスにパーティション分割します。 各インスタンスには、独自のメモリとストリーム マルチプロセッサがあります。
NVIDIA では、タイム スライスやマルチプロセス サービス (MPS) などの他のパーティション分割手法がサポートされています。 これらの構成を手動で適用するには、NVIDIA GPU オペレーターを使用します。
高度なシナリオでは、AKS ノードでのリソース ビンのパッキングを改善し、クラスター内の GPU リソースの使用率を最適化できます。 スケジューラ構成を設定するには、1 つ以上の組み込み (または ツリー内) の Kubernetes スケジューリング プラグインを使用して、既定の AKS スケジューラとは異なるワークロード配置戦略を導入できます。 詳細については、 AKS でのワークロード配置の Scheduler 構成の概念 (プレビュー) を参照してください。
貢献者達
Microsoft では、この記事を保持しています。 次の共同作成者がこの記事を書きました。
主要著者:
- Ayobami Ayodeji | シニア プログラム マネージャー
その他の共同作成者:
- 出西幸 |プロダクト マネージャー 2
- アリ・フォード |プロダクト マネージャー 2
- Erin Schaffer | コンテンツ開発者 2
公開されていない LinkedIn プロフィールを見るには、LinkedIn にサインインしてください。
次のステップ
- AI ツールチェーン オペレーターを使用して、AKS 上のインテリジェント アプリに独自の AI モデルを取り込む
- Terraform を使用して AKS に AI ツールチェーン 演算子をデプロイする