用語集

ドッカー

DockerでAI/MLワークフローを簡素化!モデルをデプロイし、再現性を確保し、環境間で効率的にスケールする方法を学びましょう。

Dockerは、コンテナと呼ばれるパッケージでソフトウェアを提供するためにOSレベルの仮想化を使用することで、アプリケーションのデプロイ、スケーリング、管理を自動化するオープンソースのプラットフォームです。機械学習(ML)エンジニアやデータサイエンティストにとって、Dockerは環境の不整合という一般的な問題、つまり悪名高い「私のマシンでは動作する」という問題を解決する重要なツールだ。Dockerは、アプリケーションのコードを、実行に必要なすべてのライブラリ、PyTorchのようなフレームワーク、その他の依存関係とともにバンドルすることで、モデルがどこにデプロイされても同じように動作することを保証します。この一貫性は信頼性の高いモデルデプロイの基本であり、最新の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からNVIDIA Jetsonのようなリソースに制約のあるエッジAIデバイスまで、様々なプラットフォームに一貫してデプロイすることができます。これは、スマート監視のようなアプリケーションにおけるリアルタイム推論に不可欠な要件です。
  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の未来に参加しませんか。世界のイノベーターとつながり、協力し、成長する

今すぐ参加する
クリップボードにコピーされたリンク