管理 GPU 容器工作負載

您可以在容器上啟用及管理圖形處理器 (GPU) 資源。舉例來說,您可能偏好在 GPU 環境中執行人工智慧 (AI) 和機器學習 (ML) 筆記本。如要執行 GPU 容器工作負載,您必須擁有支援 GPU 裝置的 Kubernetes 叢集。如果 Kubernetes 叢集已佈建 GPU 機器,系統預設會啟用 GPU 支援。

事前準備

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

  • 具有 GPU 機器類別的 Kubernetes 叢集。如要瞭解叢集機器的設定選項,請參閱「支援的 GPU 卡」一節。

  • 使用者叢集節點檢視者角色 (user-cluster-node-viewer) 可檢查 GPU,命名空間管理員角色 (namespace-admin) 則可在專案命名空間中部署 GPU 工作負載。

  • 代管 Kubernetes 叢集的區域管理 API 伺服器 kubeconfig 路徑。登入並產生 kubeconfig 檔案 (如果沒有)。

  • 機構基礎架構叢集的 kubeconfig 路徑,該叢集位於預計要代管 GPU 的區域。登入並產生 kubeconfig 檔案 (如果沒有)。

  • Kubernetes 叢集名稱。如果沒有這項資訊,請洽詢平台管理員。

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

設定容器以使用 GPU 資源

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

  1. 確認 Kubernetes 叢集是否具備支援 GPU 的節點集區:

    kubectl describe nodepoolclaims -n KUBERNETES_CLUSTER_NAME \
        --kubeconfig ORG_INFRASTRUCTURE_CLUSTER
    

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

    Spec:
      Machine Class Name:  a2-ultragpu-1g-gdc
      Node Count:          2
    

    如需支援的 GPU 機器類型和多重執行個體 GPU (MIG) 設定檔完整清單,請參閱「叢集節點機器類型」。

  2. .containers.resources.requests.containers.resources.limits 欄位新增至容器規格。每個資源名稱會因機器類別而異。檢查 GPU 資源分配情形,找出 GPU 資源名稱。

    舉例來說,下列容器規格會從 a2-ultragpu-1g-gdc 節點要求三個 GPU 分區:

     ...
     containers:
     - name: my-container
       image: "my-image"
       resources:
         requests:
           nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 3
         limits:
           nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 3
     ...
    
  3. 容器也需要額外權限才能存取 GPU。針對要求 GPU 的每個容器,請在容器規格中新增下列權限:

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

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

檢查 GPU 資源分配

  • 如要檢查 GPU 資源分配情形,請使用下列指令:

    kubectl describe nodes NODE_NAME
    

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

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

    Capacity:
      nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 7
    Allocatable:
      nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 7
    

請記下 GPU 的資源名稱,設定容器使用 GPU 資源時必須指定這些名稱。