コンテンツへスキップ

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のインストール

では、DockerコンテナでGPUサポートを有効にするために、NVIDIA Dockerランタイムをインストールしましょう:

# 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:推論と非GPU環境用のCPU専用バージョン。
  • 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 is primarily used to containerize background applications and CLI programs, but it can also run graphical programs. In the Linux world, two main graphic servers handle graphical display: X11 (also known as the X Window System) and Wayland. Before starting, it's essential to determine which graphics server you are currently using. Run this command to find out:

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 クイックスタート・ドキュメントをご覧ください。



Created 2023-11-12, Updated 2024-06-10
Authors: glenn-jocher (6), Burhan-Q (1), jpedrofonseca_94@hotmail.com (1)

コメント