用語集

Kubernetes

スケーラブルなモデルデプロイメント、分散トレーニング、効率的なリソース管理により、KubernetesがAI/MLワークロードをいかに効率化するかをご覧ください。

Ultralytics HUB で
を使ってYOLO モデルをシンプルにトレーニングする。

さらに詳しく

Kubernetes(しばしばK8sと略される)は、アプリケーション・コンテナのデプロイ、スケーリング、運用を自動化するために設計されたオープンソースのプラットフォームである。KubernetesはもともとGoogle によって設計され、現在はCloud Native Computing Foundationによって保守されている。要するに、Kubernetes はコンテナ化されたアプリケーションのオーケストレーターとして機能し、コンテナが効率的かつ確実に実行されるようにコンピュータのクラスタ全体で管理する。機械学習に精通しているユーザーにとっては、Kubernetesはオーケストラの指揮者であり、すべての異なる楽器(AI/MLアプリケーション・コンポーネント)が調和し、スケールして演奏できるようにするものだと考えてほしい。

Kubernetesとは何か?

Kubernetesの中核は、コンテナ化されたアプリケーションを管理するシステムだ。コンテナはソフトウェアコードとその依存関係をパッケージ化し、アプリケーションが異なるコンピューティング環境間で均一かつ一貫して実行できるようにする。Dockerは、Kubernetesとともによく使用される一般的なコンテナ化技術だ。Kubernetesは、コンテナ化されたアプリケーションのデプロイ、管理、スケーリングに関わる多くの手動プロセスを自動化する。Kubernetesは、アプリケーションを構成するコンテナを論理的な単位にグループ化し、管理と発見を容易にする。ポッドと呼ばれるこれらのユニットは、マシンのクラスタ全体にデプロイされる。そしてKubernetesは、以下のようなタスクを処理する:

  • サービスディスカバリーとロードバランシング:Kubernetesは、DNS名または独自のIPアドレスを使用してコンテナを公開できる。コンテナへのトラフィックが多い場合、Kubernetesはロードバランスを行い、ネットワークトラフィックを分散できるため、デプロイが安定する。
  • ストレージ・オーケストレーション:Kubernetesでは、ローカルストレージやパブリッククラウドプロバイダーなど、好みのストレージシステムを自動的にマウントできる。
  • ロールアウトとロールバックの自動化:Kubernetesを使用して、デプロイされたコンテナの望ましい状態を記述することができ、Kubernetesは制御された速度で実際の状態を望ましい状態に変更します。たとえば、Kubernetesはデプロイ用の新しいコンテナの作成を自動化し、既存のコンテナを削除して、そのすべてのリソースを新しいコンテナに採用することができます。
  • 自動ビンパッキング:Kubernetesでは、各コンテナに必要なCPU 、RAM(メモリ)の容量を指定できる。Kubernetesはコンテナをノードにフィットさせ、リソースを最大限に活用することができます。
  • セルフヒーリング:Kubernetesは、障害が発生したコンテナを再起動し、ノードが死んだときにコンテナを置き換えて再スケジュールし、ユーザー定義のヘルスチェックに応答しないコンテナを破棄し、サービスの準備が整うまでコンテナをクライアントにアドバタイズしない。
  • 秘密と設定の管理:Kubernetesでは、パスワード、OAuthトークン、SSHキーなどの機密情報を保存、管理できます。コンテナイメージを再構築することなく、またスタック構成の秘密を公開することなく、秘密とアプリケーション構成をデプロイおよび更新できます。

なぜKubernetesがAIとMLに関係するのか?

Kubernetesは、MLワークロードのリソース集約的でスケーラブルな性質のため、AIと機械学習の分野で特に関連性が高い。大規模なモデル、特に物体検出のためのUltralytics YOLO モデルのトレーニングには、多くの場合、複数のGPUやTPUにまたがる分散コンピューティングが必要です。Kubernetesは、これらの分散リソースを効率的に管理するためのインフラを提供します。

さらに、推論用のAI/MLモデルを大規模にデプロイするには、堅牢でスケーラブルなインフラが必要です。Kubernetesは、ユーザーがモデルをコンテナ化し、スケーラブルなAPIを通じて提供できるようにすることで、モデルのデプロイを簡素化する。これは、低い推論レイテンシと高いスループットを必要とする実世界のアプリケーションにとって極めて重要です。

AI/MLにおけるKubernetesの応用

  1. スケーラブルなモデルサービング:を使ったスマートシティ交通管理システムのような、リアルタイムの物体検出アプリケーションを考えてみましょう。 Ultralytics YOLOv8.都市が成長するにつれて、より多くのカメラからのビデオフィードを処理する需要が増加します。Kubernetesを使えば、モデル・サービング・インフラストラクチャを動的にスケールできます。YOLOv8 モデルを Kubernetes 上のコンテナ化されたサービスとしてデプロイすることで、入力トラフィックに基づいてモデルのインスタンス数を簡単に増減でき、高負荷時でも一貫したパフォーマンスを確保できます。このスケーラビリティは、リアルタイムのAIアプリケーションで低レイテンシーと高可用性を維持するために不可欠です。

  2. 分散トレーニング:最先端のAIモデルのトレーニングには、膨大なデータセットと膨大な計算能力が必要になることが多い。トレーニング時間を短縮するためには、マシンのクラスタに分散したトレーニングが必要になります。Kubernetesは、複数のノードにわたるワークロードの分散管理、進捗状況の監視、障害処理によって、分散トレーニングジョブをオーケストレーションできます。例えば、ImageNetのようなデータセットを使用した大規模な画像分類モデルの分散トレーニングジョブを管理するためにKubernetesを使用できます。Kubernetesは、各トレーニングノードが適切に設定され、データが効率的に分散され、全体的なトレーニングプロセスがノードの障害に強いことを保証します。

まとめると、KubernetesはAIとMLの複雑なワークロードを管理するための強力なツールであり、トレーニングとデプロイの両方のフェーズでスケーラビリティ、回復力、効率性を提供する。コンテナ化されたアプリケーションをオーケストレーションする能力により、最新のスケーラブルなAIシステムの構築と実行に理想的なプラットフォームとなっている。

すべて読む