DockerクイックスタートガイドUltralytics
このガイドは、Ultralytics プロジェクトのために Docker 環境をセットアップするための包括的な入門書となります。Dockerはコンテナでアプリケーションを開発、出荷、実行するためのプラットフォームです。ソフトウェアがどこにデプロイされても、常に同じように動作することを保証するために特に有益です。詳細は、Docker Hubの Ultralytics Dockerリポジトリをご覧ください。
何を学ぶか
- NVIDIA をサポートするDockerのセットアップ
- Ultralytics Dockerイメージのインストール
- CPU またはGPU をサポートする Docker コンテナでUltralytics を実行する。
- Ultralytics 、検出結果を表示するためにDockerでディスプレイサーバを使用する。
- コンテナへのローカルディレクトリのマウント
前提条件
- お使いのシステムにDockerがインストールされていることを確認してください。インストールされていない場合は、Dockerのウェブサイトからダウンロードしてインストールしてください。
- システムにNVIDIA GPU があり、NVIDIA ドライバがインストールされていることを確認してください。
NVIDIA サポートによるDockerのセットアップ
まず、NVIDIA ドライバが正しくインストールされていることを確認してください:
NVIDIA Docker Runtimeのインストール
では、NVIDIA Dockerランタイムをインストールして、DockerコンテナでGPU :
# Add NVIDIA package repositories
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
distribution=$(lsb_release -cs)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
# Install NVIDIA Docker runtime
sudo apt-get update
sudo apt-get install -y nvidia-docker2
# Restart Docker service to apply changes
sudo systemctl restart docker
DockerによるNVIDIA ランタイムの検証
走る docker info | grep -i runtime
を確保する。 nvidia
がランタイムのリストに表示される:
Ultralytics Dockerイメージのインストール
Ultralytics は、様々なプラットフォームやユースケースに最適化された複数のDockerイメージを提供している:
- Dockerfile: GPU トレーニングに最適なイメージ。
- Dockerfile-arm64:ARM64 アーキテクチャ用で、Raspberry Pi などのデバイスに適しています。
- Dockerfile-cpu : CPU推論とGPU 以外の環境のみのバージョン。
- Dockerfile-jetson: NVIDIA Jetsonデバイス用に最適化。
- Dockerfile-python :軽量アプリケーションのための最小限のPython 環境。
- Dockerfile-conda:Conda経由でインストールされたMiniconda3とUltralytics パッケージを含みます。
最新のイメージを引き出す:
# 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
GPUの使用
# Run with all GPUs
sudo docker run -it --ipc=host --gpus all $t
# Run specifying which GPUs to use
sudo docker run -it --ipc=host --gpus '"device=2,3"' $t
について -it
フラグは擬似TTYを割り当て、標準入力をオープンにしておく。また --ipc=host
フラグは、プロセス間でメモリを共有するのに不可欠な、ホストの IPC 名前空間の共有を可能にする。このフラグは --gpus
フラグは、コンテナがホストのGPUにアクセスすることを許可する。
DockerコンテナでUltralytics 。
ここでは、Ultralytics Dockerコンテナを実行する方法を説明する:
だけを使っている。CPU
GPUの使用
# Run with all GPUs
sudo docker run -it --ipc=host --gpus all $t
# Run specifying which GPUs to use
sudo docker run -it --ipc=host --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 --gpus all -v /path/on/host:/path/in/container $t
交換 /path/on/host
をローカルマシンのディレクトリパスと /path/in/container
をDockerコンテナ内の希望のパスに置き換える。
グラフィカル・ユーザー・インターフェース(GUI)アプリケーションをDockerコンテナで実行する
高度に実験的 - ユーザーがすべてのリスクを負う
以下の説明は実験的なものです。DockerコンテナでX11ソケットを共有することは、潜在的なセキュリティリスクをもたらします。そのため、このソリューションは制御された環境でのみテストすることをお勧めします。詳細については、以下のリソースを参照してください。 xhost
(1)(2).
Dockerは主にバックグラウンド・アプリケーションやCLI プログラムをコンテナ化するために使用されるが、グラフィック・プログラムを実行することもできる。Linuxの世界では、2つの主要なグラフィック・サーバーがグラフィック表示を扱っている:X11(XWindow Systemとしても知られている)とWaylandだ。使い始める前に、現在使用しているグラフィック・サーバーを確認することが重要です。このコマンドを実行して調べてください:
X11またはWaylandディスプレイ・サーバーのセットアップと設定は、このガイドの範囲外です。上記のコマンドが何も返さない場合は、先に進む前にあなたのシステムでどちらかを動作させることから始める必要があります。
GUIでDockerコンテナを実行する
例
GPUを使う
If you're using [GPUs](#using-gpus), you can add the `--gpus all` flag to the command.
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を使う
これでDockerコンテナ内にグラフィカル・アプリケーションを表示できる。例えば、以下のCLI コマンドを実行すると、YOLO11 モデルからの 予測を視覚化することができます:
テスト
DockerグループがX11サーバーにアクセスできることを確認する簡単な方法は、以下のようなGUIプログラムでコンテナを実行することだ。 xclock
または xeyes
.あるいは、これらのプログラムをUltralytics Dockerコンテナにインストールして、GNU-Linuxディスプレイ・サーバーのX11サーバーへのアクセスをテストすることもできます。問題が発生した場合は、環境変数 -e QT_DEBUG_PLUGINS=1
.この環境変数を設定すると、デバッグ情報の出力が可能になり、トラブルシューティングの助けになる。
Docker GUIが終了したら
画像結果を直接ターミナルでご覧になりたいですか?
端末を使った画像結果の表示については、以下のガイドを参照のこと。
おめでとうございます!これでDockerでUltralytics 、その強力な機能を利用する準備が整いました。別のインストール方法については、Ultralytics クイックスタート・ドキュメントを参照してください。
よくあるご質問
DockerでUltralytics 。
Ultralytics をDockerでセットアップするには、まずDockerがシステムにインストールされていることを確認する。NVIDIA GPU をお持ちの場合は、NVIDIA Dockerランタイムをインストールして、GPU サポートを有効にしてください。次に、以下のコマンドを使用して、Docker Hubから最新のUltralytics Dockerイメージを取り出します:
詳細な手順については、Dockerクイックスタートガイドを参照してください。
機械学習プロジェクトにUltralytics Dockerイメージを使用する利点は何ですか?
Ultralytics Dockerイメージを使用することで、異なるマシン間で一貫した環境を確保し、同じソフトウェアと依存関係を複製します。これは、チーム間での共同作業、様々なハードウェア上でのモデルの実行、再現性の維持に特に役立ちます。GPU-ベースのトレーニングのために、Ultralytics は以下のような最適化されたDockerイメージを提供しています。 Dockerfile
一般的なGPU Dockerfile-jetson
NVIDIA Jetsonデバイス用。探索 Ultralytics ドッカー・ハブ をご覧ください。
GPU をサポートする Docker コンテナでUltralytics YOLO を実行するにはどうすればよいですか?
まず、NVIDIA Dockerランタイムがインストールされ、設定されていることを確認する。次に、以下のコマンドを使用して、GPU をサポートするUltralytics YOLO を実行する:
このコマンドはGPU アクセスで Docker コンテナをセットアップする。詳細はDockerクイックスタートガイドを参照。
YOLO 、Dockerコンテナ内の予測結果をディスプレイサーバーで可視化するには?
DockerコンテナでYOLO 予測結果をGUIで視覚化するには、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コンテナにローカル・ディレクトリをマウントできますか?
はい、Ultralytics Dockerコンテナにローカル・ディレクトリをマウントすることができます。 -v
の旗を掲げている:
sudo docker run -it --ipc=host --gpus all -v /path/on/host:/path/in/container ultralytics/ultralytics:latest
交換 /path/on/host
をローカルマシンのディレクトリと /path/in/container
をコンテナ内の希望のパスに設定する。この設定により、コンテナ内でローカル・ファイルを操作できるようになる。詳細は ローカルディレクトリのマウント.