Bắt đầu với YOLOv5 🚀 trong Docker#
Chào mừng đến với Hướng dẫn Bắt đầu Nhanh Docker Ultralytics YOLOv5! Hướng dẫn này cung cấp các hướng dẫn từng bước để thiết lập và chạy YOLOv5 bên trong một container Docker. Việc sử dụng Docker cho phép bạn chạy YOLOv5 trong một môi trường cô lập, nhất quán, đơn giản hóa việc triển khai và quản lý phụ thuộc trên các hệ thống khác nhau. Phương pháp này tận dụng tính containerization để đóng gói ứng dụng và các phụ thuộc của nó lại với nhau.
Đối với các phương pháp thiết lập thay thế, hãy xem xét các hướng dẫn Colab Notebook
, GCP Deep Learning VM, hoặc Amazon AWS của chúng tôi. Để có tổng quan chung về việc sử dụng Docker với các model Ultralytics, hãy xem Hướng dẫn Bắt đầu Nhanh Docker 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 mục sau:
- Docker: Tải xuống và cài đặt Docker từ trang web chính thức của Docker. Docker rất cần thiết để tạo và quản lý container.
- Trình điều khiển NVIDIA (Yêu cầu hỗ trợ GPU): Đảm bảo bạn đã cài đặt trình điều khiển NVIDIA phiên bản 455.23 trở lên. Bạn có thể tải xuống các trình điều khiển mới nhất từ trang web của NVIDIA.
- NVIDIA Container Toolkit (Yêu cầu hỗ trợ GPU): Bộ công cụ này cho phép các container Docker truy cập vào GPU NVIDIA của máy chủ lưu trữ (host). Hãy làm theo hướng dẫn cài đặt NVIDIA Container Toolkit chính thức để biết hướng dẫn chi tiết.
Thiết lập NVIDIA Container Toolkit (Người dùng GPU)#
Đầu tiên, hãy xác minh rằng các driver NVIDIA của bạn đã được cài đặt chính xác bằng cách chạy:
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 dưới đây là tiêu chuẩn cho các hệ thống dựa trên Debian như Ubuntu và các hệ thống dựa trên RHEL như Fedora/CentOS, nhưng hãy tham khảo hướng dẫn chính thức được liên kết ở trên để biết các chỉ dẫn cụ thể 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 gói và cài đặt NVIDIA Container Toolkit:
sudo apt-get updatesudo apt-get install -y nvidia-container-toolkitXác minh thiết bị CDI với 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 bộ công cụ sẽ tự động tạo và duy trì thông số kỹ thuật trên toolkit >= 1.18):
nvidia-ctk cdi listBạn sẽ thấy các mục nhập như nvidia.com/gpu=0 và nvidia.com/gpu=all. Trên Linux, các yêu cầu thiết bị CDI yêu cầu 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 khởi động lại tiến trình nền (daemon) của máy chủ, vì vậy hãy nâng cấp các máy chủ Linux cũ hơn và sử dụng --device thay thế.
Bước 1: Pull Docker Image YOLOv5#
Ultralytics cung cấp các hình ảnh (image) YOLOv5 chính thức trên Docker Hub. Thẻ latest theo dõi commit gần đây nhất của kho lưu trữ, đảm bảo bạn luôn nhận được phiên bản mới nhất. Tải hình ảnh về 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 qua tất cả các hình ảnh có sẵn tại kho lưu trữ Docker Hub của Ultralytics YOLOv5.
Bước 2: Chạy Docker Container#
Sau khi đã pull image, bạn có thể chạy nó như một container.
Chỉ sử dụng CPU#
Để chạy một thể hiện container tương tác chỉ sử dụng CPU, hãy sử dụng cờ -it. Cờ --ipc=host cho phép chia sẻ không gian tên IPC của máy chủ, điều này quan trọng đối với việc truy cập bộ nhớ chia sẻ.
# 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 sử dụng cờ CDI --device nvidia.com/gpu=.... Điều này 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 khảo chạy Docker để biết thêm chi tiết về các tùy chọn lệnh.
Mount các thư mục cục bộ#
Để làm việc với các tệp cục bộ của bạn (dataset, trọng số model, v.v.) bên trong container, hãy sử dụng cờ -v để gắn (mount) một thư mục máy chủ 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 thế /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 Docker Container#
Bây giờ bạn đã ở bên trong container YOLOv5 Docker đang chạy! Từ đây, bạn có thể thực thi các lệnh YOLOv5 tiêu chuẩn cho các tác vụ Machine Learning và Deep Learning khác nhau như 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 modelKhám phá tài liệu để biết cách sử dụng chi tiết cho từng mode:
Tìm hiểu thêm về các chỉ số đánh giá như Precision, Recall, và mAP. Hiểu các định dạng xuất khác nhau như ONNX, CoreML, và TFLite, đồng thời khám phá các Tùy chọn Triển khai Model khác nhau. Nhớ quản lý trọng số model của bạn một cách hiệu quả.

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