Yolo Tầm nhìn Thâm Quyến
Thâm Quyến
Tham gia ngay
Bảng chú giải thuật ngữ

Docker

Đơn giản hóa quy trình làm việc AI/ML với Docker! Tìm hiểu cách triển khai mô hình, đảm bảo khả năng tái tạo và mở rộng quy mô hiệu quả trên các môi trường.

Docker là một nền tảng mã nguồn mở tự động hóa việc triển khai, mở rộng quy mô và quản lý ứng dụng thông qua công nghệ container . Trong lĩnh vực trí tuệ nhân tạo (AI) đang phát triển nhanh chóng, Docker giải quyết một thách thức quan trọng được gọi là vấn đề "hoạt động trên máy của tôi". Bằng cách đóng gói một mô hình Học máy (ML) cùng với mã, thời gian chạy, công cụ hệ thống và thư viện của nó vào một đơn vị chuẩn hóa gọi là container, Docker đảm bảo phần mềm sẽ chạy hoàn toàn giống nhau bất kể môi trường điện toán. Tính nhất quán này rất quan trọng đối với các quy trình MLOps hiện đại, tạo điều kiện thuận lợi cho việc chuyển đổi mượt mà từ phát triển cục bộ sang cơ sở hạ tầng điện toán đám mây hoặc thiết bị biên.

Các khái niệm cốt lõi của Docker

Để hiểu về Docker, bạn cần phải quen thuộc với ba thành phần cơ bản xác định quy trình làm việc của nó.

  • Dockerfile: Đây là một tài liệu văn bản chứa tất cả các lệnh mà người dùng có thể gọi trên dòng lệnh để lắp ráp một hình ảnh. Đối với một dự án AI, Dockerfile đóng vai trò như một công thức, chỉ định hệ điều hành cơ sở, cài đặt các ngôn ngữ như Python và thiết lập các framework cần thiết như PyTorch hoặc TensorFlow .
  • Docker Image: Image là một mẫu chỉ đọc kèm theo hướng dẫn tạo vùng chứa Docker. Nó ghi lại trạng thái ứng dụng tại một thời điểm cụ thể. Các nhà phát triển thường sử dụng image cơ sở được tối ưu hóa từ các registry như NVIDIA NGC để tận dụng trình điều khiển được cài đặt sẵn nhằm tăng tốc GPU .
  • Docker Container: Container là một phiên bản có thể chạy được của một image. Nó cô lập ứng dụng khỏi hệ thống máy chủ trong khi chia sẻ kernel hệ điều hành của máy chủ. Sự cô lập này đảm bảo giảm thiểu xung đột phần mềm, một yêu cầu quan trọng để triển khai mô hình ổn định.

Docker trong các ứng dụng AI thực tế

Docker là công cụ không thể thiếu để triển khai các giải pháp thị giác máy tính (CV) mạnh mẽ.

  1. Triển khai AI biên: Khi triển khai mô hình lên các thiết bị hạn chế tài nguyên như NVIDIA Jetson , container Docker cung cấp một môi trường nhẹ, bao gồm các phụ thuộc cụ thể như OpenCV và các thư viện dành riêng cho phần cứng. Ví dụ: mô hình Ultralytics YOLO11 được đóng gói trong container Docker có thể dễ dàng được đẩy đến hàng nghìn camera từ xa để phát hiện đối tượng mà không cần lo lắng về cấu hình từng thiết bị.
  2. Nghiên cứu và Đào tạo Khả năng Tái tạo: Trong nghiên cứu học thuật và công nghiệp, việc tái tạo kết quả là rất quan trọng. Bằng cách sử dụng Docker, các nhà nghiên cứu có thể đóng băng phiên bản chính xác của mọi thư viện được sử dụng trong quá trình đào tạo mô hình . Điều này loại bỏ sự khác biệt do cập nhật phần mềm và cho phép những người khác xác minh kết quả hoặc phát triển dựa trên công trình, thúc đẩy sự hợp tác tốt hơn trong khoa học dữ liệu .

Tích hợp Docker với YOLO

Việc chạy suy luận trong vùng chứa Docker giúp đảm bảo môi trường của bạn luôn sạch sẽ và các phần phụ thuộc không xung đột với các gói cấp hệ thống khác. Dưới đây là một ví dụ đơn giản Python tập lệnh thường chạy bên trong vùng chứa Docker để thực hiện nhiệm vụ phân đoạn hoặc phát hiện hình ảnh .

from ultralytics import YOLO

# Load the YOLO11 model (downloads automatically if not present)
model = YOLO("yolo11n.pt")

# Perform object detection on an online image source
results = model("https://ultralytics.com/images/bus.jpg")

# Print the number of objects detected to verify inference
print(f"Detected {len(results[0].boxes)} objects in the image.")

Docker so với Máy ảo

Mặc dù cả hai công nghệ đều cô lập các ứng dụng nhưng chúng hoạt động khác nhau.

  • Máy ảo (VM): Một VM mô phỏng toàn bộ hệ thống máy tính, bao gồm cả hệ điều hành khách đầy đủ. Điều này khiến VM nặng và khởi động chậm hơn. Red Hat cung cấp một so sánh chi tiết minh họa sự khác biệt về kiến trúc.
  • Container Docker: Container ảo hóa hệ điều hành thay vì phần cứng. Chúng chia sẻ kernel của máy chủ, giúp chúng nhẹ và hiệu quả hơn đáng kể. Hiệu quả này rất quan trọng khi triển khai các mô hình hiệu suất cao như YOLO26 sắp ra mắt, nhằm mục đích tối đa hóa tốc độ và độ chính xác với chi phí tối thiểu.

Mối quan hệ với Kubernetes

Docker và Kubernetes là những công cụ riêng biệt nhưng bổ sung cho nhau. Docker được sử dụng để tạo và chạy các container riêng lẻ. Tuy nhiên, khi quản lý hàng trăm container trên một cụm máy chủ để phục vụ mô hình , cần có một công cụ điều phối. Kubernetes điều phối việc lập lịch và thực thi các container Docker, đảm bảo tính khả dụng cao và khả năng mở rộng cho các tác nhân AI cấp doanh nghiệp. Bạn có thể tìm hiểu thêm về sự kết hợp này trong tài liệu Kubernetes .

Những phát triển trong tương lai Ultralytics hệ sinh thái, chẳng hạn như sắp tới Ultralytics Nền tảng này sẽ tận dụng các nguyên tắc chứa dữ liệu này để hợp lý hóa quy trình tìm nguồn dữ liệu, đào tạo và triển khai, đồng thời đơn giản hóa hơn nữa sự phức tạp của việc quản lý cơ sở hạ tầng.

Tham gia Ultralytics cộng đồng

Tham gia vào tương lai của AI. Kết nối, hợp tác và phát triển cùng với những nhà đổi mới toàn cầu

Tham gia ngay