Thuật ngữ

Kubernetes

Khám phá cách Kubernetes hợp lý hóa khối lượng công việc AI/ML với việc triển khai mô hình có khả năng mở rộng, đào tạo phân tán và quản lý tài nguyên hiệu quả.

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

Tìm hiểu thêm

Kubernetes, thường được viết tắt là K8s, là một nền tảng nguồn mở được thiết kế để tự động triển khai, mở rộng quy mô và vận hành các container ứng dụng. Được thiết kế ban đầu bởi Google , Kubernetes hiện được bảo trì bởi Cloud Native Computing Foundation. Về bản chất, nó hoạt động như một bộ điều phối cho các ứng dụng được chứa trong container, quản lý chúng trên một cụm máy tính để chúng chạy hiệu quả và đáng tin cậy. Đối với người dùng quen thuộc với máy học, hãy nghĩ về Kubernetes như một nhạc trưởng của một dàn nhạc, đảm bảo tất cả các nhạc cụ khác nhau (các thành phần ứng dụng AI/ML của bạn) chơi cùng nhau một cách hài hòa và ở quy mô lớn.

Kubernetes là gì?

Về bản chất, Kubernetes là một hệ thống quản lý các ứng dụng được chứa trong container. Các container đóng gói mã phần mềm và các phần phụ thuộc của nó để các ứng dụng có thể chạy đồng nhất và nhất quán trên các môi trường điện toán khác nhau. Docker là một công nghệ chứa phổ biến thường được sử dụng với Kubernetes. Kubernetes tự động hóa nhiều quy trình thủ công liên quan đến việc triển khai, quản lý và mở rộng các ứng dụng được chứa trong container này. Nó nhóm các container tạo nên một ứng dụng thành các đơn vị logic để dễ dàng quản lý và khám phá. Các đơn vị này, được gọi là pod , được triển khai trên một cụm máy. Sau đó, Kubernetes xử lý các tác vụ như:

  • Khám phá dịch vụ và cân bằng tải : Kubernetes có thể hiển thị một container bằng tên DNS hoặc bằng địa chỉ IP của riêng chúng. Nếu lưu lượng truy cập vào container cao, Kubernetes có thể cân bằng tải và phân phối lưu lượng mạng để triển khai ổn định.
  • Sắp xếp lưu trữ : Kubernetes cho phép bạn tự động gắn hệ thống lưu trữ theo lựa chọn của mình, chẳng hạn như lưu trữ cục bộ, nhà cung cấp đám mây công cộng, v.v.
  • Triển khai và khôi phục tự động : Bạn có thể mô tả trạng thái mong muốn cho các container đã triển khai của mình bằng Kubernetes và nó sẽ thay đổi trạng thái thực tế thành trạng thái mong muốn ở tốc độ được kiểm soát. Ví dụ: Kubernetes có thể tự động tạo các container mới cho triển khai của bạn, xóa các container hiện có và áp dụng tất cả các tài nguyên của chúng cho container mới.
  • Đóng gói thùng tự động : Kubernetes cho phép bạn chỉ định số lượng CPU và RAM (bộ nhớ) mà mỗi container cần. Kubernetes có thể lắp container vào các nút của bạn để tận dụng tối đa tài nguyên của bạn.
  • Tự phục hồi : Kubernetes khởi động lại các container bị lỗi, thay thế và lên lịch lại các container khi các nút chết, xóa các container không phản hồi kiểm tra tình trạng do người dùng xác định và không thông báo chúng cho máy khách cho đến khi chúng sẵn sàng phục vụ.
  • Quản lý bí mật và cấu hình : Kubernetes cho phép bạn lưu trữ và quản lý thông tin nhạy cảm, chẳng hạn như mật khẩu, mã thông báo OAuth và khóa SSH. Bạn có thể triển khai và cập nhật bí mật và cấu hình ứng dụng mà không cần xây dựng lại hình ảnh container và không tiết lộ bí mật trong cấu hình ngăn xếp của bạn.

Tại sao Kubernetes lại liên quan đến AI và ML?

Kubernetes đặc biệt có liên quan trong lĩnh vực AI và học máy do bản chất có thể mở rộng và sử dụng nhiều tài nguyên của khối lượng công việc ML. Đào tạo các mô hình lớn, đặc biệt là Ultralytics YOLO mô hình phát hiện đối tượng , thường yêu cầu tính toán phân tán trên nhiều GPU hoặc TPU. Kubernetes cung cấp cơ sở hạ tầng để quản lý các tài nguyên phân tán này một cách hiệu quả.

Hơn nữa, việc triển khai các mô hình AI/ML để suy luận ở quy mô lớn đòi hỏi cơ sở hạ tầng mạnh mẽ và có thể mở rộng. Kubernetes đơn giản hóa việc triển khai mô hình bằng cách cho phép người dùng chứa các mô hình của họ và phục vụ chúng thông qua các API có thể mở rộng. Điều này rất quan trọng đối với các ứng dụng thực tế yêu cầu độ trễ suy luận thấp và thông lượng cao.

Ứng dụng của Kubernetes trong AI/ML

  1. Phục vụ mô hình có thể mở rộng : Hãy xem xét ứng dụng phát hiện đối tượng theo thời gian thực, chẳng hạn như hệ thống quản lý giao thông thành phố thông minh sử dụng Ultralytics YOLOv8 . Khi thành phố phát triển, nhu cầu xử lý nguồn cấp dữ liệu video từ nhiều camera hơn sẽ tăng lên. Kubernetes cho phép bạn mở rộng cơ sở hạ tầng phục vụ mô hình một cách năng động. Bằng cách triển khai YOLOv8 mô hình như một dịch vụ chứa trong Kubernetes, bạn có thể dễ dàng tăng hoặc giảm số lượng phiên bản mô hình dựa trên lưu lượng truy cập đến, đảm bảo hiệu suất nhất quán ngay cả khi tải nặng. Khả năng mở rộng này rất cần thiết để duy trì độ trễ thấp và tính khả dụng cao trong các ứng dụng AI thời gian thực.

  2. Đào tạo phân tán : Đào tạo các mô hình AI tiên tiến thường đòi hỏi các tập dữ liệu lớn và sức mạnh tính toán đáng kể. Đào tạo phân tán trên một cụm máy trở nên cần thiết để giảm thời gian đào tạo. Kubernetes có thể sắp xếp các công việc đào tạo phân tán bằng cách quản lý việc phân phối khối lượng công việc trên nhiều nút, theo dõi tiến trình và xử lý lỗi. Ví dụ: bạn có thể sử dụng Kubernetes để quản lý công việc đào tạo phân tán cho một mô hình phân loại hình ảnh lớn bằng cách sử dụng một tập dữ liệu như ImageNet . Kubernetes đảm bảo rằng mỗi nút đào tạo được cấu hình đúng, dữ liệu được phân phối hiệu quả và toàn bộ quá trình đào tạo có khả năng phục hồi sau các lỗi nút.

Tóm lại, Kubernetes là một công cụ mạnh mẽ để quản lý sự phức tạp của khối lượng công việc AI và ML, cung cấp khả năng mở rộng, khả năng phục hồi và hiệu quả cho cả giai đoạn đào tạo và triển khai. Khả năng sắp xếp các ứng dụng được chứa trong container khiến nó trở thành nền tảng lý tưởng để xây dựng và chạy các hệ thống AI hiện đại, có khả năng mở rộng.

Đọc tất cả