Link to this sectionUltralytics Dockerクイックスタートガイド#
本ガイドでは、UltralyticsプロジェクトでDocker環境を構築するための包括的な入門情報を提供します。Dockerは、コンテナ内でアプリケーションを開発、出荷、実行するためのプラットフォームです。ソフトウェアがどこにデプロイされても常に同じように動作することを保証する上で特に有用です。詳細については、Docker HubのUltralytics Dockerリポジトリをご覧ください。
Link to this section学習内容#
- 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 🎉
Link to this section前提条件#
- Dockerがシステムにインストールされていることを確認してください。インストールされていない場合は、DockerのWebサイトからダウンロードしてインストールできます。
- GPUアクセラレーションを利用するには、システムにNVIDIA GPUとNVIDIAドライバーがインストールされていることを確認してください。CPUイメージの場合、NVIDIAハードウェアは不要です。
- NVIDIA Jetsonデバイスを使用している場合は、適切なJetPackバージョンがインストールされていることを確認してください。詳細はNVIDIA Jetsonガイドを参照してください。
Link to this sectionNVIDIAサポート付きDockerのセットアップ(オプション)#
まず、以下のコマンドを実行してNVIDIAドライバーが正しくインストールされていることを確認してください。
nvidia-smiLink to this sectionNVIDIA 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 updatesudo apt-get install -y nvidia-container-toolkitLink to this sectionDockerでCDIデバイスを確認する#
nvidia-ctk cdi listを実行して、GPU CDIデバイスが利用可能であることを確認します(toolkit 1.18以上では、ツールキットのnvidia-cdi-refreshサービスが仕様を自動的に生成および維持します)。
nvidia-ctk cdi listnvidia.com/gpu=0やnvidia.com/gpu=allなどのエントリが表示されるはずです。検出されたCDIデバイスはdocker infoにも表示されます。
Link to this sectionUltralytics Dockerイメージのインストール#
Ultralyticsは、以下のイメージをDocker Hubに公開しています。各イメージは、Docker公開ワークフローによってリンクされたDockerfileからビルドされています。
| タグ | プラットフォームと目的 | ソース |
|---|---|---|
latest | GPUトレーニングおよび推論用CUDA搭載Linux AMD64 | Dockerfile |
latest-export | 変換およびベンチマーク用のCUDAおよびエクスポート依存関係搭載Linux AMD64 | Dockerfile-export |
latest-python | CPU推論用の軽量Linux AMD64 Pythonイメージ | Dockerfile-python |
latest-python-export | エクスポート依存関係搭載Linux AMD64 CPUイメージ | Dockerfile-python-export |
latest-cpu | BashをデフォルトコマンドとするLinux AMD64 CPUイメージ | Dockerfile-cpu |
latest-jupyter | JupyterLabおよびUltralyticsチュートリアルノートブック搭載Linux AMD64 CPUイメージ | Dockerfile-jupyter |
latest-arm64 | Appleシリコン、Raspberry Pi、およびその他のARM64システム用Linux ARM64 CPUイメージ | Dockerfile-arm64 |
latest-nvidia-arm64 | Jetson AGX Thor、DGX Spark、JetPack 7、DGX OS用のNVIDIA GPUサポート搭載Linux ARM64 | Dockerfile-nvidia-arm64 |
latest-jetson-jetpack6 | Linux ARM64 for NVIDIA Jetson devices running JetPack 6 | Dockerfile-jetson-jetpack6 |
latest-jetson-jetpack5 | Linux ARM64 for NVIDIA Jetson devices running JetPack 5 | Dockerfile-jetson-jetpack5 |
latest-jetson-jetpack4 | Linux ARM64 for NVIDIA Jetson devices running JetPack 4 | Dockerfile-jetson-jetpack4 |
latest-runner | セルフホスト型GitHub Actions GPUランナー用Linux AMD64 CUDAイメージ | Dockerfile-runner |
latest-runner-cpu | セルフホスト型GitHub Actions CPUランナー用Linux AMD64イメージ | Dockerfile-runner-cpu |
latestで始まるタグは、メインブランチで最も最近公開されたビルドを追跡します。バージョン付きタグは、latestプレフィックスをUltralyticsのリリース(VERSION、VERSION-cpu、VERSION-jetson-jetpack6など)に置き換えたものです。再現可能な環境には、バージョン付きタグを使用してください。
最新のイメージをプルするには:
# Pull the latest Ultralytics image from Docker Hub
sudo docker pull ultralytics/ultralytics:latestLink to this sectionDockerコンテナ内でのUltralyticsの実行#
Ultralytics Dockerコンテナの実行方法は以下の通りです。
Link to this sectionCPUのみを使用する場合#
# Run without GPU
sudo docker run -it --ipc=host ultralytics/ultralytics:latest-cpuLink to this sectionGPUを使用する場合#
# Run with all GPUs
sudo docker run -it --ipc=host --device nvidia.com/gpu=all ultralytics/ultralytics:latest
# Run specifying which GPUs to use
sudo docker run -it --ipc=host --device nvidia.com/gpu=2 --device nvidia.com/gpu=3 ultralytics/ultralytics:latest-itフラグは擬似TTYを割り当てて標準入力を開いたままにするため、コンテナと対話できます。--ipc=hostフラグはホストのIPC名前空間の共有を有効にします。これはプロセス間でメモリを共有するために不可欠です。--device nvidia.com/gpu=...フラグは、CDIを通じてコンテナにホストのGPUへのアクセス権を付与します。
Linuxにおいて、CDIデバイスのリクエストにはDocker >= 28.2.0(CDIはデフォルトで有効)およびnvidia-container-toolkit >= 1.18(自動CDI仕様生成)が必要です。GPUコンテナを実行する前に、古いLinuxホストをアップグレードしてください。レガシーな--gpus allフラグは、ルーチンパッケージの更新中にホストがsystemdをリロードすると、GPUアクセスを失う可能性があります(Failed to initialize NVML: Unknown Error)(nvidia-container-toolkit#48)。CDI --deviceリクエストはコンテナ設定にデバイスノードを含めるため、トレーニングワーカーやCIランナーのような長時間実行されるコンテナは、リロードをまたいでもGPUアクセスを維持します。
WindowsでのDocker Desktop GPUサポートは、現在NVIDIA CDIデバイスが利用できないため、WSL 2バックエンドで--gpus allを使用しています。WindowsはLinux systemdを使用しないため、上記のdaemon-reload失敗は適用されません。
Link to this sectionファイルアクセシビリティに関する注意#
コンテナ内でローカルマシンのファイルを扱うには、Dockerボリュームを使用できます。
# Mount a local directory into the container
sudo docker run -it --ipc=host --device nvidia.com/gpu=all -v /path/on/host:/path/in/container ultralytics/ultralytics:latest/path/on/hostをローカルマシンのディレクトリパスに、/path/in/containerをDockerコンテナ内の目的のパスに置き換えてください。
Link to this sectionトレーニング出力の保持#
トレーニング出力は、デフォルトでコンテナ内の/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に保存されます。
Link to this sectionDockerコンテナ内でグラフィカルユーザーインターフェース(GUI)アプリケーションを実行する#
Dockerは主にバックグラウンドアプリケーションやCLIプログラムをコンテナ化するために使用されますが、グラフィカルプログラムを実行することも可能です。Linuxの世界では、グラフィカル表示を扱うメインのグラフィックサーバーとして、X11(X Window Systemとも呼ばれます)とWaylandの2つがあります。開始する前に、現在どちらのグラフィックスサーバーを使用しているかを確認することが不可欠です。確認するには以下のコマンドを実行してください。
env | grep -E -i 'x11|xorg|wayland'X11またはWaylandディスプレイサーバーのセットアップと構成は、本ガイドの範囲外です。上記のコマンドで何も返されない場合は、続行する前にいずれかをシステムで動作させる必要があります。
Link to this sectionGUIを使用してDockerコンテナを実行する#
GPUを使用する
GPUを使用している場合は、コマンドに--device nvidia.com/gpu=allフラグを追加できます。
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 ultralytics/ultralytics:latestこのコマンドは、DISPLAY環境変数をホストのディスプレイに設定し、X11ソケットをマウントして、.Xauthorityファイルをコンテナにマップします。xhost +local:dockerコマンドにより、DockerコンテナがX11サーバーにアクセスできるようになります。
Link to this sectionGUIで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テスト
Link to this sectionDocker GUIの使用を終了する場合#
いずれの場合も、終了したらDockerグループからのアクセス権を取り消すことを忘れないでください。
xhost -local:docker画像の結果をターミナルで直接表示したい場合
以下のガイドターミナルを使用した画像結果の表示を参照してください。
これで、Dockerを使用してUltralyticsを利用する準備が整い、その機能を活用できます。Ultralytics Webアプリケーションをセルフホストするには、Platform On-Premiseガイドを参照してください。その他のPythonパッケージインストール方法については、Ultralyticsクイックスタートドキュメントを参照してください。
Link to this sectionよくある質問 (FAQ)#
Link to this sectionUltralyticsをDockerでセットアップするにはどうすればよいですか?#
UltralyticsをDockerでセットアップするには、まずDockerがシステムにインストールされていることを確認してください。NVIDIA GPUをお使いの場合は、NVIDIA Container ToolkitをインストールしてGPUサポートを有効にします。次に、以下のコマンドを使用して、Docker Hubから最新のUltralytics Dockerイメージをプルしてください。
sudo docker pull ultralytics/ultralytics:latest詳細な手順については、Dockerクイックスタートガイドを参照してください。
Link to this section機械学習プロジェクトでUltralytics Dockerイメージを使用する利点は何ですか?#
Ultralytics Dockerイメージを使用することで、異なるマシン間での一貫した環境が確保され、同一のソフトウェアと依存関係が複製されます。これは特に、チーム間での共同作業、様々なハードウェアでのモデルの実行、および再現性の維持に役立ちます。一般的なNVIDIA GPUトレーニングにはlatestを使用するか、NVIDIA Jetsonデバイスの場合はお使いのJetPackバージョンに一致するイメージを選択してください。完全なイメージテーブルを参照するか、Ultralytics Docker Hubをご確認ください。
Link to this sectionDockerコンテナ内でGPUサポートを使用してUltralytics YOLOを実行するにはどうすればよいですか?#
まず、NVIDIA Container Toolkitがインストールおよび設定されていることを確認してください。次に、以下のコマンドを使用して、GPUサポート付きでUltralytics YOLOを実行します。
sudo docker run -it --ipc=host --device nvidia.com/gpu=all ultralytics/ultralytics:latest # all GPUsこのコマンドは、GPUアクセス権を持つDockerコンテナをセットアップします。詳細については、Dockerクイックスタートガイドを参照してください。
Link to this sectionディスプレイサーバーを使用して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:latestWaylandを実行しているシステムの場合は、以下を使用してください。
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)アプリケーションを実行するセクションを参照してください。
Link to this sectionローカルディレクトリをUltralytics Dockerコンテナにマウントできますか?#
はい、-vフラグを使用してローカルディレクトリをUltralytics Dockerコンテナにマウントできます。
sudo docker run -it --ipc=host --device nvidia.com/gpu=all -v /path/on/host:/path/in/container ultralytics/ultralytics:latest/path/on/hostをローカルマシンのディレクトリに、/path/in/containerをコンテナ内の目的のパスに置き換えてください。この設定により、コンテナ内でローカルファイルを扱うことができます。詳細については、ファイルアクセシビリティに関する注意セクションを参照してください。