在阿里云容器服务中使用GPU资源运行进行AI模型训练和预测时,经常需要了解应用负载的GPU的使用情况,比如每块显存使用情况、GPU利用率,GPU卡温度等监控信息,通过内置ARMS可以从应用的维度去观测GPU的使用情况,了解资源水位,以及设定相应的报警,避免因为GPU资源的约束引发业务风险。
另外相比自建的Prometheus方案, ARMS的全面托管的 Prometheus 服务可以提供以下特性,更好的为您的业务应用保驾护航
- 高可用、可扩展的 Prometheus Server
- 与阿里云容器服务深度集成
- 监控数据无限存储能力
前提
使用步骤
- 登录ARMS控制台, 选择Kubernetes所在的集群
- 在ARMS控制台中prometheus界面中,点击集群列表中需要监控集群的安装按钮。此过程需要2分钟左右,请点击确认。
3. 在该集群的已安装插件中可以看到 GPU Node
和GPU APP
,分别从节点维度和应用维度监控GPU资源
4. 我们可以运行一个TensorFlow的测试程序验证
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: test
labels:
app: test
spec:
replicas: 1
serviceName: "test"
podManagementPolicy: "Parallel"
selector: # define how the deployment finds the pods it manages
matchLabels:
app: test
template: # define the pods specifications
metadata:
labels:
app: test
spec:
hostNetwork: true
hostPID: true
containers:
- name: test
image: registry.cn-shanghai.aliyuncs.com/tensorflow-samples/tensorflow-gpu-mem:10.0-runtime-centos7
command:
- python3
- /app/main.py
resources:
limits:
nvidia.com/gpu: 1
部署成功后,查看应用的状态,可以知道应用的名称是test-0
# kubectl get po
NAME READY STATUS RESTARTS AGE
test-0 1/1 Running 0 63m
5. 进入GPU Node
从节点维度监控
5.1 可以看到总的监控指标分为三个部分,最上面的部分是GPU的平均温度,总能耗和每个节点的显存使用。可以看到当GPU应用部署之后,节点的GPU
5.2 而第二部分是GPU的分配状况,代表集群中的GPU中有多少分配给了工作负载;而右侧是每个节点的GPU数量。从本例子中看到部署Pod前GPU分配数目为0,而右侧的值一直是固定的值。
5.3 第三部分则是以GPU卡的维度展示温度,能耗和使用率
6. 如果想从应用的角度监控,则可以进入GPU App
页面
6.1 第一行的数据是应用test-0
使用的显存百分比和显存量
6.2 第二行和第三行的数据是应用test-0
的能耗,使用率和温度
总结
通过使用托管Prometheus可以以Kubernetes原生的方式对于GPU资源进行监控, 可以帮助你更好的了解GPU基础架构的性能,以及它和业务性能的关系。我们后续还会支持针对GPU共享的监控。