Kubernetes
Khám phá cách Kubernetes tự động hóa việc triển khai và scaling các model AI. Tìm hiểu cách orchestrate Ultralytics YOLO26 trên K8s cho computer vision hiệu năng cao.
Kubernetes, thường được gọi là K8s, là một nền tảng mã nguồn mở được thiết kế để tự động hóa việc triển khai, mở rộng quy mô và quản lý các ứng dụng được container hóa. Ban đầu do Google phát triển và hiện được Quỹ Điện toán Đám mây Bản địa (CNCF) duy trì, Kubernetes đã trở thành tiêu chuẩn để điều phối phần mềm trên cloud. Trong bối cảnh Trí tuệ nhân tạo (AI) và Machine Learning (ML), Kubernetes đóng vai trò là lớp hạ tầng then chốt, cho phép các nhóm kỹ thuật quản lý các workflow phức tạp, từ huấn luyện phân tán đến inference có tính sẵn sàng cao trong môi trường production. Bằng cách trừu tượng hóa phần cứng bên dưới, Kubernetes đảm bảo các ứng dụng chạy ổn định và hiệu quả, bất kể được lưu trữ tại chỗ hay thông qua các nhà cung cấp public cloud.
Kiến trúc và các khái niệm cốt lõi#
Về bản chất, Kubernetes hoạt động theo kiến trúc cluster, bao gồm một tập hợp các máy worker được gọi là node. Các node này chạy các workload container hóa, trong khi control plane quản lý trạng thái tổng thể của cluster. Đơn vị nhỏ nhất có thể triển khai trong Kubernetes là một "Pod", đóng gói một hoặc nhiều container dùng chung tài nguyên lưu trữ và mạng. Lớp trừu tượng này rất quan trọng đối với các ứng dụng thị giác máy tính, vì cho phép developer đóng gói các dependency—chẳng hạn như các thư viện CUDA cụ thể cho bộ xử lý đồ họa (GPUs)—vào một môi trường nhất quán. Các dịch vụ cloud lớn như Dịch vụ Kubernetes Elastic của Amazon (EKS), Dịch vụ Kubernetes của Azure (AKS) và Công cụ Kubernetes của Google (GKE) cung cấp các phiên bản được quản lý của kiến trúc này, giúp giảm gánh nặng bảo trì cho các nhóm data science.
Vì sao Kubernetes quan trọng đối với AI#
Giá trị chính của Kubernetes trong Vận hành Machine Learning (MLOps) nằm ở khả năng xử lý các workload động. Các model AI thường yêu cầu năng lực tính toán rất lớn trong quá trình training và độ trễ inference thấp khi triển khai.
- Khả năng mở rộng: Kubernetes sử dụng tính năng autoscaling để tự động điều chỉnh tài nguyên. Nếu lưu lượng tăng đột biến, Horizontal Pod Autoscaler có thể tăng số lượng pod inference nhằm duy trì khả năng mở rộng mà không cần can thiệp thủ công.
- Tối ưu hóa tài nguyên: Việc phân bổ hiệu quả phần cứng đắt tiền là yếu tố quan trọng. Kubernetes cho phép chia sẻ GPU theo phần và thiết lập node affinity, đảm bảo các model deep learning chỉ sử dụng tài nguyên khi các job đang hoạt động yêu cầu.
- Triển khai có khả năng chống chịu: Đảm bảo tính sẵn sàng cao trong quá trình triển khai model là điều thiết yếu. Nếu một node gặp lỗi, Kubernetes sẽ tự động khởi động lại các pod bị ảnh hưởng trên những node khỏe mạnh, ngăn thời gian ngừng hoạt động đối với các dịch vụ API quan trọng.
Các ứng dụng trong thực tế#
Kubernetes là nền tảng cốt lõi cho nhiều triển khai AI quy mô lớn trong các ngành khác nhau:
-
Quản lý giao thông đô thị thông minh: Một đô thị có thể triển khai các model Ultralytics YOLO26 để phân tích luồng video từ hàng nghìn giao lộ. Sử dụng Kubernetes, hệ thống có thể tự động mở rộng tài nguyên trong giờ cao điểm để xử lý tải phát hiện đối tượng tăng cao và thu hẹp quy mô vào ban đêm để tiết kiệm chi phí. Phương pháp này là nền tảng của các hệ thống quản lý giao thông hiện đại.
-
Cá nhân hóa thương mại điện tử: Các nhà bán lẻ trực tuyến sử dụng những hệ thống đề xuất phức tạp được xây dựng trên các microservice. Một service có thể xử lý việc tạo ứng viên, trong khi service khác quản lý bước xếp hạng lại. Kubernetes điều phối các service riêng biệt này, cho phép các nhóm cập nhật mạng neural dùng để xếp hạng một cách độc lập mà không làm gián đoạn toàn bộ trải nghiệm mua sắm, qua đó hỗ trợ tích hợp liên tục.
Phân biệt Kubernetes và Docker#
Một điểm thường gây nhầm lẫn là mối quan hệ giữa Kubernetes và Docker. Đây không phải là các công nghệ cạnh tranh mà bổ trợ cho nhau. Docker là công cụ để tạo và chạy từng container riêng lẻ (đóng gói ứng dụng), trong khi Kubernetes là công cụ để quản lý một tập hợp các container đó trên nhiều máy. Bạn sử dụng Docker để build model weights và code thành một image, sau đó sử dụng Kubernetes để xác định image đó sẽ chạy ở đâu, khi nào và với bao nhiêu bản sao trong môi trường production.
Ví dụ: Script inference để container hóa#
Để triển khai một model trên Kubernetes, developer thường bắt đầu với một script Python đóng vai trò là entry point của container. Đoạn code sau minh họa một tác vụ inference đơn giản bằng model Ultralytics YOLO26. Script này sẽ chạy bên trong một pod và xử lý các request đến.
from ultralytics import YOLO
# Load the lightweight YOLO26 model
model = YOLO("yolo26n.pt")
# Perform inference on an image source
# In a K8s pod, this would likely process API payloads
results = model("https://ultralytics.com/images/bus.jpg")
# Output the detection count for logging
print(f"Detected {len(results[0].boxes)} objects in the frame.")Công cụ và hệ sinh thái#
Hệ sinh thái Kubernetes bao gồm rất nhiều công cụ được thiết kế cho data science. Kubeflow là một toolkit phổ biến chuyên giúp việc triển khai các workflow ML trên Kubernetes trở nên đơn giản, portable và có khả năng mở rộng. Để giám sát tình trạng của cluster và các metric của ứng dụng, các kỹ sư thường sử dụng Prometheus. Để tiếp tục đơn giản hóa sự phức tạp của việc training và triển khai model trong các môi trường này, Ultralytics Platform cung cấp một interface hợp nhất, tự động hóa việc quản lý dataset và training model, cho phép người dùng export model sẵn sàng cho các cluster điện toán đám mây. Ngoài ra, các package manager như Helm giúp quản lý các ứng dụng Kubernetes phức tạp thông qua các chart có thể tái sử dụng.









