Bắt đầu với YOLOv5 🚀 trong Docker#
Chào mừng bạn đến với Hướng dẫn bắt đầu nhanh Docker cho Ultralytics YOLOv5! Hướng dẫn này cung cấp chỉ dẫn từng bước để thiết lập và chạy YOLOv5 trong container Docker. Docker cho phép bạn chạy YOLOv5 trong một 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 tận dụng công nghệ container để đóng gói ứng dụng cùng các dependency của ứng dụng.
Để tham khảo các phương thức thiết lập khác, hãy xem Colab Notebook
, 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:
- 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.
- 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.
- 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-smiLệ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.listCập nhật danh sách package và cài đặt NVIDIA Container Toolkit:
sudo apt-get updatesudo apt-get install -y nvidia-container-toolkitXá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 listBạ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 $tBạ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 $tSử 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 $tTham 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 $tThay /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ụ Machine Learning và Deep Learning 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 modelXem 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.
Tìm hiểu thêm về các metric đánh giá như Precision, Recall và mAP. Tìm hiểu các định dạng export khác nhau như ONNX, CoreML và TFLite, đồng thời khám phá nhiều tùy chọn triển khai model. Hãy nhớ quản lý hiệu quả trọng số model.

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=hostchia sẻ phân đoạn bộ nhớ của host;--shm-size=8glà phương án thay thế nếu bạn muốn giữ container biệt lập.Chạy
nvidia-smitrên host để xác nhận driver hoạt động, kiểm tra NVIDIA Container Toolkit đã được cài đặt bằngnvidia-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/containervà trỏ--datacù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-txthoặc đầu ra mặc địnhruns/detect/.