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

通過共享GPU調度實現算力分配

ACK集群Pro版支持為應用申請GPU顯存和算力,能夠幫助您更精細化的使用GPU的顯存和算力資源。本文介紹如何通過共享GPU調度實現算力分配。

前提條件

  • 已創建ACK集群Pro版,且集群版本為v1.20及以上。具體步驟,請參見創建ACK托管集群。對于不同ACK版本的集群,調度器版本需滿足以下要求。關于調度器各版本支持的功能,請參見kube-scheduler

    ACK集群版本

    調度器版本

    1.28

    v1.28.1-aliyun-5.6-998282b9及以上

    1.26

    v1.26.3-aliyun-4.1-a520c096及以上

    1.24

    v1.24.3-ack-2.0及以上

    1.22

    v1.22.15-ack-2.0及以上

    1.20

    v1.20.4-ack-8.0及以上

  • 已安裝共享GPU組件,且Chart版本為1.2.0以上。關于安裝共享GPU組件的具體操作,請參見安裝共享GPU調度組件

  • cGPU版本為1.0.5及以上。關于cGPU的升級操作,請參見升級節點cGPU版本

使用限制

  • 共享GPU調度目前支持僅申請顯存同時申請顯存和算力兩種任務,這兩種任務不能同時存在于一個節點上,即一個節點只運行僅申請顯存的任務,或者只運行同時申請顯存和算力的任務。

  • 為任務申請算力時,有如下限制:

    • 每一張GPU提供的算力按100計量,代表這張卡的100%算力,例如申請20代表使用GPU卡的20%算力。

    • 申請的算力值應為5的倍數,最小為5。如果不為5的倍數,任務將提交失敗。

  • 目前只有以下地域支持GPU顯存算力分配功能。如果您需要使用該功能,請確保集群所在地域在此范圍內。

    地域

    地域ID

    華北2(北京)

    cn-beijing

    華東2(上海)

    cn-shanghai

    華東1(杭州)

    cn-hangzhou

    華北3(張家口)

    cn-zhangjiakou

    華南1(深圳)

    cn-shenzhen

    西南1(成都)

    cn-chengdu

    華南2(河源)

    cn-heyuan

    中國香港

    cn-hongkong

    印度尼西亞(雅加達)

    ap-southeast-5

    新加坡

    ap-southeast-1

    泰國(曼谷)

    ap-southeast-7

    美國(弗吉尼亞)

    us-east-1

    美國(硅谷)

    us-west-1

    日本(東京)

    ap-northeast-1

    華東2 金融云

    cn-shanghai-finance-1

  • 共享GPU調度支持算力分配的調度器于2022年03月01日上線,在此之后創建的集群將使用新版本調度器,但是在此之前已有集群的調度器不會自動升級到新版本,需要您手動進行操作。若您的集群創建時間早于2022年03月01日,請按照如下操作進行處理:

    1. 提交工單申請新版共享GPU調度內測。

    2. 卸載舊版共享GPU組件。

      如果已安裝舊版共享GPU組件(僅支持顯存共享,Chart版本≤1.2.0),請按照以下步驟進行處理。

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

      2. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇應用 > Helm

      3. Helm頁面,單擊ack-ai-installer右側操作列下方的刪除,然后在彈出的刪除應用對話框,單擊確定

    3. 安裝新版共享GPU組件。具體操作,請參見安裝共享GPU調度組件

步驟一:創建支持算力分配的節點池

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

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

  3. 節點池頁面右側,單擊創建節點池

    部分參數配置說明如下,關于配置項的詳細說明,請參見節點池配置

    配置項

    說明

    節點池名稱

    設置節點池名稱。本文配置為gpu-core

    期望節點數

    設置節點池初始節點數量。若您不需要創建節點,請填寫為0

    ECS標簽

    為ECS實例添加標簽。

    節點標簽

    為集群節點添加標簽。本文配置如下,關于節點標簽的更多信息,請參見ACK調度GPU使用的節點標簽說明

    • 開啟節點GPU顯存和算力隔離能力:單擊添加節點標簽,輸入第一個節點標簽的ack.node.gpu.schedulecore_mem

    • 在節點上使用Binpack算法為Pod選擇GPU卡:單擊添加節點標簽,輸入第二個節點標簽的ack.node.gpu.placementbinpack

    重要

    如果您需要將集群中已存在的GPU節點切換為算力隔離模式,請先將該節點從集群中移除,然后重新加入支持算力隔離的節點池。不支持直接使用kubectl label nodes <NODE_NAME> ack.node.gpu.schedule=core_mem命令將該GPU節點切換為算力隔離模式。

步驟二:查看節點池是否開啟算力分配功能

執行以下命令,查看節點池的節點是否開啟算力分配功能。

kubectl get nodes <NODE_NAME> -o yaml

預期輸出:

#省略其他字段。
status:
  #省略其他字段。
  allocatable:
    #節點共有400%的算力,4張GPU卡,每張卡提供100%算力。
    aliyun.com/gpu-core.percentage: "400"
    aliyun.com/gpu-count: "4"
    #節點共有60 GiB顯存,4張GPU卡,每張卡提供15 GiB顯存。
    aliyun.com/gpu-mem: "60"
  capacity:
    aliyun.com/gpu-core.percentage: "400"
    aliyun.com/gpu-count: "4"
    aliyun.com/gpu-mem: "60"

預期輸出表明,存在aliyun.com/gpu-core.percentage字段,即算力分配功能已開啟。

步驟三:使用算力分配功能

未使用算力分配功能前,一張GPU卡的總顯存為15 GiB,Pod可以100%使用該GPU卡的算力。本文以同時申請顯存和算力任務為例,申請2 GiB顯存、一張GPU卡的30%算力,介紹如何使用GPU顯存算力分配功能。

  1. 使用以下YAML內容,創建申請GPU顯存和算力的任務。

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: cuda-sample
    spec:
      parallelism: 1
      template:
        metadata:
          labels:
            app: cuda-sample
        spec:
          containers:
          - name: cuda-sample
            image:  registry.cn-beijing.aliyuncs.com/ai-samples/gpushare-sample:benchmark-tensorflow-2.2.3
            command:
            - bash
            - run.sh
            - --num_batches=500000000
            - --batch_size=8
            resources:
              limits:
                # 單位為GiB,該Pod總共申請了2 GiB顯存。
                aliyun.com/gpu-mem: 2
                #申請一張GPU卡的30%算力。
                aliyun.com/gpu-core.percentage: 30
            workingDir: /root
          restartPolicy: Never
  2. 執行以下命令,部署cuda-sample.yaml文件提交cuda-sample任務。

    kubectl apply -f /tmp/cuda-sample.yaml
    說明

    任務所使用的鏡像較大,拉取鏡像需要一定的時間,請耐心等待。

  3. 執行以下命令,查看cuda-sample任務的運行狀態。

    kubectl get po -l app=cuda-sample

    預期輸出:

    NAME                READY   STATUS    RESTARTS   AGE
    cuda-sample-m****   1/1     Running   0          15s

    預期輸出表明,STATUSRunning,即任務部署成功。

  4. 執行以下命令,查看顯存和算力的使用情況。

    kubectl exec -ti cuda-sample-m**** -- nvidia-smi

    預期輸出:

    Thu Dec 16 02:53:22 2021
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 450.102.04   Driver Version: 450.102.04   CUDA Version: 11.0     |
    |-------------------------------+----------------------+----------------------+
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
    |                               |                      |               MIG M. |
    |===============================+======================+======================|
    |   0  Tesla V100-SXM2...  On   | 00000000:00:08.0 Off |                    0 |
    | N/A   33C    P0    56W / 300W |    337MiB /  2154MiB |     30%      Default |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
    
    +-----------------------------------------------------------------------------+
    | Processes:                                                                  |
    |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
    |        ID   ID                                                   Usage      |
    |=============================================================================|
    +-----------------------------------------------------------------------------+

    預期輸出表明:

    • 顯存:未開啟算力分配功能前,Pod能夠使用的總顯存為該GPU卡的總顯存,本文為15 GiB(在節點上執行nvidia-smi命令即可查詢GPU卡的總顯存)。開啟算力分配功能后,Pod當前已使用337 MiB,能夠使用的總顯存為2154 MiB(約為2 GiB),說明顯存隔離生效。

    • 算力:未開啟算力分配功能前,Pod運行的任務能夠100%使用GPU卡(您可以將申請的算力設置為100進行驗證)。開啟算力分配功能后,Pod已使用GPU卡的30%算力,說明算力隔離生效。

    說明

    如果有n個任務,假設每個任務申請30%算力(n≤3,最多部署3個),n個任務運行在同一張GPU卡上,此時在每個Pod中執行nvidia-smi命令,可以看到算力為n*30%。nvidia-smi命令的查詢結果目前僅顯示以卡為單位的算力利用率,而不顯示以任務為單位的算力利用率。

  5. 使用以下命令,查看Pod日志。

    kubectl logs cuda-sample-m**** -f

    預取輸出:

    [CUDA Bandwidth Test] - Starting...
    Running on...
    
     Device 0: Tesla V100-SXM2-16GB
     Quick Mode
    
    time: 2021-12-16/02:50:59,count: 0,memSize: 32000000,succeed to copy data from host to gpu
    time: 2021-12-16/02:51:01,count: 1,memSize: 32000000,succeed to copy data from host to gpu
    time: 2021-12-16/02:51:02,count: 2,memSize: 32000000,succeed to copy data from host to gpu
    time: 2021-12-16/02:51:03,count: 3,memSize: 32000000,succeed to copy data from host to gpu

    由預期輸出得到,使用算力分配功能后,Pod日志刷新較慢,此時算力被限制在該GPU卡的30%左右。

  6. 可選:執行以下命令,刪除cuda-sample任務。

    驗證完畢后,您可以對任務進行刪除操作。

    kubectl delete job cuda-sample