Ultralytics Dockerクイックスタートガイド

Ultralytics Docker Package Visual

本ガイドは、UltralyticsプロジェクトのためのDocker環境設定に関する包括的な入門書です。Dockerは、アプリケーションをコンテナ内で開発、出荷、実行するためのプラットフォームです。これは、デプロイ場所に関係なくソフトウェアが常に同じように動作することを保証する上で特に有益です。詳細については、Docker HubのUltralytics Dockerリポジトリをご覧ください。

Docker Image Version Docker Pulls

学習内容

  • NVIDIAサポート付きDockerの設定
  • Ultralytics Dockerイメージのインストール
  • CPUまたはGPUサポート付きDockerコンテナ内でのUltralyticsの実行
  • Dockerとディスプレイサーバーを使用してUltralyticsの検出結果を表示する方法
  • ローカルディレクトリのコンテナへのマウント


Watch: How to Get started with Docker | Usage of Ultralytics Python Package inside Docker live demo 🎉

前提条件

  • システムにDockerがインストールされていることを確認してください。インストールされていない場合は、Dockerのウェブサイトからダウンロードしてインストールできます。
  • システムにNVIDIA GPUが搭載されており、NVIDIAドライバがインストールされていることを確認してください。
  • NVIDIA Jetsonデバイスを使用している場合は、適切なJetPackバージョンがインストールされていることを確認してください。詳細については、NVIDIA Jetsonガイドを参照してください。

NVIDIAサポート付きDockerの設定

まず、以下のコマンドを実行して、NVIDIAドライバが正しくインストールされているか確認してください。

nvidia-smi

NVIDIA Container Toolkitのインストール

次に、DockerコンテナでGPUサポートを有効にするため、NVIDIA Container Toolkitをインストールします。

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
  | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
    | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

パッケージリストを更新し、nvidia-container-toolkitパッケージをインストールします。

sudo apt-get update

最新バージョンのnvidia-container-toolkitをインストールします。

sudo apt-get install -y nvidia-container-toolkit \
  nvidia-container-toolkit-base libnvidia-container-tools \
  libnvidia-container1
オプション:nvidia-container-toolkitの特定バージョンのインストール

オプションとして、環境変数NVIDIA_CONTAINER_TOOLKIT_VERSIONを設定することで、nvidia-container-toolkitの特定のバージョンをインストールできます。

export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.17.8-1
sudo apt-get install -y \
  nvidia-container-toolkit=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
  nvidia-container-toolkit-base=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
  libnvidia-container-tools=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
  libnvidia-container1=${NVIDIA_CONTAINER_TOOLKIT_VERSION}
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

DockerでのNVIDIAランタイムの検証

docker info | grep -i runtimeを実行して、ランタイムのリストにnvidiaが表示されることを確認します。

docker info | grep -i runtime

Ultralytics Dockerイメージのインストール

Ultralyticsは、さまざまなプラットフォームやユースケースに合わせて最適化されたいくつかのDockerイメージを提供しています。

  • Dockerfile: 学習に最適なGPUイメージ。
  • Dockerfile-arm64: ARM64アーキテクチャ用。Raspberry Piなどのデバイスに適しています。
  • Dockerfile-cpu: 推論および非GPU環境向けのCPUのみのバージョン。
  • Dockerfile-jetson-jetpack4: Optimized for NVIDIA Jetson devices running NVIDIA JetPack 4.
  • Dockerfile-jetson-jetpack5: Optimized for NVIDIA Jetson devices running NVIDIA JetPack 5.
  • Dockerfile-jetson-jetpack6: Optimized for NVIDIA Jetson devices running NVIDIA JetPack 6.
  • Dockerfile-jupyter: ブラウザでJupyterLabを使用した対話型開発用。
  • Dockerfile-nvidia-arm64: Jetson AGX ThorやDGX SparkなどのNVIDIA ARM64デバイス用。JetPack 7.0およびDGX OSをサポートしています。
  • Dockerfile-python: 軽量アプリケーション用の最小限のPython環境。
  • Dockerfile-python-export: YOLOモデル変換のための完全なエクスポート機能を追加した最小限のPythonイメージ。
  • Dockerfile-conda: Miniconda3を含み、Conda経由でインストールされたUltralyticsパッケージ。
  • Dockerfile-export: モデル変換とベンチマークのためのすべてのエクスポート形式の依存関係がプリインストールされたGPUイメージ。

最新のイメージをプルするには:

# Set image name as a variable
t=ultralytics/ultralytics:latest

# Pull the latest Ultralytics image from Docker Hub
sudo docker pull $t

Dockerコンテナ内でのUltralyticsの実行

Ultralytics Dockerコンテナを実行する方法は以下の通りです。

CPUのみを使用する場合

# Run without GPU
sudo docker run -it --ipc=host $t

GPUを使用する場合

# Run with all GPUs
sudo docker run -it --ipc=host --runtime=nvidia --gpus all $t

# Run specifying which GPUs to use
sudo docker run -it --ipc=host --runtime=nvidia --gpus '"device=2,3"' $t

-itフラグは擬似TTYを割り当て、標準入力を開いたままにするため、コンテナと対話できます。--ipc=hostフラグはホストのIPC名前空間の共有を有効にし、プロセス間でメモリを共有するために不可欠です。--gpusフラグは、コンテナがホストのGPUにアクセスできるようにします。

ファイルアクセシビリティに関する注意

コンテナ内でローカルマシンのファイルを操作するには、Dockerボリュームを使用します。

# Mount a local directory into the container
sudo docker run -it --ipc=host --runtime=nvidia --gpus all -v /path/on/host:/path/in/container $t

/path/on/hostをローカルマシンのディレクトリパスに、/path/in/containerをDockerコンテナ内の目的のパスに置き換えてください。

学習出力の保持

学習結果は、デフォルトでコンテナ内の/ultralytics/runs/<task>/<name>/に保存されます。ホストディレクトリをマウントしない場合、コンテナを削除すると出力は失われます。

学習出力を保持するには:

# Recommended: mount workspace and specify project path
sudo docker run --rm -it -v "$(pwd)":/w -w /w ultralytics/ultralytics:latest \
  yolo train model=yolo26n.pt data=coco8.yaml project=/w/runs

これにより、すべての学習出力がホストマシンの./runsに保存されます。

Dockerコンテナ内でグラフィカルユーザーインターフェース(GUI)アプリケーションを実行する

高度に実験的な機能 - リスクはすべてユーザーが負うものとします

以下の手順は実験的なものです。DockerコンテナとX11ソケットを共有することは潜在的なセキュリティリスクを伴います。そのため、制御された環境でのみこのソリューションをテストすることを推奨します。詳細については、xhostの使用方法に関するこれらのリソース(1)(2)を参照してください。

Dockerは主にバックグラウンドアプリケーションやCLIプログラムをコンテナ化するために使用されますが、グラフィカルプログラムを実行することも可能です。Linuxの世界では、グラフィカル表示を処理する主なグラフィックサーバーとして、X11(X Window Systemとも呼ばれます)とWaylandの2つがあります。開始する前に、現在使用しているグラフィックサーバーを確認することが重要です。以下のコマンドを実行して確認してください。

env | grep -E -i 'x11|xorg|wayland'

X11またはWaylandディスプレイサーバーのセットアップと設定は、本ガイドの範囲外です。上記のコマンドで何も返されない場合は、続行する前に、いずれかをシステムで機能させる必要があります。

GUI付きDockerコンテナの実行

GPUを使用する

GPUを使用している場合は、コマンドに--gpus allフラグを追加できます。

Dockerランタイムフラグ

Dockerのインストールでデフォルトでnvidiaランタイムが使用されない場合は、コマンドに--runtime=nvidiaフラグを追加できます。

X11を使用している場合は、次のコマンドを実行して、DockerコンテナがX11ソケットにアクセスできるようにします。

xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -v ~/.Xauthority:/root/.Xauthority \
  -it --ipc=host $t

このコマンドは、DISPLAY環境変数をホストのディスプレイに設定し、X11ソケットをマウントし、.Xauthorityファイルをコンテナにマップします。xhost +local:dockerコマンドは、DockerコンテナがX11サーバーにアクセスすることを許可します。

GUI付きDockerの使用

Now you can display graphical applications inside your Docker container. For example, you can run the following CLI command to visualize the predictions from a YOLO26 model:

yolo predict model=yolo26n.pt show=True
テスト

DockerグループがX11サーバーにアクセスできることを検証する簡単な方法は、xclockxeyesのようなGUIプログラムを使用してコンテナを実行することです。あるいは、これらのプログラムをUltralytics Dockerコンテナにインストールして、GNU-LinuxディスプレイサーバーのX11サーバーへのアクセスをテストすることもできます。問題が発生した場合は、環境変数-e QT_DEBUG_PLUGINS=1の設定を検討してください。この環境変数を設定するとデバッグ情報が出力されるようになり、トラブルシューティングのプロセスに役立ちます。

Docker GUIを終了する場合

アクセス権の取り消し

どちらの場合も、終了したらDockerグループからのアクセス権を取り消すことを忘れないでください。

xhost -local:docker
画像の結果をターミナルで直接表示したいですか?

これで、DockerでUltralyticsを使用する準備が整い、その機能を活用できます。代替のインストール方法については、Ultralyticsクイックスタートドキュメントを参照してください。

FAQ

UltralyticsをDockerでセットアップするにはどうすればよいですか?

UltralyticsをDockerでセットアップするには、まずシステムにDockerがインストールされていることを確認してください。NVIDIA GPUをお持ちの場合は、GPUサポートを有効にするためにNVIDIA Container Toolkitをインストールしてください。次に、以下のコマンドを使用して、Docker Hubから最新のUltralytics Dockerイメージをプルします。

sudo docker pull ultralytics/ultralytics:latest

詳細な手順については、Dockerクイックスタートガイドを参照してください。

機械学習プロジェクトでUltralytics Dockerイメージを使用する利点は何ですか?

Ultralytics Dockerイメージを使用すると、異なるマシン間で一貫した環境が保証され、同じソフトウェアと依存関係が複製されます。これは特に、チーム間でのコラボレーション、さまざまなハードウェア上でのモデルの実行、および再現性の維持に役立ちます。GPUベースの学習のために、Ultralyticsは一般的なGPU使用向けのDockerfileや、NVIDIA Jetsonデバイス向けのDockerfile-jetsonなどの最適化されたDockerイメージを提供しています。詳細については、Ultralytics Docker Hubをご覧ください。

Dockerコンテナ内でGPUサポートを使用してUltralytics YOLOを実行するにはどうすればよいですか?

まず、NVIDIA Container Toolkitがインストールされ、設定されていることを確認してください。次に、以下のコマンドを使用して、GPUサポート付きでUltralytics YOLOを実行します。

sudo docker run -it --ipc=host --runtime=nvidia --gpus all ultralytics/ultralytics:latest # all GPUs

このコマンドは、GPUアクセス可能なDockerコンテナをセットアップします。詳細については、Dockerクイックスタートガイドを参照してください。

ディスプレイサーバーを備えたDockerコンテナでYOLOの予測結果を視覚化するにはどうすればよいですか?

Dockerコンテナ内でGUIを使用してYOLOの予測結果を視覚化するには、Dockerにディスプレイサーバーへのアクセスを許可する必要があります。X11を実行しているシステムの場合、コマンドは次の通りです。

xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -v ~/.Xauthority:/root/.Xauthority \
  -it --ipc=host ultralytics/ultralytics:latest

Waylandを実行しているシステムの場合は、次を使用します。

xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
  -v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/$WAYLAND_DISPLAY \
  --net=host -it --ipc=host ultralytics/ultralytics:latest

詳細情報は、Dockerコンテナ内でグラフィカルユーザーインターフェース(GUI)アプリケーションを実行するセクションで確認できます。

ローカルディレクトリをUltralytics Dockerコンテナにマウントできますか?

はい、-vフラグを使用してローカルディレクトリをUltralytics Dockerコンテナにマウントできます。

sudo docker run -it --ipc=host --runtime=nvidia --gpus all -v /path/on/host:/path/in/container ultralytics/ultralytics:latest

/path/on/hostをローカルマシンのディレクトリに、/path/in/containerをコンテナ内の目的のパスに置き換えてください。この設定により、コンテナ内でローカルファイルを操作できるようになります。詳細については、ファイルアクセシビリティに関する注意セクションを参照してください。

コメント