GPU使用率监控

简介

Xiaomi Cloud-ML底层使用kubernetes+docker调度资源,GPU分配的粒度是,不存在GPU共享的情况。当前集群的服务器都是4卡机型,编号从0到3。GPU使用率每分钟抓取一次,推送到falcon上。

基本概念

Cloud-ML对用户的任务进行了封装,调度的pod以一定的规则命名,用户可以使用我们sdk提供的events功能查看任务Name项,该项展示的就是我们后端调度的虚拟单元的名称。具体规则如下(由于原先命名较短,服务端更新之前,仍将使用旧版的命名方式):

  1. # Train Job, 旧版本
  2. "{}-{}-{}-{}".format("tj", str(org_id)[-4:].lower(), job_name[-4:].lower(), create_time.strftime("%H%M%S"))
  3. # Train Job, 新版本
  4. "{}-{}-{}-{}".format("tj", str(org_id)[-5:].lower(), job_name[-16:].lower(), create_time.strftime("%m%d%H%M%S"))
  5. # Model Service,旧版本
  6. "{}-{}-{}-{}".format("ms", str(org_id)[-4:].lower(), model_name[-4:].lower(), create_time.strftime("%H%M%S"))
  7. # Model Service,新版本
  8. "{}-{}-{}-{}-{}".format("ms", str(org_id)[-5:].lower(), model_name[-16:].lower(), model_version, create_time.strftime("%m%d%H%M%S"))
  9. # Dev Env,旧版本
  10. "{}-{}-{}-{}".format("de", str(org_id)[-4:].lower(), dev_name[-4:].lower(), create_time.strftime("%H%M%S"))
  11. # Dev Env,新版本
  12. "{}-{}-{}-{}".format("de", str(org_id)[-5:].lower(), dev_name[-16:].lower(), create_time.strftime("%m%d%H%M%S"))

使用流程

用户可以在创建任务之后,使用上述命名规则拼接endpoint名称,或者使用events功能获取服务端创建的endpoint名(当前服务端仍是旧版命名方式): GPU使用率监控  - 图1

之后在falconendpoint项中搜索tj-518-ar10-083708-351wd GPU使用率监控  - 图2

监控的结果: GPU使用率监控  - 图3

原文: http://docs.api.xiaomi.com/cloud-ml/monitor/01_gpu_usage.html