KubernetesでAI/MLワークロードをスケーリングするためのクイックガイド

NGINX | 2024年1月11日

Kubernetes上で人工知能(AI)および機械学習(ML)モデルのトレーニングと推論を実行する場合、動的なスケールアップとスケールダウンが極めて重要になります。AIモデルのトレーニングでは、データの取り込みに高帯域幅のストレージとネットワークが必要なだけでなく、主にGPUやその他の専用プロセッサによる大規模で高コストなコンピューティングリソースも必要です。事前トレーニング済みモデルを活用する場合でも、本番環境でのモデルサービングやファインチューニングなどのタスクには、一般的なエンタープライズワークロードよりも多くのコンピューティングリソースが必要です。

クラウドネイティブなKubernetesは、迅速にスケールアップおよびスケールダウンできるよう設計されています。また、ハイブリッドおよびマルチクラウド環境全体で、動的なワークロードに対する俊敏性の向上と、コスト効率に優れたリソース利用を実現できるよう設計されています。

このブログでは、多様な環境でAI/MLワークロードを動的にスケーリングし、最適なパフォーマンス、コスト削減、適応性を実現できるよう、Kubernetes上でスケーリングする最も一般的な3つの方法をご紹介します。

Kubernetes上のAI/MLワークロードに対応する3つのスケーリング方式

Kubernetesでワークロードをスケーリングする一般的な3つの方法は、Horizontal Pod Autoscaler(HPA)、Vertical Pod Autoscaler(VPA)、Cluster Autoscalerです。

これら3つの方法について詳しく見ていきます。

  • HPA – アプリケーションにインスタンスまたはPodレプリカを追加することに相当し、スケール、キャパシティ、スループットを向上させます。
  • VPA – Podのサイズを変更し、コンピューティングとメモリを増強して容量を拡大することに相当します。
  • Cluster Autoscaler – Podの現在のリソース需要に応じて、Kubernetesクラスター内のノード数を自動的に増減します。

各モダリティには、モデルのトレーニングと推論においてそれぞれ利点があります。詳しくは、以下のユースケースをご覧ください。

HPAのユースケース

多くの場合、分散AIモデルのトレーニングおよび推論ワークロードは、水平方向にスケーリングできます(つまり、Podを追加してトレーニングプロセスやリクエスト処理を高速化できます)。そのため、これらのワークロードではHPAを活用できます。HPAは、CPUやメモリの使用率などのメトリクスに加え、ワークロードに関連するカスタムメトリクスや外部メトリクスに基づいて、Pod数を増やすことができます。ワークロードが時間の経過とともに変動する場合、HPAはPod数を動的に調整し、リソースを最適に利用できるようにします。

KubernetesでAIワークロードを水平スケーリングする際のもう1つの重要な要素が、負荷分散です。最適なパフォーマンスを確保し、リクエストを適時に処理するには、受信リクエストを複数のインスタンスまたはPodに分散する必要があります。そのため、HPAと組み合わせて使用するのに適したツールの1つが、Ingressコントローラーです。

VPAのユースケース

AIモデルのトレーニングタスクでは、多くの場合、大量のCPU、GPU、メモリリソースが必要になります。VPAは、これらのリソース割り当てを動的に調整できます。これにより、各Podにトレーニングワークロードを効率的に処理するための十分なリソースを確保し、割り当てられたすべてのPodに計算を実行するための十分なコンピューティング能力を持たせることができます。また、大規模モデルのトレーニング中は、メモリ要件が大きく変動する場合があります。VPAは、必要に応じてメモリ割り当てを増やすことで、メモリ不足エラーの防止に役立ちます。

HPAとVPAを併用することは技術的には可能ですが、同じワークロードを異なる方法(水平スケーリングと垂直スケーリング)でスケーリングしようとして競合する可能性があるため、競合を避けるには慎重な設定が必要です。各オートスケーラーの適用範囲を明確に定義し、互いに競合するのではなく補完し合うようにすることが重要です。新たなアプローチとして、両者を異なる範囲で使用する方法があります。たとえば、HPAはワークロードに基づいて複数のPodにわたるスケーリングを行い、VPAはHPAが設定した制限内で各Podのリソース割り当てを微調整します。

Cluster Autoscalerのユースケース

Cluster Autoscalerは、AI/MLワークロードの需要に対応できるよう、クラスタ全体で利用可能なコンピューティング、ストレージ、ネットワークインフラストラクチャのリソースプール全体を動的に調整するのに役立ちます。現在の需要に基づいてクラスタ内のノード数を調整することで、組織はマクロレベルで負荷を分散できます。AI/MLワークロードでは、予測不能な形で大量のコンピューティングリソースが必要になる場合があるため、最適なパフォーマンスを確保するには、この調整が必要です。

HPA、VPA、Cluster Autoscalerにはそれぞれ役割がある

要約すると、Kubernetesのオートスケーリングは、次の3つの方法で機能し、AIワークロードにメリットをもたらします。

  • HPAは、変動するリクエストレートへの対応が必要なAIモデルサービングエンドポイントをスケーリングします。
  • VPAは、AI/MLワークロードのリソース割り当てを最適化し、過剰にプロビジョニングすることなく、効率的な処理に必要なリソースを各podに確保します。
  • Cluster Autoscalerは、リソースを大量に消費するAIジョブを処理できるようにクラスタへノードを追加し、コンピューティング需要が低い場合はノードを削除します。

KubernetesでAI/MLワークロードを管理する際、HPA、VPA、Cluster Autoscalerは相互に補完し合います。Cluster Autoscalerはワークロードの需要を満たすのに十分なノード数を確保し、HPAは複数のPodにワークロードを効率的に分散し、VPAは各Podへのリソース割り当てを最適化します。これらを組み合わせることで、Kubernetes環境のAI/MLアプリケーションに包括的なスケーリングおよびリソース管理ソリューションを提供します。

F5とNGINXがAI/MLワークロードのデリバリー、セキュリティ確保、最適化をどのように支援できるかについて、詳しくは「Power and Protect Your AI Journey」ページをご覧ください。


共有

著者について

Ilya Krutov
Ilya Krutovシニアプロダクトマーケティングマネージャー | F5 NGINX

Ilya Krutovのその他のブログ記事

関連するブログ記事

チュートリアル:NGINXを使用してアプリケーション向けにOpenTelemetryを構成する
NGINX | 2024/01/18

チュートリアル:NGINXを使用してアプリケーション向けにOpenTelemetryを構成する

OpenTelemetryを使用してNGINXサーバーの状態と健全性をより明確に把握することで、問題のトラブルシューティングを行い、Webアプリケーションのパフォーマンスを向上できます。

AkitaのNGINX Plus認定モジュールでAPIエンドポイントの問題を特定・修正
NGINX | 2023/05/31

AkitaのNGINX Plus認定モジュールでAPIエンドポイントの問題を特定・修正

Akita SoftwareのAPIオブザーバビリティ向け新しいNGINX Plus Certified Moduleを活用して、APIエンドポイントの問題をより迅速に特定し、修正できます。

JavaプロジェクトをスキャフォールディングしてKubernetesネイティブアプリを構築する方法
NGINX | 2023/02/09

JavaプロジェクトをスキャフォールディングしてKubernetesネイティブアプリを構築する方法

Red HatのシニアプリンシパルデベロッパーアドボケイトであるDaniel Oh氏が、Javaプロジェクトをゼロから構築するためのひな形を作成し、Kubernetesネイティブアプリケーションとしてビルドする方法を解説します。

F5 NGINXaaS for Azureのご紹介:Microsoft Azureでネイティブに利用できるSaaS型ロードバランシング
NGINX | 2022/05/24

F5 NGINXaaS for Azureのご紹介:Microsoft Azureでネイティブに利用できるSaaS型ロードバランシング

NGINXaaS for Azureは、NGINX PlusをAzureネイティブのSaaSとして利用できるサービスです。NGINXの設定を容易にリフト&シフトできるため、クラウド導入とモダンアプリの展開を加速できます。

SELinuxでNGINXおよびNGINX Plusを使用する
NGINX | 2018/08/17

SELinuxでNGINXおよびNGINX Plusを使用する

Red Hat Enterprise Linux(RHEL)および関連ディストリビューションでSecurity-Enhanced Linux(SELinux)を有効にすると、デフォルト設定によりNGINXとNGINX Plusの一部の操作が制限されます。この記事では、すべての機能を利用できるようにSELinuxの設定を変更する方法について説明します。

NGINX PlusによるAWS Auto Scalingグループの負荷分散
NGINX | 2017/03/06

NGINX PlusによるAWS Auto Scalingグループの負荷分散

新しいnginx-asg-sync統合ソフトウェアにより、NGINX PlusはAWS Auto Scalingグループの負荷を直接分散できるため、クラウドでの負荷分散がさらに柔軟になります