管理 GPU 容器工作負載

您可以在容器上啟用及管理圖形處理器 (GPU) 資源。舉例來說,您可能偏好在 GPU 環境中執行人工智慧 (AI) 和機器學習 (ML) 筆記本。Google Distributed Cloud (GDC) 實體隔離設備預設會啟用 GPU 支援。

事前準備

如要將 GPU 部署至容器,您必須具備下列條件:

  • 命名空間管理員角色 (namespace-admin),可在專案命名空間中部署 GPU 工作負載。

  • Bare Metal Kubernetes 叢集的 kubeconfig 路徑。 登入並產生 kubeconfig 檔案 (如果沒有的話)。

設定容器以使用 GPU 資源

如要在容器中使用 GPU,請完成下列步驟:

  1. 確認 Kubernetes 叢集節點支援 GPU 資源分配:

    kubectl describe nodes NODE_NAME
    

    NODE_NAME 替換為管理要檢查 GPU 的節點。

    相關輸出內容類似於下列程式碼片段:

    Capacity:
      nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1
    Allocatable:
      nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1
    
  2. 在容器規格中加入 .containers.resources.requests.containers.resources.limits 欄位。由於 Kubernetes 叢集已預先設定 GPU 機器,因此所有工作負載的設定都相同:

     ...
     containers:
     - name: CONTAINER_NAME
       image: CONTAINER_IMAGE
       resources:
         requests:
           nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1
         limits:
           nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1
     ...
    

    更改下列內容:

    • CONTAINER_NAME:容器名稱。
    • CONTAINER_IMAGE:容器映像檔,用於存取 GPU 機器。您必須加入映像檔的容器登錄路徑和版本,例如 REGISTRY_PATH/hello-app:1.0
  3. 容器也需要額外權限才能存取 GPU。針對要求 GPU 的每個容器,請在容器規格中新增下列權限:

    ...
    securityContext:
     seLinuxOptions:
       type: unconfined_t
    ...
    
  4. 套用容器資訊清單檔案:

    kubectl apply -f CONTAINER_MANIFEST_FILE \
        -n NAMESPACE \
        --kubeconfig CLUSTER_KUBECONFIG
    

    更改下列內容:

    • CONTAINER_MANIFEST_FILE:容器工作負載自訂資源的 YAML 檔案。
    • NAMESPACE:要部署容器工作負載的專案命名空間。
    • CLUSTER_KUBECONFIG:裸機 Kubernetes 叢集的 kubeconfig 檔案,您要將容器工作負載部署到這個叢集。
  5. 確認 Pod 正在執行並使用 GPU:

    kubectl get pods -A | grep CONTAINER_NAME \
        -n NAMESPACE \
        --kubeconfig CLUSTER_KUBECONFIG
    

    相關輸出內容類似於下列程式碼片段:

    Port:           80/TCP
    Host Port:      0/TCP
    State:          Running
    Ready:          True
    Restart Count:  0
    Limits:
      nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE:  1
    Requests:
      nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE:  1