Ultralytics YOLO27: Tham gia danh sách chờ.
Bắt đầu

Bắt đầu với YOLOv5 🚀 trong Docker#

Hướng dẫn này cung cấp chỉ dẫn từng bước để thiết lập và chạy YOLOv5 bên trong container Docker. Docker cho phép chạy YOLOv5 trong môi trường biệt lập, nhất quán, giúp đơn giản hóa việc triển khai và quản lý dependency trên nhiều hệ thống. Phương pháp này sử dụng đóng gói container để đóng gói ứng dụng cùng các dependency.

Để tham khảo các phương thức thiết lập khác, hãy xem Colab Notebook Open In Colab Open In Kaggle, hướng dẫn GCP Deep Learning VM hoặc Amazon AWS. Để có cái nhìn tổng quan về cách sử dụng Docker với các model Ultralytics, hãy xem Hướng dẫn bắt đầu nhanh Docker của Ultralytics.

Điều kiện tiên quyết#

Trước khi bắt đầu, hãy đảm bảo bạn đã cài đặt các thành phần sau:

  1. Docker: Tải xuống và cài đặt Docker từ trang web Docker chính thức. Docker rất cần thiết để tạo và quản lý container.
  2. Driver NVIDIA (Bắt buộc để hỗ trợ GPU): Đảm bảo bạn đã cài driver NVIDIA phiên bản 455.23 trở lên. Bạn có thể tải driver mới nhất từ trang web NVIDIA.
  3. NVIDIA Container Toolkit (Bắt buộc để hỗ trợ GPU): Bộ công cụ này cho phép container Docker truy cập GPU NVIDIA trên máy host. Hãy làm theo hướng dẫn cài đặt NVIDIA Container Toolkit chính thức để biết chỉ dẫn chi tiết.

Thiết lập NVIDIA Container Toolkit (người dùng GPU)#

Trước tiên, xác minh driver NVIDIA đã được cài đặt đúng cách bằng lệnh:

nvidia-smi

Lệnh này sẽ hiển thị thông tin về (các) GPU của bạn và phiên bản driver đã cài đặt.

Tiếp theo, cài đặt NVIDIA Container Toolkit. Các lệnh bên dưới thường dùng cho hệ thống dựa trên Debian như Ubuntu và hệ thống dựa trên RHEL như Fedora/CentOS; hãy tham khảo hướng dẫn chính thức được liên kết ở trên để biết chỉ dẫn dành riêng cho bản phân phối của bạn:

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

Cập nhật danh sách package và cài đặt NVIDIA Container Toolkit:

sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

Xác minh thiết bị CDI bằng Docker#

Chạy nvidia-ctk cdi list để đảm bảo các thiết bị GPU CDI khả dụng (dịch vụ nvidia-cdi-refresh của toolkit tự động tạo và duy trì spec trên toolkit >= 1.18):

nvidia-ctk cdi list

Bạn sẽ thấy các mục như nvidia.com/gpu=0 và nvidia.com/gpu=all. Trên Linux, yêu cầu thiết bị CDI cần Docker >= 28.2.0 và NVIDIA Container Toolkit >= 1.18. Cờ --gpus all cũ có thể làm mất quyền truy cập GPU sau khi daemon host tải lại, vì vậy hãy nâng cấp các host Linux cũ và dùng --device thay thế.

Bước 1: Tải image Docker YOLOv5#

Ultralytics cung cấp image YOLOv5 chính thức trên Docker Hub. Tag latest theo dõi commit mới nhất của repository, đảm bảo bạn luôn nhận được phiên bản mới nhất. Tải image bằng lệnh sau:

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

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

Bạn có thể duyệt tất cả image hiện có trong repository Docker Hub Ultralytics YOLOv5.

Bước 2: Chạy container Docker#

Sau khi tải image, bạn có thể chạy image dưới dạng container.

Chỉ sử dụng CPU#

Để chạy một container tương tác chỉ sử dụng CPU, hãy dùng cờ -it. Cờ --ipc=host cho phép chia sẻ namespace IPC của host, điều này rất quan trọng để truy cập bộ nhớ dùng chung.

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

Sử dụng GPU#

Để bật quyền truy cập GPU bên trong container, hãy dùng cờ CDI --device nvidia.com/gpu=... CDI. Yêu cầu NVIDIA Container Toolkit phải được cài đặt đúng cách.

# Run with access to all available GPUs
sudo docker run -it --ipc=host --device nvidia.com/gpu=all $t

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

Tham khảo tài liệu tham chiếu lệnh Docker run để biết thêm chi tiết về các tùy chọn lệnh.

Mount thư mục cục bộ#

Để làm việc với các tệp cục bộ (tập dữ liệu, trọng số model, v.v.) bên trong container, hãy dùng cờ -v để mount một thư mục trên host vào container:

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

Thay /path/on/host bằng đường dẫn thực tế trên máy của bạn và /path/in/container bằng đường dẫn mong muốn bên trong container Docker (ví dụ: /usr/src/datasets).

Bước 3: Sử dụng YOLOv5 🚀 bên trong container Docker#

Bạn hiện đang ở bên trong container Docker YOLOv5 đang chạy! Tại đây, bạn có thể thực thi các lệnh YOLOv5 tiêu chuẩn cho nhiều tác vụ học máy và học sâu, chẳng hạn như phát hiện đối tượng.

# 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

Xem hướng dẫn Huấn luyện dữ liệu tùy chỉnh và Export model để biết cách sử dụng chi tiết.

val.py báo cáo precision, recall và mAP, còn export.py ghi các định dạng như ONNX, CoreML và TFLite cho tùy chọn triển khai bạn chọn.

Running YOLOv5 inside a Docker container on GCP

Bạn đã thiết lập và chạy YOLOv5 thành công trong container Docker.

Câu hỏi thường gặp#

  • Các worker dataloader của PyTorch chia sẻ tensor thông qua bộ nhớ dùng chung, trong khi mức mặc định 64 MB của Docker quá nhỏ. --ipc=host chia sẻ phân đoạn bộ nhớ của host; --shm-size=8g là phương án thay thế nếu bạn muốn giữ container biệt lập.

  • Chạy nvidia-smi trên host để xác nhận driver hoạt động, kiểm tra NVIDIA Container Toolkit đã được cài đặt bằng nvidia-ctk cdi list, đồng thời đảm bảo Docker phiên bản 28.2 trở lên để chấp nhận --device nvidia.com/gpu=all.

  • Gắn các thư mục trên host bằng -v /path/on/host:/path/in/container và trỏ --data cùng --project đến các đường dẫn đã gắn. Các tệp được ghi ở nơi khác bên trong container sẽ bị xóa khi container bị gỡ bỏ.

  • Có, nhưng container cần quyền truy cập vào máy chủ hiển thị. Xem hướng dẫn X11 và Wayland trong tài liệu Docker của Ultralytics. Nếu không có màn hình, hãy lưu kết quả bằng --save-txt hoặc đầu ra mặc định runs/detect/.

Bình luận3

Đặt câu hỏi, chia sẻ kết quả hoặc giúp đỡ người khác.

  1. Letícia RamaLetícia Rama

    Hello,

    Is this workflow suitable for other YOLO families, such as YOLO26?

    1. Paula DerrengerPaula DerrengerUltralytics

      Yes—the same Docker concepts apply to YOLO26, but use the current Ultralytics Docker Quickstart and ultralytics/ultralytics images rather than the YOLOv5-specific image. Please continue dropping any setup questions in this discussion so the Ultralytics team can assist.

      1