gpu数值,gpu数字命名规则

  

  简介   

  

  当您在阿里云容器服务中使用GPU ECS主机构建技术集群进行人工智能训练时,经常需要知道每个豆荚使用的国家政治保卫局。参见国家政治保卫局的使用情况,比如每块显存使用情况、GPU利用率,GPU卡温度等监控信息,本文介绍如何快速在阿里云上构建基于普罗米修斯格拉法纳的国家政治保卫局。参见国家政治保卫局监控方案。   

  

  Prometheus   

  

  普罗米修斯是一个开源的服务监控系统和时间序列数据库。从2012 年开始编写代码,再到2015 年开源代码库上开源以来,已经吸引了9k关注,2016 年普罗米修斯成为继k8s后,第二名CNCF(云本地计算基金会)成员。2018年8月于基金会毕业。   

  

  作为新一代开源解决方案,很多理念与谷歌SRE运维之道不谋而合。   

  

     

  

  操作   

  

  前提:您已经通过阿里云容器服务创建了拥有GPU ECS的技术集群,具体步骤请参考:尝鲜阿里云容器服务Kubernetes 1.9,拥抱国家政治保卫局。参见国家政治保卫局新姿势。   

  

  登录容器服务控制台,选择【容器服务——Kubernetes】,点击【应用-部署-使用模板创建】:   

  

     

  

  选择您的国家政治保卫局。参见国家政治保卫局集群和命名空间,命名空间可以选择嗍系统,然后在下面的模板中填入部署普罗米修斯和GPU导出器对应的格式内容。   

  

  部署普罗米修斯   

  

  API版本: v1种类: configmapmetadata :名称: Prometheus-env数据:存储-保留: 360 360h存储-内存-区块: ' 1048576 '-API版本: rbac.authorization.k8s.io/v1beta1kind: clusterroletadata :名称3360 Prometheus规则:-API组: ' ','扩展','应用程序'资源:-节点如果部署在其他命名空间下,需要修改这里的命名空间配置-API版本:扩展/v1 beta 1种类:部署元数据:名称:普罗米修斯-部署规范:复制: 1选择器:匹配标签:应用程序:普罗米修斯模板:元数据3360名称:普罗米修斯标签:应用程序:普罗米修斯规范3360服务帐户3:普罗米修斯   

rometheus-env key: storage-retention - name: STORAGE_MEMORY_CHUNKS valueFrom: configMapKeyRef: name: prometheus-env key: storage-memory-chunks volumeMounts: - name: config-volume mountPath: /etc/prometheus - name: prometheus-data mountPath: /prometheus volumes: - name: config-volume configMap: name: prometheus-configmap - name: prometheus-data emptyDir: {}---apiVersion: v1kind: Servicemetadata: labels: name: prometheus-svc kubernetes.io/name: "Prometheus" name: prometheus-svcspec: type: LoadBalancer selector: app: prometheus ports: - name: prometheus protocol: TCP port: 9090 targetPort: 9090---apiVersion: v1kind: ConfigMapmetadata: name: prometheus-configmapdata: prometheus.yml: |- rule_files: - "/etc/prometheus-rules/*.rules" scrape_configs: - job_name: kubernetes-service-endpoints honor_labels: false kubernetes_sd_configs: - api_servers: - 'https://kubernetes.default.svc' in_cluster: true role: endpoint relabel_configs: - source_labels: <__meta_kubernetes_service_annotation_prometheus_io_scrape> action: keep regex: true - source_labels: <__meta_kubernetes_service_annotation_prometheus_io_scheme> action: replace target_label: __scheme__ regex: (https?) - source_labels: <__meta_kubernetes_service_annotation_prometheus_io_path> action: replace target_label: __metrics_path__ regex: (.+) - source_labels: <__address__, __meta_kubernetes_service_annotation_prometheus_io_port> action: replace target_label: __address__ regex: (.+)(?::\d+);(\d+) replacement: $1:$2 - action: labelmap regex: __meta_kubernetes_service_label_(.+) - source_labels: <__meta_kubernetes_service_namespace> action: replace target_label: kubernetes_namespace - source_labels: <__meta_kubernetes_service_name> action: replace target_label: kubernetes_name如果您选择kube-system以外的namespace, 需要修改yaml中ClusterRoleBinding绑定的serviceAccount内容:

  

apiVersion: rbac.authorization.k8s.io/v1beta1kind: ClusterRoleBindingmetadata: name: prometheusroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: prometheussubjects:- kind: ServiceAccount name: prometheus namespace: kube-system # 如果部署在其他namespace下, 需要修改这里的namespace配置部署Prometheus 的GPU 采集器

  

apiVersion: apps/v1kind: DaemonSetmetadata: name: node-gpu-exporterspec: selector: matchLabels: app: node-gpu-exporter template: metadata: labels: app: node-gpu-exporter spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: aliyun.accelerator/nvidia_count operator: Exists hostPID: true containers: - name: node-gpu-exporter image: registry.cn-hangzhou.aliyuncs.com/acs/gpu-prometheus-exporter:0.1-f48bc3c imagePullPolicy: Always env: - name: MY_NODE_NAME valueFrom: fieldRef: fieldPath: spec.nodeName - name: MY_POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: MY_NODE_IP valueFrom: fieldRef: fieldPath: status.hostIP - name: EXCLUDE_PODS value: $(MY_POD_NAME),nvidia-device-plugin-$(MY_NODE_NAME),nvidia-device-plugin-ctr - name: CADVISOR_URL value: http://$(MY_NODE_IP):10255 ports: - containerPort: 9445 hostPort: 9445 resources: requests: memory: 30Mi cpu: 100m limits: memory: 50Mi cpu: 200m---apiVersion: v1kind: Servicemetadata: annotations: prometheus.io/scrape: 'true' name: node-gpu-exporter labels: app: node-gpu-exporter k8s-app: node-gpu-exporterspec: type: ClusterIP clusterIP: None ports: - name: http-metrics port: 9445 protocol: TCP selector: app: node-gpu-exporter部署Grafana

  

apiVersion: extensions/v1beta1kind: Deploymentmetadata: name: monitoring-grafanaspec: replicas: 1 template: metadata: labels: task: monitoring k8s-app: grafana spec: containers: - name: grafana image: registry.cn-hangzhou.aliyuncs.com/acs/grafana:5.0.4-gpu-monitoring ports: - containerPort: 3000 protocol: TCP volumes: - name: grafana-storage emptyDir: {}---apiVersion: v1kind: Servicemetadata: name: monitoring-grafanaspec: ports: - port: 80 targetPort: 3000 type: LoadBalancer selector: k8s-app: grafana进入【应用-->服务】页面,选择对应集群及kube-system命名空间,点击monitoring-grafana对应的外部端点,浏览器自动跳转到Grafana的login页面,初始用户名及密码均为admin,你可以在登录成功后重置密码、添加用户等操作。在Dashboard中可以看到GPU应用监控和GPU节点监控信息。

  

节点GPU监控

  

  

Pod GPU监控

  

  

部署应用

  

如果您已经使用了Arena Arena - 打开KubeFlow的正确姿势) ,可以直接使用arena提交一个训练任务。

  

arena submit tf --name=style-transfer \ --gpus=1 \ --workers=1 \ --workerImage=registry.cn-hangzhou.aliyuncs.com/tensorflow-samples/neural-style:gpu \ --workingDir=/neural-style \ --ps=1 \ --psImage=registry.cn-hangzhou.aliyuncs.com/tensorflow-samples/style-transfer:ps \ "python neural_style.py --styles /neural-style/examples/1-style.jpg --iterations 1000000"NAME: style-transferLAST DEPLOYED: Thu Sep 20 14:34:55 2018NAMESPACE: defaultSTATUS: DEPLOYEDRESOURCES:==> v1alpha2/TFJobNAME AGEstyle-transfer-tfjob 0s提交任务成功后在监控页面里可以看到Pod的GPU相关指标, 能够看到我们通过Arena部署的Pod,以及pod里GPU 的资源消耗

  

  

节点维度也可以看到对应的GPU卡和节点的负载, 在GPU节点监控页面可以选择对应的节点和GPU卡

  

  

作者:萧元

相关文章