用語集

コンテナ化

AI/MLプロジェクトにおけるコンテナ化の威力をご覧ください。ワークフローを合理化し、一貫性を確保し、最先端のツールで効率的に拡張します。

Ultralytics HUB で
を使ってYOLO モデルをシンプルにトレーニングする。

さらに詳しく

コンテナ化とは、ソフトウェア・コードを必要な依存関係、ライブラリ、設定ファイルとともに、"コンテナ "と呼ばれる自己完結型の単一ユニットにパッケージ化する手法です。このパッケージ化により、開発者のローカルマシン、テスト環境、クラウド上の本番サーバーなど、さまざまなコンピューティング環境において、アプリケーションの確実かつ一貫した実行が保証される。インスタンスごとに完全なオペレーティング・システムを必要とする従来の仮想マシン(VM)とは異なり、コンテナはホスト・システムのOSカーネルを共有する。これにより、コンテナは大幅に軽量化され、起動が速くなり、リソースの使用効率が向上します。これは、複雑なソフトウェア要件を持つことが多い、リソース集約型の人工知能(AI)や機械学習(ML)アプリケーションにとって特に有益です。

主要概念と構成要素

コンテナ化を理解するには、いくつかの核となる考え方がある:

  • コンテナ・イメージ:コード、ランタイム、システムツール、システムライブラリ、設定など、ソフトウェアの実行に必要なすべてを含む、軽量でスタンドアロンの実行可能パッケージ。イメージは多くの場合、特別なファイル(Dockerfileなど)の指示に基づいて構築される。
  • コンテナ:コンテナ・イメージの実行インスタンス。他のコンテナやホストシステムから分離されて実行されるが、ホストOSカーネルを共有する。同じホストマシン上で複数のコンテナを実行できる。
  • Docker Docker社によって開発された、最も人気のあるコンテナ化プラットフォーム。コンテナ化されたアプリケーションを簡単に構築、共有、実行するためのツールを提供する。Ultralytics 、YOLO モデルを設定するためのDockerクイックスタートガイドを提供しています。
  • コンテナ・レジストリ:コンテナイメージを保存・配布するためのリポジトリ。Docker Hubは広く使われているパブリックレジストリだが、プライベートレジストリも一般的。
  • オーケストレーション: KubernetesやDocker Swarmのようなツールは、複数のホストマシンにまたがってデプロイ、スケーリング、ネットワーキング、可用性を処理し、コンテナのライフサイクルを大規模に管理するために使用される。Cloud Native Computing Foundation(CNCF)は、コンテナ・オーケストレーションに関連する多くのプロジェクトをホストしている。

AI/MLにおけるコンテナ化のメリット

コンテナ化は、MLやAIのプロジェクトに大きな利点をもたらす:

  • 再現性:コンテナは正確な環境(ライブラリ、Pythonのようなバージョン)をカプセル化します。 PyTorchOpenCVのようなバージョン、コンフィギュレーション)をカプセル化し、開発、テスト、実運用間の一貫性を確保します。これは、再現可能な研究と信頼性の高いモデルのデプロイメントに不可欠です。
  • 依存関係の管理:AI/MLプロジェクトでは、多くのライブラリの特定のバージョンに依存することがよくあります。コンテナはこれらの依存関係を分離し、異なるプロジェクトやシステム・ライブラリ間の競合を防ぎます。
  • スケーラビリティ:コンテナは素早く起動・停止できるため、需要に応じてアプリケーションを簡単にスケールアップまたはスケールダウンできる。これは、リアルタイム推論で変動するワークロードに対応するために不可欠です。
  • 移植性:コンテナは、開発者のラップトップからオンプレミスのサーバー、AWSGoogle CloudMicrosoft Azureのようなパブリック・クラウドまで、さまざまな環境で一貫して実行される。これにより、エッジデバイスを含むさまざまなターゲットへのデプロイが簡素化されます。コンテナ化によって容易になるさまざまなモデル展開オプションをご覧ください。
  • 効率性:コンテナは、インスタンスごとに個別のOSを必要としないため、VMよりも使用するリソースCPU、メモリ、ストレージ)が少なく、同じハードウェア上でより高密度のアプリケーションを実現できる。これは効率的な機械学習オペレーション(MLOps)と一致する。

コンテナ化と仮想化の比較

コンテナ化と仮想化はどちらも隔離された環境を作るが、そのアプローチは大きく異なる。仮想マシン(VM)はハードウェア・システム全体をエミュレートし、ハイパーバイザー上で完全なゲスト・オペレーティング・システムを実行する。これは強力な分離を提供するが、リソースの消費という点で大きなオーバーヘッドが発生する(CPUメモリ)と起動時間の点で大きなオーバーヘッドが発生する。コンテナは逆に、オペレーティング・システムそのものを仮想化し、Dockerのようなコンテナ化エンジンによってホストOSカーネルを共有する。その結果、フットプリントが大幅に小さくなり、起動が速くなり、パフォーマンスが向上する。多くのAI/MLタスク、特にマイクロサービスや迅速なスケーラビリティを必要とするアプリケーションのデプロイには、コンテナが好まれることが多い。VMは、同じハードウェア上で異なるオペレーティング・システムを実行する必要がある場合や、アプリケーション間の絶対的な分離が必要な場合に適している。

AI/MLの実世界での応用

コンテナ化はAI/MLのライフサイクル全体で広く使われている:

  1. オブジェクト検出モデルの展開:オブジェクト検出モデルの Ultralytics YOLOオブジェクト検出用にトレーニングされたモデルは、Dockerコンテナにパッケージすることができます。このコンテナには、モデルの重み、推論スクリプト、必要な依存関係(PyTorchCUDA ライブラリなど)が含まれています。このコンテナは、強力なクラウドGPUからリソースに制約のあるエッジAIデバイスまで、様々なプラットフォームに一貫してデプロイすることができ、環境に関係なくモデルが期待通りに動作することを保証します。Ultralytics 、これを容易にするためのDockerクイックスタートガイドを提供しています。
  2. NLPモデルをマイクロサービスとして提供: 自然言語処理(NLP)アプリケーションを開発するチームは、以下のようなプラットフォームのモデルを使用しています。 Hugging Faceのようなプラットフォームからのモデルを使用して自然言語処理(NLP)アプリケーションを開発するチームは、異なるコンポーネント(例えば、テキスト前処理、モデル推論、APIエンドポイント)を別々のマイクロサービスとしてコンテナ化することができます。これらのコンテナは、Kubernetesを使用して管理することができ、各コンポーネントの独立したスケーリングとアップデートを可能にし、より弾力的で管理しやすいシステムアーキテクチャにつながり、多くの場合、マイクロサービスアーキテクチャの原則に従います。Ultralytics HUBのようなプラットフォームも、合理化されたモデル管理とデプロイのためにコンテナ化の原則を活用しています。

Open Container Initiative (OCI)のような取り組みによって標準化されたコンテナ化は、特に急速に進化するAIやComputer Vision (CV)の分野において、最新のソフトウェア開発とデプロイの要となっている。

すべて読む