Tất cả tài liệu

Managed – FPT Kubernetes Engine

    Dịch vụ GPU trên K8s FPT Cloud
    Dịch vụ GPU trên K8s FPT Cloud
    Updated on 16 Feb 2024

    FPT Cloud cung cấp Kubernetes sử dụng GPU NVIDIA có các tính năng chính sau: 

    • Cấu hình GPU linh hoạt với loại GPU, bộ nhớ GPU tùy chọn cho từng Worker Group.

    • Quản lý và cấp phát tài nguyên GPU trong Kubernetes tự động với NVIDIA Operator

    • Cho phép trực quan hóa và giám sát GPU bằng NVIDIA DCGM.

    • Tự động tăng/giảm Container/Node với Autoscaler khi ứng dụng yêu cầu sử dụng tài nguyên GPU tăng lên/giảm đi.

    • Hỗ trợ GPU sharing với cơ chế Multi-Instance, giúp tối ưu hóa tài nguyên và chi phí sử dụng GPU.

    FPT Cloud sử dụng NVIDIA GPU Operator cung cấp công cụ tự động quản lý tất cả các thành phần phần mềm cần thiết để sử dụng GPU trên K8s. GPU Operator cho phép người dùng sử dụng tài nguyên GPU giống như sử dụng CPU trong cụm K8s.

     

    Các thành phần phần mềm bao gồm: 

    • NVIDIA Drivers (CUDA, MIG,…)

    • NVIDIA Device Plugin

    • NVIDIA Container Toolkit

    • NVIDIA GPU Feature Discovery

    • NVIDIA Data Center GPU Manager (Monitoring)

    K8s Operator tự động cấu hình MIG cho worker, để thực hiện config MIG cần label worker theo các profile được hỗ trợ bởi Nvidia. Các cấu hình MIG được liệt kê trong Configmap default-mig-parted-config trên k8s, namespace: gpu-operator.

     

    Diagram
Description automatically generated

     

    MIG trên Kubernetes được thiết kế như một controller. Nó theo dõi các thay đổi đối với label nvidia.com/mig.config trên worker, sau đó áp dụng cấu hình MIG do người dùng yêu cầu. Khi label thay đổi, MIG trước tiên sẽ stop tất cả các pod GPU (bao gồm device plugin, gfd và dcgm-exporter). Sau đó, nó stop tất cả systemd-services trên các worker GPU nếu driver đã được cài đặt sẵn, các service này liệt kê trong configmap có tên là default-gpu-clients. Cuối cùng, nó áp dụng lại cấu hình MIG và khởi động lại pod GPU (có thể cả gpu systemd-services trên worker GPU nếu cần thiết). Enable MIG mode yêu cầu khởi động lại worker. 

     

     

    FPT Cloud hiện tại đang hỗ trợ card GPU Nvidia A30, đang hỗ trợ các MIG profile – label sau:

     

     

    No.   GPU A30 Profile – Label   Strategy   Number instance   Instance resource 
     1   all-1g.6gb   single   4   1g.6gb 
     2   all-2g.12gb   single   2   2g.12gb 
     3  all-4g.24gb   single  1   4g.24gb 
     4   all-balanced   mixed  2   1g.6gb 
     1  2g.12gb 
     5  none (no label)   none  0   0 (Entire A30-24GB)

     

    Ví dụ:  

    Với card GPU A30, bạn có thể cấu hình strategy single với label: all-1g.6gb. Label này có nghĩa là Operator sẽ chia nhỏ GPU A30 trên worker thành 4x mig-devices có tài nguyên 1gpu logic (bằng ¼ GPU vật lý) và 6GB GPU RAM. MIG config này áp dụng cho tất cả các card gắn trên worker được đánh label. 

     

    FPT Cloud sử dụng Nvidia GPU Telemetry tích hợp với kube–prometheus-stack thành bộ công cụ theo dõi và giám sát cho hệ thống sử dụng GPU trên k8s. Bộ công cụ giám sát bao gồm collector, time-series database lưu trữ chỉ số (metrics) và visualization (giao diện trực quan hóa). Bộ công cụ sử dụng các ứng dụng mã nguồn mở phổ biến là Prometheus và Grafana. Prometheus cũng bao gồm Alertmanager để tạo và quản lý các cảnh báo. Prometheus được triển khai cùng với kube-state-metrics và node_exporter để hiển thị các chỉ số (metrics) mức cluster cho các đối tượng API Kubernetes và các chỉ số mức node, ví dụ như mức sử dụng GPU.

     

    Mô hình kiến trúc GPU Telemetry sử dụng:

     

    Graphical user interface
Description automatically generated

     

    Để thu thập telemetry GPU trong Kubernetes, Nvidia khuyến nghị sử dụng dcgm-exporter. Dcgm-exporter hiển thị GPU metrics cho Prometheus và có thể hiển thị trực quan qua Grafana. Dcgm-exporter được thiết kế để tận dụng KubeletPodResources API và hiển thị GPU metrics ở định dạng để Prometheus có thể thu thập được. Công cụ bao gồm cả ServiceMonitor để expose ra Endpoints.

     

    Dashboard GPU của Nvidia DCGM:

     

    Graphical user interface
Description automatically generated

     

    Conclusion:

    Vì vậy, GPU trên Kubernetes có phải là một giải pháp tốt cho AI workload không? Chắc chắn rồi, ngày càng có nhiều tiện ích mở rộng mã nguồn mở cho Kubernetes như KNative, Istio, Kubeflow và KFSServing giúp chạy workload trên Kubernetes, giúp tăng tốc và đơn giản hóa việc triển khai AI nói chung và machine learning nói riêng trên Kubernetes, loại bỏ sự phức tạp, dễ dàng triển khai hơn và quản lý các ứng trên quy mô lớn. 

    Kubernetes đang trở thành công nghệ trọng tâm trong việc triển khai AI ngày nay. Từ dữ liệu và model đến prototype và cuối cùng là production đã được sắp xếp hợp lý và đơn giản hóa rất nhiều bởi các thư viện như PyTorch, TensorFlow và Keras. Đồng thời, các frameworks này cũng có thể được áp dụng rất chi tiết, nếu cần, để phát triển các thành phần tùy chỉnh hoặc để tích hợp và điều chỉnh các mô hình hiện có bằng cách sử dụng transfer learning. Công nghệ Container cho phép kết quả được đóng gói thành image với tất cả requirements và dependencies của ứng dụng, đồng thời được thực thi ở hầu hết mọi nơi mà không gặp hạn chế về tốc độ. Ở bước cuối cùng, việc triển khai, bảo trì và mở rộng quy mô của chúng cũng trở nên vô cùng đơn giản và mạnh mẽ với Kubernetes. 

    Sự kết hợp giữa GPU trên k8s là cần thiết để cải thiện hiệu suất và tốc độ xử lý phục vụ cho các ứng dụng AI. Dịch vụ GPU trên Kubenetes FPT Cloud đem lại hiệu quả về chất lượng, tiết kiệm thời gian, đặc biệt là đối với các doanh nghiệp tài chính, ngân hàng cần xử lý khối lượng lớn về data. 

     

    Tài liệu tham khảo: