YOLO Vision Shenzhen
深セン
今すぐ参加
用語集

Kubernetes

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

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

主要なアーキテクチャと概念

Kubernetesの核心は、ノードと呼ばれるワーカーマシンのセットで構成されるクラスターアーキテクチャで動作することです。これらのノードはコンテナ化されたワークロードを実行し、コントロールプレーンがクラスター全体の状態を管理します。Kubernetesでデプロイ可能な最小単位は「Pod」であり、ストレージとネットワークリソースを共有する1つ以上のコンテナをカプセル化します。この抽象化は、開発者がGraphics Processing Units (GPUs)用の特定のCUDAライブラリなどの依存関係を一貫した環境にパッケージ化できるため、コンピュータービジョンアプリケーションにとって不可欠です。Amazon Elastic Kubernetes Service (EKS)Azure Kubernetes Service (AKS)Google Kubernetes Engine (GKE)などの主要なクラウドサービスは、このアーキテクチャのマネージドバージョンを提供し、データサイエンスチームのメンテナンス負担を軽減します。

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

Machine Learning Operations (MLOps)におけるKubernetesの主な価値は、動的なワークロードを処理する能力にあります。AIモデルは、トレーニング中に大規模な計算能力を必要とし、デプロイ時には低いinference latencyが求められることがよくあります。

  • スケーラビリティ: Kubernetesはオートスケーリングを利用してリソースを自動的に調整します。トラフィックが急増した場合、Horizontal Pod Autoscalerは推論ポッドの数を増やし、手動介入なしにスケーラビリティを維持できます。
  • リソース最適化: 高価なハードウェアを効率的に割り当てることは非常に重要です。KubernetesはGPUの分割共有とノードアフィニティを可能にし、深層学習モデルがアクティブなジョブが必要とする場合にのみリソースを消費するようにします。
  • 回復力のあるデプロイメント: モデルのデプロイ中に高可用性を確保することは不可欠です。ノードが故障した場合、Kubernetesは影響を受けたPodを健全なノードで自動的に再起動し、重要なAPIサービスのダウンタイムを防ぎます。

実際のアプリケーション

Kubernetesは、さまざまな産業における多くの大規模AI実装の基盤です:

  1. スマートシティ交通管理: 自治体は、数千の交差点からのビデオフィードを分析するためにUltralytics YOLO26モデルをデプロイする可能性があります。Kubernetesを使用することで、システムはラッシュアワー中にリソースを動的にスケールアップして増加したobject detection負荷を処理し、夜間にはスケールダウンしてコストを節約できます。このアプローチは、現代の交通管理システムにとって不可欠です。
  2. 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アプリケーションの管理を支援します。

共にAIの未来を築きましょう!

未来の機械学習で、新たな一歩を踏み出しましょう。