Thuật ngữ

Container hóa

Khám phá sức mạnh của container hóa cho các dự án AI/ML. Hợp lý hóa quy trình làm việc, đảm bảo tính nhất quán và mở rộng quy mô hiệu quả với các công cụ tiên tiến.

Xe lửa YOLO mô hình đơn giản
với Ultralytics TRUNG TÂM

Tìm hiểu thêm

Containerization là phương pháp đóng gói mã phần mềm cùng với tất cả các phụ thuộc, thư viện và tệp cấu hình cần thiết thành một đơn vị độc lập, được gọi là "container". Đóng gói này đảm bảo rằng các ứng dụng chạy đáng tin cậy và nhất quán trên các môi trường điện toán khác nhau, cho dù đó là máy cục bộ của nhà phát triển, môi trường thử nghiệm hay máy chủ sản xuất trên đám mây . Không giống như các máy ảo (VM) truyền thống yêu cầu hệ điều hành đầy đủ cho mỗi phiên bản, container chia sẻ hạt nhân hệ điều hành của hệ thống máy chủ. Điều này làm cho chúng nhẹ hơn đáng kể, khởi động nhanh hơn và hiệu quả hơn trong việc sử dụng tài nguyên, đặc biệt có lợi cho các ứng dụng Trí tuệ nhân tạo (AI)Học máy (ML) sử dụng nhiều tài nguyên thường có các yêu cầu phần mềm phức tạp.

Các khái niệm và thành phần chính

Để hiểu về container hóa cần có một số ý tưởng cốt lõi sau:

  • Container Image: Một gói nhẹ, độc lập, có thể thực thi bao gồm mọi thứ cần thiết để chạy một phần mềm: mã, thời gian chạy, công cụ hệ thống, thư viện hệ thống và cài đặt. Hình ảnh thường được xây dựng dựa trên hướng dẫn trong một tệp đặc biệt (như Dockerfile).
  • Container: Một phiên bản đang chạy của một hình ảnh container. Nó chạy tách biệt với các container khác và hệ thống máy chủ nhưng chia sẻ hạt nhân hệ điều hành máy chủ. Nhiều container có thể chạy trên cùng một máy chủ.
  • Docker : Nền tảng container hóa phổ biến nhất, được phát triển bởi Docker, Inc. Nó cung cấp các công cụ để xây dựng, chia sẻ và chạy các ứng dụng container hóa một cách dễ dàng. Ultralytics cung cấp hướng dẫn Docker Quickstart để thiết lập YOLO mô hình.
  • Container Registry: Kho lưu trữ để lưu trữ và phân phối hình ảnh container. Docker Hub là một sổ đăng ký công khai được sử dụng rộng rãi, nhưng sổ đăng ký riêng cũng phổ biến.
  • Orchestration: Các công cụ như Kubernetes và Docker Swarm được sử dụng để quản lý vòng đời của container theo quy mô, xử lý việc triển khai, mở rộng quy mô, kết nối mạng và tính khả dụng trên nhiều máy chủ. Cloud Native Computing Foundation (CNCF) lưu trữ nhiều dự án liên quan đến dàn dựng container.

Lợi ích của việc chứa trong AI/ML

Việc chứa đựng mang lại những lợi thế đáng kể cho các dự án ML và AI:

  • Khả năng tái tạo: Container đóng gói môi trường chính xác (thư viện, phiên bản như PyTorch hoặc OpenCV , cấu hình) cần thiết để chạy ứng dụng hoặc mô hình, đảm bảo tính nhất quán giữa phát triển, thử nghiệm và sản xuất. Điều này rất quan trọng đối với nghiên cứu có thể tái tạotriển khai mô hình đáng tin cậy.
  • Quản lý phụ thuộc: Các dự án AI/ML thường dựa vào các phiên bản cụ thể của nhiều thư viện. Các container cô lập các phụ thuộc này, ngăn ngừa xung đột giữa các dự án hoặc thư viện hệ thống khác nhau.
  • Khả năng mở rộng: Các container có thể được khởi động và dừng nhanh chóng, giúp dễ dàng mở rộng hoặc thu hẹp quy mô ứng dụng dựa trên nhu cầu, điều này rất quan trọng để xử lý khối lượng công việc thay đổi trong suy luận thời gian thực . Điều này hỗ trợ nhu cầu mở rộng tính toán .
  • Tính di động: Các container chạy ổn định trên nhiều môi trường khác nhau – từ máy tính xách tay của nhà phát triển đến máy chủ tại chỗ hoặc đám mây công cộng như AWS , Google Cloud hoặc Microsoft Azure . Điều này giúp đơn giản hóa việc triển khai đến nhiều mục tiêu khác nhau, bao gồm các thiết bị biên . Khám phá nhiều Tùy chọn triển khai mô hình được tạo điều kiện thuận lợi bằng container hóa.
  • Hiệu quả: Các container sử dụng ít tài nguyên hơn ( CPU , bộ nhớ, lưu trữ) so với VM vì chúng không cần hệ điều hành riêng cho từng phiên bản, cho phép mật độ ứng dụng cao hơn trên cùng một phần cứng. Điều này phù hợp với Hoạt động học máy (MLOps) hiệu quả.

Container hóa so với ảo hóa

Trong khi cả container hóa và ảo hóa đều tạo ra các môi trường biệt lập, cách tiếp cận của chúng lại khác nhau đáng kể. Máy ảo (VM) mô phỏng toàn bộ hệ thống phần cứng, chạy toàn bộ hệ điều hành khách trên một trình quản lý ảo. Điều này cung cấp khả năng cô lập mạnh mẽ nhưng lại phát sinh chi phí đáng kể về mặt tiêu thụ tài nguyên ( CPU , bộ nhớ) và thời gian khởi động. Ngược lại, container ảo hóa chính hệ điều hành, chia sẻ hạt nhân hệ điều hành máy chủ thông qua các công cụ container hóa như Docker. Điều này dẫn đến diện tích nhỏ hơn nhiều, khởi động nhanh hơn và hiệu suất tốt hơn. Đối với nhiều tác vụ AI/ML, đặc biệt là triển khai các dịch vụ vi mô hoặc ứng dụng cần khả năng mở rộng nhanh chóng, container thường được ưu tiên hơn. VM vẫn phù hợp khi cần chạy các hệ điều hành khác nhau trên cùng một phần cứng hoặc yêu cầu sự cô lập tối đa tuyệt đối giữa các ứng dụng.

Ứng dụng thực tế trong AI/ML

Container hóa được sử dụng rộng rãi trong suốt vòng đời AI/ML:

  1. Triển khai mô hình phát hiện đối tượng: Mô hình YOLO Ultralytics được đào tạo để phát hiện đối tượng có thể được đóng gói vào một container Docker. Container này bao gồm trọng số mô hình, tập lệnh suy luận và tất cả các phụ thuộc cần thiết ( PyTorch , CUDA thư viện, v.v.). Sau đó, container này có thể được triển khai nhất quán trên nhiều nền tảng khác nhau, từ GPU đám mây mạnh mẽ đến các thiết bị Edge AI hạn chế tài nguyên, đảm bảo mô hình hoạt động như mong đợi bất kể môi trường nào. Ultralytics cung cấp hướng dẫn khởi động nhanh Docker để thực hiện việc này.
  2. Phục vụ các mô hình NLP dưới dạng các dịch vụ vi mô: Một nhóm phát triển ứng dụng Xử lý ngôn ngữ tự nhiên (NLP) sử dụng các mô hình từ các nền tảng như Hugging Face có thể chứa các thành phần khác nhau (ví dụ: xử lý trước văn bản, suy luận mô hình, điểm cuối API) dưới dạng các dịch vụ vi mô riêng biệt. Các vùng chứa này có thể được quản lý bằng Kubernetes , cho phép mở rộng quy mô và cập nhật độc lập từng thành phần, dẫn đến kiến trúc hệ thống có khả năng phục hồi và quản lý tốt hơn, thường tuân theo các nguyên tắc kiến trúc dịch vụ vi mô . Các nền tảng như Ultralytics HUB cũng tận dụng các nguyên tắc chứa để quản lý và triển khai mô hình hợp lý.

Việc chứa dữ liệu, được chuẩn hóa thông qua các nỗ lực như Sáng kiến chứa dữ liệu mở (OCI) , đã trở thành nền tảng của phát triển và triển khai phần mềm hiện đại, đặc biệt là trong các lĩnh vực AI và Thị giác máy tính (CV) đang phát triển nhanh chóng.

Đọc tất cả