Kubernetes
KubernetesがAIモデルのデプロイとスケーリングをどのように自動化するかを探究します。高性能なコンピュータビジョンのために、K8s上でUltralytics YOLO26をオーケストレーションする方法を学びましょう。
Kubernetes(K8sとも呼ばれる)は、コンテナ化されたアプリケーションのデプロイ、スケーリング、管理を自動化するために設計されたオープンソースプラットフォームです。当初はGoogleによって開発され、現在はCloud Native Computing Foundation (CNCF)によって管理されているKubernetesは、クラウドにおけるソフトウェアオーケストレーションの標準となりました。人工知能 (AI)および機械学習 (ML)の文脈では、分散学習から高可用性の本番環境推論に至るまで、エンジニアリングチームが複雑なワークフローを管理するための重要なインフラストラクチャレイヤーとして機能します。Kubernetesは基盤となるハードウェアを抽象化することで、オンプレミス環境かパブリッククラウドプロバイダーかを問わず、アプリケーションが確実かつ効率的に実行されることを保証します。
Link to this sectionコアアーキテクチャと概念#
Kubernetesの核心はクラスターアーキテクチャにあり、これはノードと呼ばれる一連のワーカーマシンで構成されています。これらのノードはコンテナ化ワークロードを実行し、コントロールプレーンがクラスター全体の状態を管理します。Kubernetesにおける最小のデプロイ単位は「Pod」であり、これはストレージとネットワークリソースを共有する1つ以上のコンテナをカプセル化します。この抽象化はコンピュータビジョンアプリケーションにとって不可欠であり、開発者はGraphics Processing Units (GPUs)用の特定のCUDAライブラリなどの依存関係を一貫した環境にパッケージ化できます。Amazon Elastic Kubernetes Service (EKS)、Azure Kubernetes Service (AKS)、Google Kubernetes Engine (GKE)といった主要なクラウドサービスは、このアーキテクチャのマネージドバージョンを提供し、データサイエンスチームのメンテナンス負荷を軽減しています。
Link to this sectionAIにとってKubernetesが重要な理由#
機械学習オペレーション (MLOps)におけるKubernetesの主な価値は、動的なワークロードを処理する能力にあります。AIモデルは多くの場合、学習中に膨大な計算能力を必要とし、デプロイ時には低い推論レイテンシが求められます。
- スケーラビリティ: Kubernetesはオートスケーリングを採用しており、リソースを自動的に調整します。トラフィックが急増した場合、Horizontal Pod Autoscalerが推論Podの数を増やすことで、手動操作なしでスケーラビリティを維持できます。
- リソースの最適化: 高価なハードウェアを効率的に割り当てることは非常に重要です。KubernetesはGPUのフラクショナル共有とノードアフィニティを可能にし、ディープラーニングモデルがアクティブなジョブによって必要な時だけリソースを消費するようにします。
- 復元力のあるデプロイメント: モデルデプロイメント中の高可用性を確保することは不可欠です。ノードが故障した場合、Kubernetesは影響を受けたPodを健全なノードで自動的に再起動し、重要なAPIサービスのダウンタイムを防ぎます。
Link to this section実社会での応用#
Kubernetesは、さまざまな業界における大規模なAI実装のバックボーンとなっています。
-
スマートシティの交通管理: 自治体はUltralytics YOLO26モデルを導入し、数千の交差点からのビデオフィードを分析できます。Kubernetesを使用することで、システムはラッシュアワー時にリソースを動的にスケールアップして物体検出負荷の増大に対応し、夜間にはコスト削減のためにスケールダウンできます。このアプローチは、現代の交通管理システムの基本です。
-
Eコマースのパーソナライゼーション: オンライン小売業者は、マイクロサービス上に構築された複雑なレコメンデーションシステムを利用しています。あるサービスが候補生成を担当し、別のサービスがリランキングを管理するといった構成が可能です。Kubernetesはこれらの異なるサービスをオーケストレーションし、チームがランキング用のニューラルネットワークをショッピング体験全体を中断することなく個別に更新できるようにすることで、継続的インテグレーションを促進します。
Link to this sectionKubernetesとDockerの違い#
よくある誤解として、KubernetesとDockerの関係性があります。これらは競合するものではなく、補完的なテクノロジーです。Dockerは個々のコンテナを作成して実行する(アプリケーションをパッケージ化する)ためのツールであり、Kubernetesはそれらのコンテナ群を複数のマシンにわたって管理するためのツールです。Dockerを使用してモデルの重みとコードをイメージにビルドし、Kubernetesを使用してそのイメージのコピーを本番環境のどこで、いつ、どれだけ実行するかを決定します。
Link to this section例:コンテナ化のための推論スクリプト#
モデルを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.")Link to this sectionツールとエコシステム#
Kubernetesエコシステムには、データサイエンス向けに最適化された広範なツールが含まれています。Kubeflowは、Kubernetes上でのMLワークフローのデプロイをシンプル、ポータブル、かつスケーラブルにすることを目的とした人気のあるツールキットです。クラスターの健全性やアプリケーションのメトリクスを監視するために、エンジニアはPrometheusをよく利用します。このような環境へのモデルの学習とデプロイの複雑さをさらに簡素化するために、Ultralytics Platformはデータセット管理とモデル学習を自動化する統合インターフェースを提供しており、ユーザーはクラウドコンピューティングクラスターですぐに使用できるモデルをエクスポートできます。さらに、Helmのようなパッケージマネージャーは、再利用可能なチャートを通じて複雑なKubernetesアプリケーションを管理するのに役立ちます。






