Yolo 深圳
深セン
今すぐ参加
用語集

Kubernetes

KubernetesがAIモデルのデプロイとスケーリングを自動化する仕組みを探求しましょう。高性能なコンピュータビジョンを実現するため、K8s上でUltralytics オーケストレーションする方法を学びます。

Kubernetes(通称K8s)は、コンテナ化されたアプリケーションのデプロイ、スケーリング、管理を自動化するオープンソースプラットフォームです。Google 開発されGoogle 現在はCloud Native Computing Foundation(CNCF)によって維持管理されているKubernetesはGoogle クラウド環境におけるソフトウェアオーケストレーションの標準となっています。人工知能(AI) および機械学習(ML)の文脈では、分散トレーニングから高可用性本番環境推論に至る複雑なワークフローをエンジニアリングチームが管理するための基盤となる重要なインフラレイヤーとして機能します。基盤となるハードウェアを抽象化することで、Kubernetesはアプリケーションがオンプレミスでホストされているか、パブリッククラウドプロバイダー経由でホストされているかを問わず、信頼性と効率性を確保します。

コアアーキテクチャと概念

Kubernetesは本質的にクラスターアーキテクチャで動作し、ノードと呼ばれるワーカーマシン群で構成されます。 これらのノードはコンテナ化されたワークロードを実行し、 一方、コントロールプレーンがクラスター全体の状態を管理します。Kubernetesにおける最小デプロイ単位は 「Pod」であり、これはストレージとネットワークリソースを共有する1つ以上のコンテナをカプセル化します。この抽象化は コンピュータービジョンアプリケーションにとって極めて重要であり、 開発者が依存関係(例えば特定のCUDA グラフィックス処理ユニット(GPU)向けの特定のCUDAライブラリなど)を一貫した環境にパッケージ化できるようにします。Amazon Elastic Kubernetes Service(EKS)Azure Kubernetes Service(AKS)Google Engine(GKE)などの主要クラウドサービスは、このアーキテクチャのマネージド版を提供し、データサイエンスチームの保守負担を軽減します。

KubernetesがAIにとって重要な理由

Kubernetesが機械学習運用(MLOps)において もたらす主な価値は、動的なワークロードを処理する能力にある。 AIモデルは、トレーニング時には膨大な計算能力を必要とし、 デプロイ時には低い推論レイテンシを要求することが多い。

  • スケーラビリティ:Kubernetesは自動スケーリングを採用し、リソースを自動的に調整します。トラフィックが急増した場合、水平ポッドオートスケーラーが推論ポッドの数を増加させ、手動介入なしにスケーラビリティを維持します。
  • リソース最適化:高価なハードウェアを効率的に割り当てることは極めて重要です。Kubernetesは GPU 分割GPU ノードアフィニティを可能にし、ディープラーニングモデルがアクティブなジョブが要求する時のみ リソースを消費することを保証します。
  • 回復力のあるデプロイメント: モデルデプロイメント時の高可用性の確保は不可欠です。ノードが障害を起こした場合、Kubernetesは影響を受けたポッドを健全なノード上で自動的に再起動し、重要なAPIサービスのダウンタイムを防止します。

実際のアプリケーション

Kubernetesは、様々な業界における多くの大規模AI実装の基盤となっています:

  1. スマートシティ交通管理:自治体は Ultralytics を導入し、 数千の交差点からの映像データを分析できる。 Kubernetesを活用することで、システムはラッシュ時に動的にリソースをスケールアップし、 増加した物体検出負荷に対応できる。 夜間にはスケールダウンしてコストを削減する。 このアプローチは現代の交通管理システムにおいて 基盤となるものである。
  2. Eコマースのパーソナライゼーション:オンライン小売業者は、マイクロサービス上に構築された複雑なレコメンデーションシステムを活用している。あるサービスが候補生成を担当し、別のサービスが再ランク付けを管理する場合もある。Kubernetesはこれらの独立したサービスをオーケストレーションし、チームがランキングニューラルネットワークを単独で更新できるようにすることで、ショッピング体験全体を妨げることなく、継続的インテグレーションを促進する。

KubernetesとDockerの違い

よく混同される点として、KubernetesとDockerの関係が挙げられます。これらは競合関係にあるのではなく、むしろ補完的な技術です。Dockerは個々のコンテナを作成・実行するためのツール(アプリケーションのパッケージ化)であるのに対し、 Kubernetesは複数のマシンにまたがるそれらのコンテナ群を管理するためのツールです。Dockerを使ってモデル重みとコードをイメージにビルドし、 その後Kubernetesを使って、そのイメージのコピーを本番環境でどこで、いつ、いくつ実行するかを決定します。

例コンテナ化の推論スクリプト

Kubernetes上でモデルをデプロイする場合、開発者は通常、コンテナのエントリポイントとして機能するPython から開始します。以下のコードは、Ultralytics モデルを使用した単純な推論タスクを示しています。このスクリプトはポッド内で実行され、受信リクエストを処理します。

from ultralytics import YOLO

# Load the lightweight YOLO26 model
model = YOLO("yolo26n.pt")

# Perform inference on an image source
# In a K8s pod, this would likely process API payloads
results = model("https://ultralytics.com/images/bus.jpg")

# Output the detection count for logging
print(f"Detected {len(results[0].boxes)} objects in the frame.")

ツールとエコシステム

Kubernetesエコシステムには、データサイエンス向けに特化した多様なツールが含まれています。 Kubeflowは、Kubernetes上での機械学習ワークフローのデプロイをシンプルかつ移植性・拡張性に優れたものにするための人気ツールキットです。 クラスタの健全性とアプリケーションメトリクスの監視には、エンジニアはしばしばPrometheusに依存します。これらの環境へのモデルトレーニングとデプロイの複雑さをさらに簡素化するため、Ultralytics データセット管理とモデルトレーニングを自動化する統一インターフェースを提供し、クラウドコンピューティングクラスタ即利用可能なモデルのエクスポートを可能にします。さらに、Helmのようなパッケージマネージャーは、再利用可能なチャートを通じて複雑なKubernetesアプリケーションの管理を支援します。

Ultralytics コミュニティに参加する

AIの未来を共に切り開きましょう。グローバルなイノベーターと繋がり、協力し、成長を。

今すぐ参加