Bỏ qua nội dung

Hướng dẫn khởi động nhanh Docker cho Ultralytics

Ultralytics Gói Docker Visual

Hướng dẫn này đóng vai trò là phần giới thiệu toàn diện về cách thiết lập môi trường Docker cho bạn Ultralytics dự án. Docker là một nền tảng để phát triển, vận chuyển và chạy các ứng dụng trong các container. Nó đặc biệt có lợi để đảm bảo rằng phần mềm sẽ luôn chạy giống nhau, bất kể nó được triển khai ở đâu. Để biết thêm chi tiết, hãy truy cập Ultralytics Kho lưu trữ Docker trên Docker Hub .

Phiên bản hình ảnh Docker Docker kéo

Những gì bạn sẽ học được

  • Thiết lập Docker với NVIDIA ủng hộ
  • Cài đặt Ultralytics Hình ảnh Docker
  • Đang chạy Ultralytics trong một container Docker với CPU hoặc GPU ủng hộ
  • Sử dụng Display Server với Docker để Hiển thị Ultralytics Kết quả phát hiện
  • Gắn các thư mục cục bộ vào container

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

  • Đảm bảo Docker được cài đặt trên hệ thống của bạn. Nếu không, bạn có thể tải xuống và cài đặt từ trang web của Docker .
  • Đảm bảo rằng hệ thống của bạn có NVIDIA GPU Và NVIDIA Trình điều khiển đã được cài đặt.

Thiết lập Docker với NVIDIA Ủng hộ

Đầu tiên, hãy xác minh rằng NVIDIA trình điều khiển được cài đặt đúng cách bằng cách chạy:

nvidia-smi

Cài đặt NVIDIA Thời gian chạy Docker

Bây giờ, chúng ta hãy cài đặt NVIDIA Thời gian chạy Docker để kích hoạt GPU hỗ trợ trong các container 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

Xác minh NVIDIA Thời gian chạy với Docker

Chạy docker info | grep -i runtime để đảm bảo rằng nvidia xuất hiện trong danh sách thời gian chạy:

docker info | grep -i runtime

Cài đặt Ultralytics Hình ảnh Docker

Ultralytics cung cấp một số hình ảnh Docker được tối ưu hóa cho nhiều nền tảng và trường hợp sử dụng khác nhau:

  • Tệp Docker: GPU hình ảnh lý tưởng cho việc đào tạo.
  • Dockerfile-arm64: Dành cho kiến trúc ARM64, phù hợp với các thiết bị như Raspberry Pi .
  • Dockerfile- cpu : CPU -phiên bản duy nhất để suy luận và không- GPU môi trường.
  • Dockerfile-jetson: Được tối ưu hóa cho NVIDIA Thiết bị Jetson.
  • Dockerfile- python : Tối thiểu Python môi trường cho các ứng dụng nhẹ.
  • Dockerfile-conda: Bao gồm Miniconda3 và Ultralytics gói được cài đặt thông qua Conda.

Để kéo hình ảnh mới nhất:

# Set image name as a variable
t=ultralytics/ultralytics:latest

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

Đang chạy Ultralytics trong Docker Container

Sau đây là cách thực hiện Ultralytics Bộ chứa Docker:

Chỉ sử dụng CPU

# Run with all GPUs
sudo docker run -it --ipc=host $t

Sử dụng 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

Các -it cờ gán một pseudo-TTY và giữ stdin mở, cho phép bạn tương tác với container. --ipc=host cờ cho phép chia sẻ không gian tên IPC của máy chủ, điều cần thiết để chia sẻ bộ nhớ giữa các quy trình. --gpus cờ cho phép vùng chứa truy cập GPU của máy chủ.

Đang chạy Ultralytics trong Docker Container

Sau đây là cách thực hiện Ultralytics Bộ chứa Docker:

Chỉ sử dụng CPU

# Run with all GPUs
sudo docker run -it --ipc=host $t

Sử dụng 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

Các -it cờ gán một pseudo-TTY và giữ stdin mở, cho phép bạn tương tác với container. --ipc=host cờ cho phép chia sẻ không gian tên IPC của máy chủ, điều cần thiết để chia sẻ bộ nhớ giữa các quy trình. --gpus cờ cho phép vùng chứa truy cập GPU của máy chủ.

Lưu ý về khả năng truy cập tệp

Để làm việc với các tệp trên máy cục bộ của bạn trong vùng chứa, bạn có thể sử dụng ổ đĩa Docker:

# Mount a local directory into the container
sudo docker run -it --ipc=host --gpus all -v /path/on/host:/path/in/container $t

Thay thế /path/on/host với đường dẫn thư mục trên máy cục bộ của bạn và /path/in/container với đường dẫn mong muốn bên trong vùng chứa Docker.

Chạy các ứng dụng giao diện người dùng đồ họa (GUI) trong Docker Container

Thử nghiệm cao - Người dùng chịu mọi rủi ro

Các hướng dẫn sau đây là thử nghiệm. Chia sẻ ổ cắm X11 với vùng chứa Docker có thể gây ra rủi ro bảo mật. Do đó, bạn chỉ nên thử nghiệm giải pháp này trong môi trường được kiểm soát. Để biết thêm thông tin, hãy tham khảo các tài nguyên này về cách sử dụng xhost(1) (2).

Docker chủ yếu được sử dụng để chứa các ứng dụng nền và CLI chương trình, nhưng nó cũng có thể chạy các chương trình đồ họa. Trong thế giới Linux, hai máy chủ đồ họa chính xử lý hiển thị đồ họa: X11 (còn được gọi là Hệ thống X Window) và Wayland . Trước khi bắt đầu, điều cần thiết là xác định máy chủ đồ họa nào bạn hiện đang sử dụng. Chạy lệnh này để tìm hiểu:

env | grep -E -i 'x11|xorg|wayland'

Việc thiết lập và cấu hình máy chủ hiển thị X11 hoặc Wayland nằm ngoài phạm vi của hướng dẫn này. Nếu lệnh trên không trả về kết quả nào, thì bạn sẽ cần bắt đầu bằng cách làm cho một trong hai máy chủ hoạt động cho hệ thống của mình trước khi tiếp tục.

Chạy Docker Container với GUI

Ví dụ

Sử dụng GPU
If you're using [GPUs](#using-gpus), you can add the `--gpus all` flag to the command.

Nếu bạn đang sử dụng X11, bạn có thể chạy lệnh sau để cho phép vùng chứa Docker truy cập vào ổ cắm X11:

xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v ~/.Xauthority:/root/.Xauthority \
-it --ipc=host $t

Lệnh này thiết lập DISPLAY biến môi trường vào màn hình của máy chủ, gắn ổ cắm X11 và ánh xạ .Xauthority tập tin vào container. xhost +local:docker lệnh cho phép vùng chứa Docker truy cập vào máy chủ X11.

Đối với Wayland, hãy sử dụng lệnh sau:

xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
-v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/$WAYLAND_DISPLAY \
--net=host -it --ipc=host $t

Lệnh này thiết lập DISPLAY biến môi trường vào màn hình của máy chủ, gắn ổ cắm Wayland và cho phép vùng chứa Docker truy cập vào máy chủ Wayland.

Sử dụng Docker với GUI

Bây giờ bạn có thể hiển thị các ứng dụng đồ họa bên trong vùng chứa Docker của mình. Ví dụ, bạn có thể chạy lệnh CLI sau để trực quan hóa các dự đoán từ mô hình YOLO11 :

yolo predict model=yolo11n.pt show=True
Kiểm tra

Một cách đơn giản để xác thực rằng nhóm Docker có quyền truy cập vào máy chủ X11 là chạy một container với chương trình GUI như xclock hoặc xeyes. Ngoài ra, bạn cũng có thể cài đặt các chương trình này trong Ultralytics Docker container để kiểm tra quyền truy cập vào máy chủ X11 của máy chủ hiển thị GNU-Linux của bạn. Nếu bạn gặp bất kỳ sự cố nào, hãy cân nhắc đặt biến môi trường -e QT_DEBUG_PLUGINS=1. Thiết lập biến môi trường này cho phép xuất thông tin gỡ lỗi, hỗ trợ quá trình khắc phục sự cố.

Khi hoàn thành với Docker GUI

Thu hồi quyền truy cập

Trong cả hai trường hợp, đừng quên thu hồi quyền truy cập khỏi nhóm Docker khi bạn hoàn tất.

xhost -local:docker
Bạn muốn xem kết quả hình ảnh trực tiếp trong Terminal?

Tham khảo hướng dẫn sau đây về cách xem kết quả hình ảnh bằng thiết bị đầu cuối


Xin chúc mừng! Bây giờ bạn đã thiết lập để sử dụng Ultralytics với Docker và sẵn sàng tận dụng các khả năng mạnh mẽ của nó. Để biết các phương pháp cài đặt thay thế, hãy thoải mái khám phá tài liệu hướng dẫn khởi động nhanh Ultralytics .

CÂU HỎI THƯỜNG GẶP

Làm thế nào để tôi thiết lập Ultralytics với Docker?

Để thiết lập Ultralytics với Docker, trước tiên hãy đảm bảo Docker được cài đặt trên hệ thống của bạn. Nếu bạn có NVIDIA GPU , cài đặt NVIDIA Thời gian chạy Docker để kích hoạt GPU hỗ trợ. Sau đó, kéo mới nhất Ultralytics Hình ảnh Docker từ Docker Hub bằng lệnh sau:

sudo docker pull ultralytics/ultralytics:latest

Để biết các bước chi tiết, hãy tham khảo Hướng dẫn bắt đầu nhanh Docker của chúng tôi.

Lợi ích của việc sử dụng là gì? Ultralytics Hình ảnh Docker dành cho các dự án học máy ?

Sử dụng Ultralytics Docker images đảm bảo một môi trường nhất quán trên các máy khác nhau, sao chép cùng một phần mềm và các phụ thuộc. Điều này đặc biệt hữu ích cho việc cộng tác giữa các nhóm, chạy các mô hình trên nhiều phần cứng khác nhau và duy trì khả năng tái tạo. Đối với GPU - đào tạo dựa trên, Ultralytics cung cấp các hình ảnh Docker được tối ưu hóa như Dockerfile cho chung GPU sử dụng và Dockerfile-jetson vì NVIDIA Thiết bị Jetson. Khám phá Ultralytics Trung tâm Docker để biết thêm chi tiết.

Làm sao tôi có thể chạy Ultralytics YOLO trong một container Docker với GPU ủng hộ?

Đầu tiên, đảm bảo rằng NVIDIA Docker runtime đã được cài đặt và cấu hình. Sau đó, sử dụng lệnh sau để chạy Ultralytics YOLO với GPU ủng hộ:

sudo docker run -it --ipc=host --gpus all ultralytics/ultralytics:latest

Lệnh này thiết lập một vùng chứa Docker với GPU truy cập. Để biết thêm chi tiết, hãy xem Hướng dẫn khởi động nhanh Docker .

Làm thế nào để tôi hình dung YOLO kết quả dự đoán trong một container Docker với một máy chủ hiển thị?

Để hình dung YOLO kết quả dự đoán bằng GUI trong vùng chứa Docker, bạn cần cho phép Docker truy cập vào máy chủ hiển thị của bạn. Đối với các hệ thống chạy X11, lệnh là:

xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v ~/.Xauthority:/root/.Xauthority \
-it --ipc=host ultralytics/ultralytics:latest

Đối với hệ thống chạy Wayland, hãy sử dụng:

xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
-v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/$WAYLAND_DISPLAY \
--net=host -it --ipc=host ultralytics/ultralytics:latest

Bạn có thể tìm hiểu thêm thông tin trong phần Chạy ứng dụng giao diện người dùng đồ họa (GUI) trong Docker Container .

Tôi có thể gắn các thư mục cục bộ vào không? Ultralytics Container Docker?

Có, bạn có thể gắn các thư mục cục bộ vào Ultralytics Docker container sử dụng -v lá cờ:

sudo docker run -it --ipc=host --gpus all -v /path/on/host:/path/in/container ultralytics/ultralytics:latest

Thay thế /path/on/host với thư mục trên máy cục bộ của bạn và /path/in/container với đường dẫn mong muốn bên trong vùng chứa. Thiết lập này cho phép bạn làm việc với các tệp cục bộ của mình bên trong vùng chứa. Để biết thêm thông tin, hãy tham khảo phần có liên quan trên gắn kết các thư mục cục bộ.

📅 Được tạo ra cách đây 1 năm ✏️ Đã cập nhật cách đây 2 tháng

Bình luận