日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

配置共享GPU調度節點選卡策略

默認情況,Pod分配GPU資源的順序為先分配完節點上的一張GPU卡,再分配其他GPU卡,避免出現GPU資源碎片。但是在有的場景中,您希望讓Pod調度到節點上時,盡量分散到各個GPU卡上,避免因為某張GPU卡壞掉影響的業務過多。本文介紹如何配置共享GPU調度節點選卡策略。

前提條件

策略介紹

在共享GPU調度中,如果節點存在多張GPU卡,從節點中挑選GPU卡分配給Pod時,有兩種策略可以考慮:

  • Binpack:默認策略,調度系統先分配完節點的一張GPU卡后,再分配節點上另一張GPU卡,避免節點出現GPU資源碎片。

  • Spread:調度系統會盡量將Pod分散到這個節點的各個GPU上,避免一張GPU卡壞掉后,影響的業務過多。

以下示例表示,某個節點有2張GPU卡,每張卡有15 GiB顯存,Pod1申請2 GiB顯存,Pod2申請3 GiB顯存。

image

步驟一:創建節點池

默認情況下,節點的選卡策略是Binpack。如果要使用Spread策略,請按照如下操作設置。

  1. 登錄容器服務管理控制臺,在左側導航欄選擇集群

  2. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇節點管理 > 節點池

  1. 節點池頁面,單擊右上角的創建節點池

  2. 創建節點池頁面,設置創建節點池的配置項,然后單擊確認配置。下表僅介紹主要配置項,其余配置項請參見創建節點池

    配置項

    說明

    實例規格

    架構選擇GPU云服務器,選擇多個GPU實例規格。

    由于只有在節點有多張GPU卡的情況下,節點選卡策略才能看出效果,建議選擇帶有多張GPU卡機型。

    期望節點數

    設置節點池初始節點數量。如無需創建節點,可以填寫為0。

    節點標簽

    單擊1.jpg,添加兩條記錄:

    • ack.node.gpu.schedulecgpu。表示開啟GPU共享調度能力,同時開啟GPU顯存隔離能力。

    • ack.node.gpu.placementspread。表示開啟節點Spread選卡策略。

步驟二:提交任務

  1. 登錄容器服務管理控制臺,在左側導航欄選擇集群

  2. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇工作負載 > 任務

  3. 單擊頁面右上角的使用YAML創建資源,將如下代碼拷貝至模板區域,然后按照注釋編輯YAML內容。編輯完成后,單擊頁面下方的創建

    展開查看YAML詳細信息

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: tensorflow-mnist-spread
    spec:
      parallelism: 3
      template:
        metadata:
          labels:
            app: tensorflow-mnist-spread
        spec:
          nodeSelector:
             kubernetes.io/hostname: <NODE_NAME> # 指定<NODE_NAME>為集群中某個GPU節點名稱,便于觀察效果,例如:cn-shanghai.192.0.2.109。
          containers:
          - name: tensorflow-mnist-spread
            image: registry.cn-beijing.aliyuncs.com/ai-samples/gpushare-sample:tensorflow-1.5
            command:
            - python
            - tensorflow-sample-code/tfjob/docker/mnist/main.py
            - --max_steps=100000
            - --data_dir=tensorflow-sample-code/data
            resources:
              limits:
                aliyun.com/gpu-mem: 4 # 總共申請4 GiB顯存。
            workingDir: /root
          restartPolicy: Never

    YAML文件說明如下:

    • 該YAML定義了一個使用tensorflow mnist樣例的Job。Job有3個Pod,每個Pod申請4 GiB顯存。

    • Pod申請4 GiB顯存通過在Pod resources.limits定義aliyun.com/gpu-mem: 4實現

    • 為了在一個節點上看到效果,YAML為Pod添加了一個NodeSelector kubernetes.io/hostname: <NODE_NAME>,用于將Pod調度到指定節點上。

步驟三:驗證節點選卡策略是否為Spread

使用共享GPU調度GPU資源查詢工具,查詢節點GPU資源分配情況:

kubectl inspect cgpu

NAME                   IPADDRESS      GPU0(Allocated/Total)  GPU1(Allocated/Total)  GPU2(Allocated/Total)  GPU3(Allocated/Total)  GPU Memory(GiB)
cn-shanghai.192.0.2.109  192.0.2.109  4/15                   4/15                   0/15                   4/15                   12/60
--------------------------------------------------------------------------------------
Allocated/Total GPU Memory In Cluster:
12/60 (20%)

輸出結果表明,3個Pod分別調度到節點的不同GPU卡上,Spread策略生效。