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 với NVIDIA hỗ trợ
  • Cài đặt Ultralytics Hình ảnh Docker
  • Chạy Ultralytics trong bộ chứa Docker với CPU hoặc GPU hỗ trợ
  • 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ó NVIDIA GPU và NVIDIA Trình điều khiển được cài đặt.

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

Trước 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ờ, hãy cài đặt NVIDIA Thời gian chạy Docker để kích hoạt GPU hỗ trợ trong Docker container:

# 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: GPU hình ảnh, 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: CPU-chỉ phiên bản cho suy luận và không-GPU Môi trường.
  • Dockerfile-jetson: 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 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 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à phải 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'

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.

FAQ

Làm cách nào để 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 rằng 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 Docker image từ Docker Hub sử dụ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 cho các dự án machine learning?

Sử dụng Ultralytics Hình ảnh Docker đả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à 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 các phần cứng khác nhau và duy trì khả năng tái tạo. Cho 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 tổng quát GPU sử dụng và Dockerfile-jetson cho NVIDIA Thiết bị Jetson. Khám phá Ultralytics Trung tâm Docker để biết thêm chi tiết.

Tôi có thể chạy như thế nào Ultralytics YOLO trong bộ chứa Docker với GPU hỗ trợ?

Đầu tiên, hãy đả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 hỗ trợ:

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

Lệnh này thiết lập một Docker container với GPU truy cập. Để biết thêm chi tiết, hãy xem Hướng dẫn bắt đầu nhanh Docker.

Làm cách nào để hình dung YOLO kết quả dự đoán trong bộ chứa Docker có máy chủ hiển thị?

Để hình dung YOLO dự đoán kết quả với GUI trong bộ chứa Docker, bạn cần cho phép Docker truy cập vào máy chủ hiển thị của mình. Đố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 các 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 thêm thông tin trong phần Chạy ứng dụng giao diện người dùng đồ họa (GUI) trong phần Docker Container .

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

Có, bạn có thể gắn kết các thư mục cục bộ vào Ultralytics Docker container sử dụng -v 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 container. 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 trong vùng chứa. Để biết thêm thông tin, hãy tham khảo phần liên quan về Gắn thư mục cục bộ.



Đã tạo 2023-11-12, Cập nhật 2024-07-05
Tác giả: glenn-jocher (7), Burhan-Q (1), jpedrofonseca_94@hotmail.com (1)

Ý kiến