Cloud & hạ tầng

Tại sao khả năng quan sát GPU trên Kubernetes đòi hỏi kỹ thuật tùy chỉnh

Kubernetes thiếu các chỉ số GPU theo từng pod gốc, buộc các nhóm nền tảng phải xây dựng khả năng hiển thị tùy chỉnh cho hạng mục hạ tầng tốn kém nhất.

Abstract illustration of disconnected GPU components in a server rack
Minh họa được tạo riêng cho bài viết này

Được dịch tự động từ bản gốc tiếng Anh.

Việc chạy các khối lượng công việc AI trên Kubernetes cho thấy sự tương phản rõ rệt giữa quản lý CPU và GPU. Trong khi mức sử dụng CPU và bộ nhớ đi kèm với các chỉ số theo từng pod tích hợp sẵn và phân bổ chi phí, thì GPU dùng chung không cung cấp bất kỳ tính năng nào trong số này ngay từ đầu. Tính đến tháng 10 năm 2026, các kỹ sư nền tảng phải tự tay tái tạo khả năng hiển thị cho thành phần hạ tầng đắt đỏ nhất của họ.

Chuyện gì đã xảy ra

Trong nhiều năm, người dùng Kubernetes đã dựa vào các bảng điều khiển tiêu chuẩn để theo dõi mức tiêu thụ tài nguyên. Các công cụ này so sánh những gì một container yêu cầu với những gì nó thực sự sử dụng, cho phép các nhóm xác định lãng phí và phân bổ chi phí theo namespace. Mô hình này hoạt động trơn tru đối với CPU và bộ nhớ vì kernel tự động theo dõi mức sử dụng cho từng container. Tuy nhiên, quy trình làm việc đã được thiết lập này hoàn toàn bị phá vỡ khi áp dụng cho Đơn vị Xử lý Đồ họa (GPU).

Khi các khối lượng công việc chuyển sang GPU, các giả định đúng đắn đối với các tài nguyên khác không còn phù hợp nữa. Các nhóm nền tảng thấy mình phải xây dựng lại mọi lớp hiển thị từ con số không. Họ phải tạo ra các chỉ số riêng, xác định các tiêu chuẩn độ chính xác riêng và phát minh ra các quy tắc để chia hóa đơn. Nỗ lực thủ công này đặc biệt đau khổ vì chi phí GPU chiếm khoản chi phí lớn nhất trong ngân sách hạ tầng AI hiện đại.

Cách thức hoạt động

Vấn đề cốt lõi nằm ở cách các chỉ số GPU được tiết lộ. Các công cụ như DCGM exporter của NVIDIA mặc định báo cáo dữ liệu ở cấp độ thiết bị vật lý. Cách tiếp cận này hoạt động tốt khi một pod duy nhất sở hữu toàn bộ GPU. Tuy nhiên, khi nhiều pod chia sẻ một GPU thông qua time-slicing hoặc Multi-Process Service (MPS), exporter gán cùng một giá trị tổng mức sử dụng cho mọi pod. Nếu ba pod chia sẻ một GPU, mỗi pod có vẻ như sử dụng 100% thiết bị, dẫn đến con số tổng mức sử dụng vô nghĩa là 300%. Driver chỉ tiết lộ một bộ bộ đếm duy nhất cho toàn bộ GPU, khiến việc phân biệt mức tiêu thụ của từng khối lượng công việc trở nên bất khả thi.

Việc điều chỉnh kích thước (rightsizing) cũng trở nên phức tạp. Khác với CPU, vốn hỗ trợ millicores và overcommitting, GPU thường được yêu cầu dưới dạng các đơn vị nguyên vẹn. Việc chia sẻ phân số diễn ra bên dưới scheduler thông qua time-slicing hoặc các phân vùng Multi-Instance GPU (MIG), nghĩa là các yêu cầu Kubernetes không khớp gọn gàng với mức sử dụng thực tế. Hơn nữa, các chỉ số mức sử dụng GPU khá mơ hồ. Một GPU có thể hiển thị mức sử dụng 100% trong khi thực hiện rất ít công việc tính toán, vì các framework thường dành trước hầu hết bộ nhớ khi khởi động. Mức sử dụng bộ nhớ vẫn là chỉ số đáng tin cậy nhất cho việc phân bổ chi phí, vì thời gian tính toán khó đo lường chính xác trong các môi trường đồng thời.

Chi tiết chính

  • DCGM exporter của NVIDIA báo cáo ở cấp độ thiết bị, gây ra các con số mức sử dụng bị thổi phồng khi GPU được chia sẻ giữa nhiều pod.
  • Các yêu cầu GPU trong Kubernetes là tài nguyên số nguyên, ngăn cản các chiến lược overcommitting và bursting phổ biến với CPU.
  • Biến môi trường NVIDIA_VISIBLE_DEVICES có thể cho phép các pod truy cập tất cả GPU trên một node nếu không được ghi đè đúng cách bởi device plugin.
  • Các chỉ số mức sử dụng tính toán không đáng tin cậy đối với các khối lượng công việc dùng chung, vì chúng chỉ ra hoạt động chứ không phải mức tiêu thụ tài nguyên tỷ lệ thuận.
  • Mức sử dụng bộ nhớ là tín hiệu chính xác nhất cho việc phân bổ chi phí, mặc dù nó không tính đến các lát bộ nhớ do driver dành trước.
  • Các nhà cung cấp đám mây tính phí các node GPU như một dòng mục duy nhất, đòi hỏi phải phân tách thủ công để gán chi phí cho các mô hình hoặc nhóm cụ thể.

Tại sao điều này quan trọng

Đối với những người xây dựng phần mềm, việc thiếu khả năng quan sát GPU gốc dịch trực tiếp thành gánh nặng kỹ thuật và sự mờ ám về tài chính. Các nhóm không thể đơn giản áp dụng các playbook giám sát CPU hiện có của họ. Thay vào đó, họ phải đầu tư đáng kể thời gian để xây dựng các công cụ tùy chỉnh nhằm theo dõi mức sử dụng, thực thi các rào chắn bảo vệ và chia nhỏ chi phí. Điều này làm chuyển hướng nguồn lực từ phát triển sản phẩm sang bảo trì hạ tầng. Nếu không có dữ liệu chính xác, các tổ chức có nguy cơ cấp quá mức phần cứng đắt đỏ hoặc thất bại trong việc tính lại chi phí cho đúng nhóm, dẫn đến sự kém hiệu quả về ngân sách.

Sự phức tạp mở rộng đến các quyết định kiến trúc kỹ thuật. Các mô hình chia sẻ khác nhau, chẳng hạn như time-slicing, MPS và MIG, thay đổi công thức toán học cơ bản cho việc phân bổ tài nguyên. Dynamic Resource Allocation (DRA) đang trưởng thành trong Kubernetes, nhưng hệ sinh thái, bao gồm các autoscaler, vẫn đang bắt kịp. Các kỹ sư phải hiểu chế độ chia sẻ nào mà các node của họ sử dụng để diễn giải các chỉ số một cách chính xác. Việc diễn giải sai các tín hiệu này có thể dẫn đến các quyết định scaling không chính xác và các nút thắt cổ chai về hiệu suất.

Bạn có thể làm gì

  • Kiểm tra cấu hình giám sát GPU hiện tại của bạn.
  • Sử dụng mức sử dụng bộ nhớ làm tín hiệu chính xác nhất cho việc phân bổ chi phí, mặc dù cần lưu ý rằng nó không tính đến các lát bộ nhớ do driver dành trước.
  • Đảm bảo biến môi trường NVIDIA_VISIBLE_DEVICES được ghi đè đúng cách bởi device plugin để tránh các pod truy cập ngoài ý muốn vào tất cả GPU trên node.
  • Hiểu rõ chế độ chia sẻ (time-slicing, MPS, MIG) mà các node của bạn đang sử dụng để diễn giải chính xác các chỉ số và đưa ra quyết định scaling đúng đắn.
  • Xây dựng các công cụ tùy chỉnh để phân tách chi phí từ các hóa đơn node GPU của nhà cung cấp đám mây, nhằm gán chi phí chính xác cho các mô hình hoặc nhóm cụ thể.

Công cụ từ cửa hàng Bytechap

Đọc tiếp

Cloud & hạ tầng

Kubernetes v1.34 kích hoạt hoán đổi bộ nhớ trên node để tăng mật độ khối lượng công việc AI

Kubernetes v1.34 đã đạt trạng thái General Availability (GA) cho tính năng hoán đổi bộ nhớ trên node, cho phép các cụm sử dụng ổ cứng SSD NVMe tốc độ cao để đưa các trang bộ nhớ nhàn rỗi ra đĩa, từ đó tăng đáng kể mật độ pod cho các khối lượng công việc AI.

Tất cả bài viết