コンテンツへスキップ

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

Ultralytics Dockerパッケージビジュアル

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

Dockerイメージのバージョン ドッカー・プル

何を学ぶか

  • NVIDIA をサポートするDockerのセットアップ
  • Ultralytics Dockerイメージのインストール
  • CPU またはGPU をサポートする Docker コンテナでUltralytics を実行する。
  • Ultralytics 、検出結果を表示するためにDockerでディスプレイサーバを使用する。
  • コンテナへのローカルディレクトリのマウント

前提条件

  • お使いのシステムにDockerがインストールされていることを確認してください。インストールされていない場合は、Dockerのウェブサイトからダウンロードしてインストールしてください。
  • システムにNVIDIA GPU があり、NVIDIA ドライバがインストールされていることを確認してください。

NVIDIA サポートによるDockerのセットアップ

まず、NVIDIA ドライバが正しくインストールされていることを確認してください:

nvidia-smi

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 がランタイムのリストに表示される:

docker info | grep -i runtime

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

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

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

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

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 の世界では、 X11 (X Window System とも呼ばれます) と Wayland の 2 つの主要なグラフィック サーバーがグラフィカル表示を処理します。開始する前に、現在使用しているグラフィックサーバーを確認することが不可欠です。次のコマンドを実行して、次のことを確認します。

env | grep -E -i 'x11|xorg|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サーバーにアクセスできるようにする。

Waylandの場合は、以下のコマンドを使用する:

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

このコマンドは DISPLAY 環境変数をホストのディスプレイに追加し、Waylandソケットをマウントし、DockerコンテナがWaylandサーバーにアクセスできるようにする。

GUIでDockerを使う

これでDockerコンテナ内にグラフィカル・アプリケーションを表示できる。例えば、YOLOv8 モデルからの 予測を視覚化するために、以下のCLI コマンドを実行することができます:

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

DockerグループがX11サーバーにアクセスできることを確認する簡単な方法は、以下のようなGUIプログラムでコンテナを実行することだ。 xclock または xeyes.あるいは、これらのプログラムをUltralytics Dockerコンテナにインストールして、GNU-Linuxディスプレイ・サーバーのX11サーバーへのアクセスをテストすることもできます。問題が発生した場合は、環境変数 -e QT_DEBUG_PLUGINS=1.この環境変数を設定すると、デバッグ情報の出力が可能になり、トラブルシューティングの助けになる。

Docker GUIが終了したら

アクセスを取り消す

どちらの場合も、作業が終わったらDockerグループからアクセス権を剥奪することをお忘れなく。

xhost -local:docker
画像結果を直接ターミナルでご覧になりたいですか?

端末を使った画像結果の表示については、以下のガイドを参照のこと。


おめでとうございます!これでDockerでUltralytics 、その強力な機能を利用する準備が整いました。別のインストール方法については、Ultralytics クイックスタート・ドキュメントをご覧ください。

よくあるご質問

DockerでUltralytics 。

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

sudo docker pull ultralytics/ultralytics:latest

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

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

Ultralytics Dockerイメージを使用することで、異なるマシン間で一貫した環境を確保し、同じソフトウェアと依存関係を複製します。これは、チーム間での共同作業、様々なハードウェア上でのモデルの実行、再現性の維持に特に役立ちます。GPU-ベースのトレーニングのために、Ultralytics は以下のような最適化されたDockerイメージを提供しています。 Dockerfile 一般的なGPU Dockerfile-jetson NVIDIA Jetsonデバイス用。探索 Ultralytics ドッカー・ハブ をご覧ください。

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

まず、NVIDIA Dockerランタイムがインストールされ、設定されていることを確認する。次に、以下のコマンドを使用して、GPU をサポートするUltralytics YOLO を実行する:

sudo docker run -it --ipc=host --gpus all ultralytics/ultralytics:latest

このコマンドは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 をコンテナ内の希望のパスに設定する。この設定により、コンテナ内でローカル・ファイルを操作できるようになる。詳細は ローカルディレクトリのマウント.



作成日:2023-11-12 更新日:2024-07-05
著者:glenn-jocher(7),Burhan-Q(1),jpedrofonseca_94@hotmail.com(1)

コメント