Kubernetes
KubernetesがAIモデルのデプロイとスケーリングをどのように自動化するかを探究します。高性能なコンピュータビジョンのために、K8s上でUltralytics YOLO26をオーケストレーションする方法を学びましょう。
Kubernetesは、K8sとも呼ばれ、コンテナ化されたアプリケーションのデプロイ、スケーリング、管理を自動化するために設計されたオープンソースのプラットフォームです。元々はGoogleによって開発され、現在はCloud Native Computing Foundation (CNCF)によって維持されているKubernetesは、クラウドにおけるソフトウェアオーケストレーションの標準となっています。Artificial Intelligence (AI)およびMachine Learning (ML)の文脈において、Kubernetesは、エンジニアリングチームがdistributed trainingから高可用性な本番推論に至るまで、複雑なワークフローを管理することを可能にする重要なインフラストラクチャレイヤーとして機能します。下位のハードウェアを抽象化することにより、Kubernetesは、オンプレミスでホストされているかパブリッククラウドプロバイダーを介してホストされているかに関係なく、アプリケーションが信頼性高く効率的に実行されることを保証します。
コアアーキテクチャと概念#
その核心において、Kubernetesはノードと呼ばれる一連のワーカーマシンで構成されるクラスターアーキテクチャ上で動作します。これらのノードはcontainerizationワークロードを実行し、コントロールプレーンがクラスター全体の状態を管理します。Kubernetesにおける最小のデプロイ可能単位は「Pod」であり、ストレージとネットワークリソースを共有する1つ以上のコンテナをカプセル化します。この抽象化は、開発者が特定のCUDAライブラリなどの依存関係をGraphics Processing Units (GPUs)向けに一貫した環境にパッケージ化できるようにするため、computer visionアプリケーションにとって不可欠です。Amazon Elastic Kubernetes Service (EKS)、Azure Kubernetes Service (AKS)、およびGoogle Kubernetes Engine (GKE)などの主要なクラウドサービスは、このアーキテクチャのマネージドバージョンを提供し、データサイエンスチームのメンテナンス負担を軽減します。
AIにとってKubernetesが重要な理由#
Machine Learning Operations (MLOps)におけるKubernetesの主な価値は、動的なワークロードを処理する能力にあります。AIモデルは、多くの場合、トレーニング中に膨大な計算能力を必要とし、デプロイ中には低いinference latencyを必要とします。
- スケーラビリティ: Kubernetesはオートスケーリングを採用して、リソースを自動的に調整します。トラフィックの急増が発生した場合、Horizontal Pod Autoscalerは手動の介入なしに推論Podの数を増やしてscalabilityを維持できます。
- リソースの最適化: 高価なハードウェアを効率的に割り当てることは非常に重要です。KubernetesはGPUのフラクショナル共有とノードアフィニティを可能にし、ディープラーニングモデルがアクティブなジョブによって必要な時だけリソースを消費するようにします。
- レジリエントなデプロイ: model deployment中の高可用性を確保することは不可欠です。ノード障害が発生した場合、Kubernetesは正常なノード上で影響を受けたPodを自動的に再起動し、重要なAPIサービスのダウンタイムを防ぎます。
実社会での応用#
Kubernetesは、さまざまな業界における大規模なAI実装のバックボーンとなっています。
-
スマートシティ交通管理: 自治体は、数千の交差点からのビデオフィードを分析するためにUltralytics YOLO26モデルをデプロイする場合があります。Kubernetesを使用することで、システムはラッシュアワー中にリソースを動的にスケールアップして増加したobject detection負荷を処理し、夜間にスケールダウンしてコストを削減できます。このアプローチは、現代のtraffic management systemsの基本となります。
-
Eコマースのパーソナライゼーション: オンライン小売業者は、マイクロサービス上に構築された複雑なrecommendation systemsを利用しています。あるサービスが候補生成を処理し、別のサービスが再ランキングを管理する場合があります。Kubernetesはこれらの異なるサービスをオーケストレーションし、チームがショッピング体験全体を中断することなくランキングneural networkを独立して更新できるようにし、継続的インテグレーションを促進します。
KubernetesとDockerの違い#
よくある誤解は、KubernetesとDockerの関係についてのものです。これらは競合他社ではなく、むしろ補完的なテクノロジーです。Dockerは個々のコンテナを作成および実行するためのツール(アプリケーションのパッケージ化)であるのに対し、Kubernetesは複数のマシンにわたってそれらのコンテナのフリートを管理するためのツールです。Dockerを使用してmodel weightsとコードをイメージにビルドし、その後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は、データセット管理とモデルトレーニングを自動化する統一されたインターフェースを提供し、ユーザーがcloud computingクラスターの準備ができたモデルをエクスポートできるようにします。さらに、Helmのようなパッケージマネージャーは、再利用可能なチャートを通じて複雑なKubernetesアプリケーションを管理するのに役立ちます。






