雲原生AI的監控組件能夠協助您從不同的維度(比如:叢集、節點、訓練任務等)監控叢集的GPU資源使用方式,以及叢集的各命名空間下的資源配額使用。本文分別從叢集、節點、訓練任務和資源配額維度介紹監控大盤,以及介紹如何安裝和使用雲原生AI監控大盤。
前提條件
本文僅支援ACK Pro版叢集,且Kubernetes叢集版本大於等於1.18.8。
Arena組件版本大於等於0.7.0。具體操作,請參見:配置Arena用戶端。
安裝阿里雲Prometheus監控組件,具體操作,請參見arms-prometheus。
安裝AI營運控制台組件。具體操作,請參見安裝雲原生AI套件。
背景資訊
當使用Arena提交訓練任務後,您可能需要從叢集、節點、訓練任務或資源配額的維度去查看GPU的使用率、GPU顯存的使用方式。傳統的ACK叢集只能從節點的維度監控該節點的GPU使用方式(使用率、顯存使用方式、功率等)或者從Pod維度監控該Pod使用GPU的情況。
基於以上存在的問題,阿里雲Container Service研發了雲原生AI監控大盤,該大盤相比傳統的ACK叢集GPU監控大盤,有如下特點:
整個監控大盤由四個部分組成:叢集、節點、訓練任務、資源配額。
叢集監控大盤主要展示叢集總的GPU節點數、不健康GPU節點數、GPU平均利用率、各個狀態的訓練任務數等。
節點監控大盤主要展示每個節點的總GPU卡數、已指派GPU卡數、GPU的使用率、節點GPU顯存使用方式等。
訓練任務監控大盤主要展示每個訓練任務的狀態、已運行時間長度、申請GPU數、GPU的平均利用率、GPU顯存使用方式等。
資源配額監控大盤主要展示每種資源配額在某個Namespace下的分配和使用方式,比如:Max Quota、Min Quota和Used Quota等。
安裝雲原生AI監控組件
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
安裝監控組件。
如果您之前已經部署過雲原生AI套件:
在雲原生AI套件頁面,找到雲原生AI監控組件ack-arena-exporter,然後單擊右側操作列的部署。
如果您之前未部署過雲原生AI套件:
在雲原生AI套件頁面,單擊一鍵部署,然後在監控地區選中監控組件,單擊部署雲原生AI套件。
監控大盤介紹
進入雲原生AI營運控制台後,預設顯示叢集監控大盤頁面。單擊頁面左上方可以切換監控大盤。
Cluster:叢集監控大盤
Nodes:節點監控大盤
TrainingJobs:訓練任務監控大盤
Quota:資源配額監控大盤
叢集監控大盤
具體操作,請參見方式一:使用公網Ingress訪問AI營運控制台。
叢集監控大盤有以下可供您查看的指標:
GPU Summary Of Cluster:展示叢集中總的GPU節點數、已指派的GPU節點數、不健康的GPU節點數。
Total GPU Nodes:叢集中總的GPU節點數。
Unhealthy GPU Nodes:不健康的GPU節點數。
GPU Memory(Used/Total):叢集已使用GPU顯存與總的GPU顯存的百分比。
GPU Memory(Allocated/Total):叢集已指派GPU顯存與總的GPU顯存百分比。
GPU Utilization:叢集GPU的平均利用率。
GPUs(Allocated/Total):叢集已指派GPU卡的個數與總的GPU卡數的百分比。
Training Job Summary Of Cluster:叢集中各種狀態(Running、Pending、Succeeded、Failed)的訓練任務數。
節點監控大盤
在叢集監控大盤頁面,單擊右上方的Nodes,進入節點監控大盤。
節點監控大盤有以下可供您查看的指標:
GPU Node Details:以表格的形式展示叢集節點的相關資訊,包括:
節點名稱(Name)
節點在叢集中的IP(IP)
節點在叢集中的角色(Role)
節點的狀態(Status)
GPU模式:獨佔或共用(GPU Mode)
節點擁有GPU卡的個數(Total GPUs)
節點擁有總的GPU顯存(Total GPU Memory)
節點已指派GPU卡數(Allocated GPUs)
節點已指派GPU顯存(Allocated GPU Memory)
節點已使用GPU顯存(Used GPU Memory)
節點GPU平均使用率(GPU Utilization)
GPU Duty Cycle:每個節點的每個GPU的使用率。
GPU Memory Usage:每個節點的每個GPU的顯存使用量。
GPU Memory Usage Percentage:每個節點的每個GPU的顯存使用百分比。
Allocated GPUs Per Node:每個節點已指派的GPU卡數。
GPU Number Per Node:每個節點的總GPU卡數。
Total GPU Memory Per Node:每個節點的總GPU顯存。
您可以根據節點監控大盤左上方的gpu_node和GPU篩選項,對節點和GPU卡進行篩選,以便您查看到目標節點上的GPU使用方式。
訓練任務監控大盤
在節點監控大盤頁面,單擊右上方TrainingJobs,進入訓練任務的監控大盤。
訓練任務監控大盤有以下可供您查看的指標:
Training Jobs:通過表格的形式展示各個訓練任務的情況,包括:
訓練任務所在命名空間(Namespace)
訓練任務名稱(Job Name)
訓練任務類型(Job Type)
訓練任務狀態(Job Status)
訓練任務期間(Duration)
訓練工作要求GPU卡數(Request GPUs)
訓練工作要求的GPU顯存(Allocated GPU Memory)
訓練任務當前使用的GPU顯存(Used GPU Memory)
訓練任務的GPU平均利用率(GPU Utilization)
Job Instance Used GPU Memory:訓練任務中的各個執行個體的已使用GPU顯存。
Job Instance Used GPU Memory Percentage:訓練任務中各個執行個體使用GPU顯存的百分比。
Job Instance GPU Duty Cycle:訓練任務中各個執行個體的GPU利用率。
您可以根據訓練任務監控大盤左上方的job_namespace、job_type和job_name等篩選項,對訓練任務從不同維度進行篩選,以便您查看到目標訓練任務的具體情況。
資源配額監控大盤
在訓練任務監控大盤頁面,單擊右上方的Quota,進入資源配額監控大盤。
資源配額監控大盤有以下可供您查看的指標:
Quota(cpu)
Quota(memory)
Quota(nvidia.com/gpu)
Quota(aliyun.com/gpu-mem)
Quota(aliyun.com/gpu)
以上枚舉的每一個指標都以表格的形式展示資源配額的相關資訊,包括:
Elastic Quota Name:資源配額的名稱。
Namespace:資源所屬的Namespace。
Resource Name:資源類型的名稱。
Max Quota:您在某個Namespace下某種資源所使用的上限。
Min Quota:當整個叢集資源緊張時,您在某個Namespace下可以使用的保障資源。
Used Quota: 您在某個Namespace下,某種資源的已使用值。
使用雲原生AI監控大盤樣本
本文以使用Arena提交一個mpijob
任務,然後查看監控大盤的變化為例,說明如何使用雲原生AI監控大盤。
進入雲原生AI營運控制台,預設進入的是叢集監控大盤頁面。
當叢集沒有任何訓練任務時,叢集監控大盤如下。
由上圖可知,叢集總共有兩個GPU節點,總共有2張GPU卡。
執行以下命令,提交一個
mpijob
。arena submit mpijob \ --name=mpi-test \ --gpus=1 \ --workers=1 \ --working-dir=/perseus-demo/tensorflow-demo/ \ --image=registry.cn-beijing.aliyuncs.com/ai-samples/horovod:0.13.11-tf1.10.0-torch0.4.0-py3.5 \ 'mpirun python /benchmarks/scripts/tf_cnn_benchmarks/tf_cnn_benchmarks.py --model resnet101 --batch_size 64 --num_batches 5000 --variable_update horovod --train_dir=/training_logs --summary_verbosity=3 --save_summaries_steps=10'
再次查看叢集監控大盤。
由上圖可知,叢集的GPU的平均利用率、已指派GPU個數與總的GPU數的百分比等指標發生了變化。
執行以下命令,查看任務所在的節點。
arena list
預期輸出:
NAME STATUS TRAINER DURATION GPU(Requested) GPU(Allocated) NODE mpi-test RUNNING MPIJOB 8s 1 1 192.168.1.151
在叢集監控大盤頁面,單擊右上方的Nodes,進入節點監控大盤。由步驟4中得出任務所在的節點IP為
192.168.1.151
,在節點監控大盤上,您可以看到該節點上GPU的相關指標發生的變化如下。在節點監控大盤頁面,單擊右上方TrainingJobs,進入訓練任務監控大盤,您可以查看訓練任務的相關資訊(任務名、任務狀態等)。