Kubernetes
KubernetesがAIモデルのデプロイとスケーリングを自動化する仕組みを説明します。K8s上でUltralytics YOLO26をオーケストレーションし、高性能なコンピュータービジョンを実現する方法を学びます。
KubernetesはK8sとも呼ばれ、コンテナ化されたアプリケーションのデプロイ、スケーリング、管理を自動化するために設計されたオープンソースプラットフォームです。KubernetesはもともとGoogleによって開発され、現在はクラウドネイティブコンピューティング財団 (CNCF)によって管理されています。Kubernetesは、クラウド上でソフトウェアをオーケストレーションするための標準となっています。人工知能 (AI)と機械学習 (ML)の文脈では、分散学習から高可用性の本番推論まで、エンジニアリングチームが複雑なワークフローを管理できるようにする重要なインフラストラクチャ層として機能します。基盤となるハードウェアを抽象化することで、Kubernetesは、アプリケーションがオンプレミスでホストされているかパブリッククラウドプロバイダー経由でホストされているかにかかわらず、信頼性と効率性を保って実行されることを保証します。
コアアーキテクチャと概念#
Kubernetesの中核はクラスターアーキテクチャであり、ノードと呼ばれる一連のワーカーマシンで構成されています。これらのノードはコンテナ化されたワークロードを実行し、コントロールプレーンがクラスター全体の状態を管理します。Kubernetesでデプロイ可能な最小単位は「Pod」であり、ストレージとネットワークのリソースを共有する1つ以上のコンテナをカプセル化します。この抽象化はコンピュータービジョンアプリケーションにとって重要です。開発者は、グラフィックスプロセッシングユニット (GPUs)向けの特定のCUDAライブラリなどの依存関係を、一貫した環境にパッケージ化できるためです。Amazon Elastic Kubernetes Service (EKS)、Azure Kubernetes Service (AKS)、Google Kubernetes Engine (GKE)などの主要なクラウドサービスは、このアーキテクチャのマネージド版を提供し、データサイエンスチームのメンテナンス負担を軽減します。
AIにとってKubernetesが重要な理由#
機械学習オペレーション (MLOps)におけるKubernetesの主な価値は、動的なワークロードを処理できる点にあります。AIモデルは、トレーニング中に膨大な計算能力を必要とする一方、デプロイ時には低い推論レイテンシを必要とすることがよくあります。
- スケーラビリティ: Kubernetesはオートスケーリングを使用して、リソースを自動的に調整します。トラフィックが突然急増した場合、Horizontal Pod Autoscalerは推論Podの数を増やし、手動で介入することなくスケーラビリティを維持できます。
- リソース最適化: 高価なハードウェアを効率的に割り当てることは重要です。KubernetesはGPUの分割共有とノードアフィニティを可能にし、アクティブなジョブが必要とする場合にのみディープラーニングモデルがリソースを消費するようにします。
- レジリエントなデプロイ: モデルのデプロイ中に高可用性を確保することは不可欠です。ノードに障害が発生した場合、Kubernetesは影響を受けたPodを正常なノード上で自動的に再起動し、重要なAPIサービスのダウンタイムを防ぎます。
実世界での利用例#
Kubernetesは、さまざまな業界における大規模なAI実装の基盤となっています。
-
スマートシティの交通管理: 自治体は、数千の交差点からの映像フィードを分析するために、Ultralytics YOLO26モデルをデプロイする場合があります。Kubernetesを使用すると、システムはラッシュアワー中にリソースを動的にスケールアップして増加した物体検出の負荷に対応し、夜間にはスケールダウンしてコストを削減できます。このアプローチは、現代の交通管理システムの基盤となっています。
-
Eコマースのパーソナライゼーション: オンライン小売業者は、マイクロサービス上に構築された複雑なレコメンデーションシステムを利用しています。あるサービスが候補生成を処理し、別のサービスが再ランキングを管理する場合があります。Kubernetesはこれらの個別のサービスをオーケストレーションするため、チームはショッピング体験全体を中断することなくランキング用のニューラルネットワークを個別に更新でき、継続的インテグレーションを実現できます。
KubernetesとDockerの違い#
よくある混乱の一つは、KubernetesとDockerの関係です。両者は競合するものではなく、補完的なテクノロジーです。Dockerは個々のコンテナを作成して実行するためのツール(アプリケーションをパッケージ化するもの)であるのに対し、Kubernetesは複数のマシンにまたがるコンテナ群を管理するためのツールです。Dockerを使用してモデルの重みとコードをイメージにビルドし、Kubernetesを使用して、そのイメージを本番環境でどこに、いつ、何コピー実行するかを決定します。
例: コンテナ化用の推論スクリプト#
Kubernetesにモデルをデプロイする場合、開発者は通常、コンテナのエントリーポイントとして機能するPythonスクリプトから始めます。次のコードは、Ultralytics YOLO26モデルを使用した単純な推論タスクを示しています。このスクリプトはPod内で実行され、受信したリクエストを処理します。
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上のMLワークフローのデプロイをシンプルかつポータブルでスケーラブルにすることに特化した、人気のツールキットです。クラスターの健全性とアプリケーションメトリクスを監視するため、エンジニアはしばしばPrometheusを利用します。これらの環境へのモデルのトレーニングとデプロイの複雑さをさらに軽減するため、Ultralytics Platformはデータセット管理とモデルのトレーニングを自動化する統合インターフェースを提供し、ユーザーがクラウドコンピューティングクラスター向けに準備されたモデルをエクスポートできるようにします。さらに、Helmなどのパッケージマネージャーは、再利用可能なチャートを通じて複雑なKubernetesアプリケーションの管理を支援します。









