Yolo 深圳
深セン
今すぐ参加
用語集

Docker

DockerでAI/MLワークフローを簡素化しましょう!モデルのデプロイ方法、再現性の確保、環境全体での効率的なスケーリングについて学びます。

Dockerは、コンテナ化によってアプリケーションのデプロイ、スケーリング、管理を自動化するオープンソースのプラットフォームです。 コンテナ化です。急速に進化する 人工知能(AI)の分野で、Docker は、「自分のマシン上で動作する」問題として知られる重要な課題を解決します。機械学習(ML)モデルを 機械学習(ML)モデルを Dockerは、機械学習(ML)モデルをそのコード、ランタイム、システムツール、ライブラリとともにコンテナと呼ばれる標準化されたユニットにパッケージ化することで、ソフトウェアが厳密に同じ方法で実行されることを保証する。 ソフトウェアは、コンピューティング環境に関係なく、厳密に同じ方法で実行されることが保証される。この一貫性は、最新の MLOpsパイプラインには不可欠であり、以下のことを容易にします ローカル開発から クラウド・コンピューティング・インフラやエッジ・デバイスへのスムーズな移行を促進します。

Dockerのコアコンセプト

Dockerを理解するには、そのワークフローを定義する3つの基本コンポーネントに精通する必要がある。

  • Dockerfile:これは、ユーザーがコマンドラインで呼び出すことができるすべてのコマンドを含むテキスト文書です。 行で呼び出すことができるすべてのコマンドを含むテキスト文書です。AIプロジェクトにとって Dockerfileはレシピの役割を果たす。 オペレーティングシステムを指定し Pythonのような言語をインストールし、必要な フレームワーク PyTorchまたは TensorFlow.
  • Dockerイメージ:イメージは、Dockerコンテナを作成するための指示が書かれた読み取り専用のテンプレートです。 特定の瞬間のアプリケーションの状態をキャプチャします。開発者はしばしば、NVIDIA NGCのようなレジストリから最適化されたベースイメージを使用します。 NVIDIA ようなレジストリから最適化されたベースイメージを使用します。 GPUアクセラレーション用のプリインストール・ドライバを活用するためです。
  • Dockerコンテナ:コンテナは、実行可能なイメージのインスタンスです。ホストのオペレーティング・システム・カーネルを共有しながら、アプリケーションをホスト・システムから分離する。 ホストのオペレーティング・システム・カーネルを共有しながら、アプリケーションをホスト・システムから分離します。この分離により、ソフトウェアの競合を確実に抑えることができます。 を最小限に抑えることができます。 モデルのデプロイにとって重要な要件である。

実際のAIアプリケーションにおけるDocker

Dockerは、堅牢なコンピュータ・ビジョン(CV)ソリューションのデプロイに不可欠です。 コンピュータビジョン(CV)ソリューションのデプロイに不可欠です。

  1. エッジAIの展開:のようなリソースに制約のあるデバイスにモデルをデプロイする場合、Dockerコンテナは以下のような機能を提供します。 NVIDIA Jetsonのようなリソースに制約のあるデバイスにモデルをデプロイする場合、Dockerコンテナは、以下のような特定の依存関係を含む軽量環境を提供します。 のような特定の依存関係を含む軽量環境を提供します。 OpenCVやハードウェア固有のライブラリを含む軽量環境を提供します。例えば Ultralytics YOLO11モデルをDockerコンテナ は、何千台ものリモート・カメラに簡単にプッシュできます。 オブジェクト検出のために プッシュすることができます。
  2. 再現可能な研究とトレーニング学術・産業研究において、結果を再現することは非常に重要である。 重要です。Dockerを使用することで、研究者はモデルのトレーニング中に使用されたすべてのライブラリの正確なバージョンを凍結することができます。 凍結することができます。これにより これにより、ソフトウェアのアップデートによる食い違いがなくなり、他の研究者が研究結果を検証したり、研究結果を基に研究を進めることができるため、データサイエンスにおけるより良いコラボレーションが促進されます。 データサイエンスにおけるより良いコラボレーションを促進します。

DockerとYOLO統合

Dockerコンテナ内で推論を実行することで、環境をクリーンな状態に保ち、依存関係が他のシステムレベルのパッケージと衝突しないようにすることができます。 他のシステムレベルのパッケージと衝突しないようにします。以下は、通常Dockerコンテナ内で実行されるシンプルなPython スクリプトです。 コンテナ内で実行されるシンプルなPythonスクリプトです。 検出タスクを実行します。

from ultralytics import YOLO

# Load the YOLO11 model (downloads automatically if not present)
model = YOLO("yolo11n.pt")

# Perform object detection on an online image source
results = model("https://ultralytics.com/images/bus.jpg")

# Print the number of objects detected to verify inference
print(f"Detected {len(results[0].boxes)} objects in the image.")

Dockerと仮想マシンの比較

どちらの技術もアプリケーションを分離するが、その機能は異なる。

  • 仮想マシン(VM):VMは、完全なゲスト・オペレーティング・システムを含むコンピュータ・システム全体をエミュレートします。 システム全体をエミュレートする。そのため、VM は重く、起動が遅くなります。 Red Hat は、アーキテクチャの違いを示す詳細な比較 を提供しています。
  • Dockerコンテナ:コンテナは、ハードウェアではなくオペレーティング・システムを仮想化する。ホストのカーネルを共有する。 コンテナはホストのカーネルを共有するため、非常に軽量で効率的です。この効率性は のような高性能モデルをデプロイする際には極めて重要だ。 YOLO26のような高性能モデルを展開する際に、この効率性は極めて重要である。 オーバーヘッドを最小限に抑えることを目的としている。

Kubernetesとの関係

DockerとKubernetesは別物だが、補完的なツールである。 ツールである。Dockerは個々のコンテナの作成と実行に使用される。しかし、数百のコンテナをモデルサービング用のサーバークラスタ全体で管理する場合 サーバーのクラスタ全体で数百のコンテナを管理する場合は、オーケストレーション・ツールが必要になる。 オーケストレーションツールが必要になる。KubernetesはDockerコンテナのスケジューリングと実行を調整し、エンタープライズグレードの高可用性とスケーラビリティを確保します。 エンタープライズグレードの AIエージェントのための高可用性とスケーラビリティを保証します。この相乗効果については Kubernetesのドキュメントをご覧ください。

Ultralytics Platformなど、Ultralytics エコシステムの今後の開発では、このようなコンテナ化の原則を活用して、データソーシングやトレーニング、デプロイメントのワークフローを合理化する予定です。 コンテナ化の原則を活用し、データソーシング、トレーニング、デプロイのワークフローを合理化し、複雑なインフラ管理をさらに抽象化します。 インフラ管理の複雑さをさらに抽象化します。

Ultralytics コミュニティに参加する

AIの未来を共に切り開きましょう。グローバルなイノベーターと繋がり、協力し、成長を。

今すぐ参加