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が機械学習運用(MLOps)において もたらす主な価値は、動的なワークロードを処理する能力にある。 AIモデルは、トレーニング時には膨大な計算能力を必要とし、 デプロイ時には低い推論レイテンシを要求することが多い。
Kubernetesは、様々な業界における多くの大規模AI実装の基盤となっています:
よく混同される点として、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アプリケーションの管理を支援します。