cube-studio/job-template/job/tf_distributed_train/README.md
2022-02-26 22:36:02 +08:00

2.4 KiB
Raw Blame History

tensorflow分布式模型训练任务配置

{
    "num_workers": <int>,
    "node_affin": "<str>",
    "pod_affin": "<str>",
    "timeout": "<str>",
    "trainer": "<str>",
    "resources": {
        "limits" {
            "cpu": "<str>",
            "memory": "<str>"
        }
    },
    "job_detail": {
        /*
        取决于trainer的配置runner和plain有不同的配置方式具体配置请参看对应的文档。
        */
    }
}
  • num_workers!!#ff0000 非必填!!分布式训练的节点数默认为1即单机
  • node_affin:节点选择偏好,有如下几种取值:
    • only_gpu只使用GPU机器如果没有可用的则任务进入排队或调度失败
    • only_cpu只使用CPU机器如果没有可用的则任务进入排队或调度失败
  • pod_affinworker分布偏好有如下几种取值
    • spread尽量分散开到不同物理机
    • concent尽量聚集到相同物理机上
  • timeout!!#ff0000 非必填!!,任务超时时间,运行超过这个时间后认为任务失败。格式为“数字+单位”,单位支持毫秒(ms),秒(s)、分(m)、小时(h)、天(d)、星期(w)。例如"100d"表示100天。默认“365d”
  • trainer:训练模式,有如下两种取值:
    • runnerrunner封装方式内部会把所有的分布式细节都封装起来用户不需要关心模型代码的分布式改造只需要定义模型结构和数据解析逻辑。关于runner封装的代码改造说明见runner封装训练代码编写规范(tensorflow)建议都使用runner
    • plain直接调用用户模型脚本如果要用分布式需要用户自己做分布式改造不过这种方式对用户的灵活性更大一些。不一定使用keras api。
  • resources!!#ff0000 非必填!!每个worker的资源大小支持的配置选项有
    • cpucpu核数
    • memory:内存大小
    • nvidia.com/gpugpu个数。大于1时表示单机多卡。
      • 当node_affin为only_cpu时默认配置为
      {
          "limits": {
              "cpu": "16", 
              "memory": "16G"
          }
      }
      
      • 当node_affin为only_gpu时默认配置为
      {
          "limits": {
              "cpu": "16", 
              "memory": "16G",
              "nvidia.com/gpu": 1,
          }
      }