DockerでYOLOv5 🚀 を使い始める

Welcome to the Ultralytics YOLOv5 Docker Quickstart Guide! This tutorial provides step-by-step instructions for setting up and running YOLOv5 within a Docker container. Using Docker enables you to run YOLOv5 in an isolated, consistent environment, simplifying deployment and dependency management across different systems. This approach leverages containerization to package the application and its dependencies together.

その他のセットアップ方法については、Colab Notebook Open In Colab Open In KaggleGCP Deep Learning VM、またはAmazon AWSのガイドをご検討ください。UltralyticsモデルとDocker使用の概要については、Ultralytics Dockerクイックスタートガイドを参照してください。

前提条件

開始する前に、以下のものがインストールされていることを確認してください。

  1. Docker: 公式DockerウェブサイトからDockerをダウンロードしてインストールします。Dockerはコンテナの作成と管理に不可欠です。
  2. NVIDIAドライバ (GPUサポートに必須): NVIDIAドライバのバージョン455.23以降がインストールされていることを確認してください。最新のドライバはNVIDIAのウェブサイトからダウンロードできます。
  3. NVIDIA Container Toolkit (GPUサポートに必須): このツールキットにより、DockerコンテナがホストマシンのNVIDIA GPUにアクセスできるようになります。詳細な手順については、公式のNVIDIA Container Toolkitインストールガイドに従ってください。

NVIDIA Container Toolkitのセットアップ (GPUユーザー向け)

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

nvidia-smi

このコマンドで、GPUとインストールされているドライバのバージョンに関する情報が表示されるはずです。

次に、NVIDIA Container Toolkitをインストールします。以下のコマンドはUbuntuのようなDebian系システムやFedora/CentOSのようなRHEL系システムで一般的ですが、お使いのディストリビューションに固有の手順については上記にリンクされている公式ガイドを参照してください。

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

nvidiaが利用可能なランタイムの一つとしてリストされているのが確認できるはずです。

ステップ 1: YOLOv5 Dockerイメージをプルする

Ultralyticsは公式のYOLOv5イメージをDocker Hubで提供しています。latestタグは最新のリポジトリコミットを追跡するため、常に最新バージョンを入手できます。以下のコマンドを使用してイメージをプルしてください。

# Define the image name with tag
t=ultralytics/yolov5:latest

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

利用可能なすべてのイメージは、Ultralytics YOLOv5 Docker Hubリポジトリで確認できます。

ステップ 2: Dockerコンテナを実行する

イメージがプルされたら、コンテナとして実行できます。

CPUのみを使用する場合

CPUのみを使用してインタラクティブなコンテナインスタンスを実行するには、-itフラグを使用します。--ipc=hostフラグはホストのIPC名前空間の共有を可能にし、共有メモリへのアクセスに重要です。

# Run an interactive container instance using CPU
sudo docker run -it --runtime=nvidia --ipc=host $t

GPUを使用する場合

コンテナ内でGPUアクセスを有効にするには、--gpusフラグを使用します。これにはNVIDIA Container Toolkitが正しくインストールされている必要があります。

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

# Run with access to specific GPUs (e.g., GPUs 2 and 3)
sudo docker run -it --runtime=nvidia --ipc=host --gpus '"device=2,3"' $t

コマンドオプションの詳細については、Docker runリファレンスを参照してください。

ローカルディレクトリをマウントする

コンテナ内でローカルファイル(データセット、モデル重みなど)を操作するには、-vフラグを使用してホストディレクトリをコンテナ内にマウントします。

# Mount /path/on/host (your local machine) to /path/in/container (inside the container)
sudo docker run -it --runtime=nvidia --ipc=host --gpus all -v /path/on/host:/path/in/container $t

/path/on/hostをマシン上の実際のパスに、/path/in/containerをDockerコンテナ内の目的のパス(例: /usr/src/datasets)に置き換えてください。

ステップ 3: Dockerコンテナ内でYOLOv5 🚀 を使用する

You are now inside the running YOLOv5 Docker container! From here, you can execute standard YOLOv5 commands for various Machine Learning and Deep Learning tasks like Object Detection.

# Train a YOLOv5 model on your custom dataset (ensure data is mounted or downloaded)
python train.py --data your_dataset.yaml --weights yolov5s.pt --img 640 # Start training

# Validate the trained model's performance (Precision, Recall, mAP)
python val.py --weights path/to/your/best.pt --data your_dataset.yaml # Validate accuracy

# Run inference on images or videos using a trained model
python detect.py --weights yolov5s.pt --source path/to/your/images_or_videos # Perform detection

# Export the trained model to various formats like ONNX, CoreML, or TFLite for deployment
python export.py --weights yolov5s.pt --include onnx coreml tflite # Export model

各モードの詳細な使用方法についてはドキュメントをご覧ください。

精度再現率mAPなどの評価指標について学びましょう。ONNXCoreMLTFLiteなどのさまざまなエクスポート形式を理解し、多様なモデルデプロイメントオプションを探求してください。モデルの重みを効果的に管理することも忘れないでください。

Running YOLOv5 inside a Docker container on GCP

これでYOLOv5をDockerコンテナ内でセットアップし、実行することができました。

コメント