Bỏ để qua phần nội dung

Hướng dẫn bắt đầu nhanh Docker dành cho Ultralytics

Ultralytics Gói Docker Visual

Hướng dẫn này đóng vai trò giới thiệu toàn diện để 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 container. Nó đặc biệt có lợi cho việc đả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 Docker repository trên Docker Hub.

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

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

  • Thiết lập Docker có hỗ trợ NVIDIA
  • Cài đặt Ultralytics Hình ảnh Docker
  • Chạy Ultralytics trong bộ chứa Docker có hỗ trợ CPU hoặc GPU
  • 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 nó từ trang web của Docker.
  • Đảm bảo rằng hệ thống của bạn có GPU NVIDIA và trình điều khiển NVIDIA được cài đặt.

Thiết lập Docker với Hỗ trợ NVIDIA

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

nvidia-smi

Cài đặt NVIDIA Docker Runtime

Bây giờ, chúng ta hãy cài đặt NVIDIA Docker runtime để kích hoạt hỗ trợ GPU 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 Runtime 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 các nền tảng và trường hợp sử dụng khác nhau:

  • Dockerfile: Hình ảnh GPU, lý tưởng cho đào tạo.
  • Dockerfile-arm64: Đối với kiến trúc ARM64, phù hợp với các thiết bị như Raspberry Pi.
  • Dockerfile-cpu: Phiên bản chỉ dành cho CPU cho môi trường suy luận và không phải GPU.
  • Dockerfile-jetson: Tối ưu hóa cho các thiết bị NVIDIA 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 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

Chạy Ultralytics trong Docker Container

Dưới đâ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ờ chỉ định một giả TTY và giữ stdin mở, cho phép bạn tương tác với vùng chứa. Các --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. Các --gpus flag cho phép container truy cập GPU của host.

Chạy Ultralytics trong Docker Container

Dưới đâ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ờ chỉ định một giả TTY và giữ stdin mở, cho phép bạn tương tác với vùng chứa. Các --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. Các --gpus flag cho phép container truy cập GPU của host.

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 bộ 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 container 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 giả định mọi rủi ro

Các hướng dẫn sau đây là thử nghiệm. Việc chia sẻ socket X11 với bộ chứa Docker tiềm ẩn 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 is primarily used to containerize background applications and CLI programs, but it can also run graphical programs. In the Linux world, two main graphic servers handle graphical display: X11 (also known as the X Window System) and Wayland. Before starting, it's essential to determine which graphics server you are currently using. Run this command to find out:

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

Thiết lập và cấu hình của 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ề gì, thì bạn sẽ cần bắt đầu bằng cách làm việc 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 bộ chứa Docker truy cập vào khe 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 đặt 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 vùng chứa. Các xhost +local:docker lệnh cho phép bộ chứa Docker truy cập vào máy chủ X11.

Đối với Wayland, 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 đặt DISPLAY biến môi trường vào màn hình của máy chủ, gắn socket Wayland và cho phép container 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 bộ chứa Docker của bạn. Ví dụ: bạn có thể chạy như sau CLI lệnh để trực quan hóa các dự đoán từ một YOLOv8 Mô hình:

yolo predict model=yolov8n.pt show=True
Thử nghiệm

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 Bộ chứa Docker để 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 xem xét thiết lập biến môi trường -e QT_DEBUG_PLUGINS=1. Đặt biến môi trường này cho phép đầu ra 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 từ 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 Thiết bị đầu cuối?

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


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ó. Đối với các phương pháp cài đặt thay thế, vui lòng khám phá Ultralytics Tài liệu bắt đầu nhanh.



Created 2023-11-12, Updated 2024-06-10
Authors: glenn-jocher (6), Burhan-Q (1), jpedrofonseca_94@hotmail.com (1)

Ý kiến