Sử dụng GPU nodes

Tài liệu này hướng dẫn bạn sử dụng bộ xử lý đồ họa (GPU) trên GPU node của Kubernetes Engine cluster.

GPU cung cấp khả năng xử lý đặc biệt hiệu quả cho các tác vụ như xử lý hình ảnh, học máy (Machine Learning), xử lý ngôn ngữ tự nhiên, video transcode, … Dịch vụ Kubernetes Engine cho phép bạn khởi tạo node pool với phần cứng GPU của NVIDIA®.

Khởi tạo

Để khởi tạo các node có GPU, hãy lựa chọn cấu hình theo ý muốn tại bước tạo node pool, tham khảo tạo và xóa cluster

Cài đặt

  1. NVIDIA GPU device drivers

Khi lựa chọn cấu hình node pool có GPU, hệ thống sẽ tự động cài đặt sẵn driver tương ứng cho bạn

  1. K8s device plugin

Plugin tích hợp NVIDIA GPU cho Kubernetes

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ConfigMap
metadata:
  name: nvidia-device-plugin-config
  namespace: kube-system
data:
  config.yaml: |
    version: v1
    flags:
      migStrategy: "none"
      failOnInitError: false
      nvidiaDriverRoot: "/"
      plugin:
        passDeviceSpecs: false
        deviceListStrategy: "envvar"
        deviceIDStrategy: "uuid"
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: nvidia-device-plugin-daemonset
  namespace: kube-system
spec:
  selector:
    matchLabels:
      name: nvidia-device-plugin-ds
  updateStrategy:
    type: RollingUpdate
  template:
    metadata:
      labels:
        name: nvidia-device-plugin-ds
    spec:
      tolerations:
      - key: nvidia.com/gpu
        operator: Exists
        effect: NoSchedule
      priorityClassName: "system-node-critical"
      containers:
      - name: nvidia-device-plugin-ctr
        image: nvcr.io/nvidia/k8s-device-plugin:v0.12.3
        args:
          - --config-file=/etc/nvidia-device-plugin/config.yaml
        securityContext:
          allowPrivilegeEscalation: false
          capabilities:
            drop: ["ALL"]
        volumeMounts:
          - name: device-plugin
            mountPath: /var/lib/kubelet/device-plugins
          - name: config
            mountPath: /etc/nvidia-device-plugin/
      volumes:
        - name: device-plugin
          hostPath:
            path: /var/lib/kubelet/device-plugins
        - name: config
          configMap:
            name: nvidia-device-plugin-config
EOF

Sử dụng

Sau khi cài đặt và khởi chạy plugin thành công, Kubernetes node sẽ expose thêm một loại tài nguyên nvidia.com/gpu, bạn có thể cấu hình pod sử dụng GPU

Ví dụ như sau:

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
  name: gpu-pod
spec:
  restartPolicy: Never
  containers:
    - name: cuda-container
      image: nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda10.2
      resources:
        limits:
          nvidia.com/gpu: 1 # requesting 1 GPU
  tolerations:
  - key: nvidia.com/gpu
    operator: Exists
    effect: NoSchedule
EOF

Tham khảo thêm