ヨロビジョン深圳
深セン
今すぐ参加
用語集

Docker

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

Dockerは、OSレベルの仮想化を使用して、コンテナと呼ばれるパッケージでソフトウェアを配信することにより、アプリケーションのデプロイ、スケーリング、および管理を自動化するオープンソースプラットフォームです。機械学習(ML)エンジニアやデータサイエンティストにとって、Dockerは、環境の不整合という一般的な問題、つまり悪名高い「自分のマシンでは動く」問題を解決する重要なツールです。アプリケーションのコードを、PyTorchのようなすべてのライブラリ、フレームワーク、および実行に必要なその他の依存関係とともにバンドルすることにより、Dockerは、モデルがどこにデプロイされても同じように動作することを保証します。この一貫性は、信頼性の高いモデルのデプロイにとって不可欠であり、現代のMLOpsプラクティスの基礎となっています。Ultralyticsは、ユーザーがアプリケーションのコンテナ化を開始するのに役立つDockerクイックスタートガイドを提供しています。

Dockerの仕組み

Dockerのワークフローは、アプリケーションをパッケージ化して実行するために連携する、いくつかのコアコンポーネントを中心に展開されます。

  • Dockerfile: これは、一連のコマンドまたは命令のリストを含む単純なテキストファイルです。これらの命令は、特定のDockerイメージを構築する方法をDockerに指示します。MLプロジェクトの場合、Dockerfileは、ベースとなるオペレーティングシステム、PythonやOpenCVのような依存関係をインストールするコマンド、モデルファイルと推論コードのコピー、およびコンテナの起動時に実行するコマンドを指定します。Dockerfileの詳細については、Dockerの公式ドキュメントを参照してください。
  • Dockerイメージ: イメージは、ソフトウェアを実行するために必要なすべてのもの(コード、ランタイム、ライブラリ、環境変数、構成ファイルなど)を含む、軽量でスタンドアロンな実行可能パッケージです。これは、Dockerfileから作成された読み取り専用のテンプレートです。MLに特化したイメージは、NVIDIA NGCのようなレジストリで入手できることが多く、GPUドライバとMLフレームワークが事前に構成されています。
  • Dockerコンテナ: コンテナは、Dockerイメージの実行可能なインスタンスです。イメージを実行すると、コンテナとなり、ホストマシンのカーネル上で実行される独立したプロセスとなります。複数のコンテナを同じマシン上で実行し、OSカーネルを他のコンテナと共有できます。各コンテナは、ユーザースペースで分離されたプロセスとして実行されます。これにより、従来の仮想化と比較して非常に効率的になります。この技術は、Open Container Initiative (OCI)のような組織によって標準化されています。

現実世界のAI/MLアプリケーション

Dockerは、実験から本番環境まで、AIモデルのライフサイクル全体を簡素化します。

  1. コンピュータビジョンモデルのエッジへのデプロイ:物体検出用にトレーニングされたUltralytics YOLO11モデルは、Dockerコンテナにパッケージ化できます。このコンテナには、モデルの重み、推論スクリプト、および特定のCUDAライブラリバージョンなど、必要なすべての依存関係が含まれています。この単一のコンテナは、強力なクラウドGPUからリソースが制約されたエッジAIデバイス(NVIDIA Jetsonなど)まで、さまざまなプラットフォームに一貫してデプロイできます。これにより、モデルが期待どおりに動作することが保証されます。これは、スマート監視などのアプリケーションにおけるリアルタイム推論の重要な要件です。
  2. 再現可能な研究環境の作成: 画像セグメンテーションのための新しいアルゴリズムを開発しているデータサイエンティストは、Python、TensorFlow、およびその他のライブラリの特定のバージョンを固定するDockerコンテナを作成できます。このコンテナ化された環境は、共同研究者と共有したり、研究論文と一緒に公開したりして、他の人がトレーニング環境を完全に再現し、結果を検証できるようにすることができます。Ultralytics HUBのようなプラットフォームは、コンテナテクノロジーと統合して、このプロセスをさらに効率化します。

類似用語との比較

Dockerはコンテナ化の中心ですが、他のテクノロジーと組み合わせて使用​​されることがよくあります。

  • コンテナ化: これは、ソフトウェアをコンテナにパッケージ化するという一般的な概念です。Dockerは、コンテナを構築、出荷、および実行するためのツールを提供する、最も一般的なコンテナ化プラットフォームです。
  • Kubernetes: Dockerは単一ホスト上の個々のコンテナを管理しますが、Kubernetesはコンテナオーケストレーションプラットフォームです。Kubernetesは、コンテナ化されたアプリケーションのデプロイ、スケーリング、および管理を、マシンクラスタ全体にわたって自動化します。Dockerを輸送コンテナの作成、Kubernetesを船舶と港湾を管理するシステムと考えると分かりやすいでしょう。詳細については、Kubernetesの公式サイトをご覧ください。
  • 仮想マシン(VM): VMは、ゲストOSを含むハードウェアシステム全体をエミュレートすることで、分離を提供します。Dockerによって管理されるコンテナは、OSを仮想化し、ホストカーネルを共有します。これにより、コンテナはVMよりもはるかに軽量で高速、かつリソース効率が高くなりますが、VMはより強力な分離を提供します。Dockerの公式ウェブサイトに優れた比較があります。

Dockerを活用することで、AIおよびコンピュータビジョン(CV)の実践者は、ワークフローの効率、コラボレーション、およびデプロイされたモデルの信頼性を大幅に向上させることができます。Dockerの目的の一般的な概要については、OpenSource.comのDockerの説明のようなリソースがわかりやすい紹介を提供しています。このテクノロジーは、幅広いモデルデプロイメントオプションの重要なイネーブラーです。

Ultralyticsコミュニティに参加しませんか?

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

今すぐ参加
クリップボードにコピーしました