You need to enable JavaScript to run this app.
导航

发起 BytePS 分布式训练

最近更新时间2021.12.02 10:35:21

首次发布时间2021.09.23 11:57:28

BytePS 是一种自研的分布式训练通信框架,目前已经在GitHub上开源。主要特点如下:

  • 同时支持 TF、PyTorch 以及 MXNet 三个计算框架。
  • 高性能:对于通信密集型任务,性能显著超越同等条件下的 Horovod、PyTorch DDP。
  • 目前落地场景包括 BERT、GAN 等大规模训练。
基本流程
  1. 用户在【自定义训练】模块创建一个训练任务时选择实例配置为 BytePS,按需配置各种训练角色并提交任务表单进入任务创建环节。有如下几种训练角色:
    • server:管理参数的存储和更新。
    • worker:执行训练任务。
    • scheduler:负责 server 和 worker 之间的通信。
  2. 任务提交后,机器学习平台将为用户创建对应的实例并向所有实例注入相关的环境变量,通过环境变量用户代码得知集群的信息以及当前实例对应的训练角色,从而完成对应角色的本职任务直到训练结束。
    • 训练之前,平台将等待所有实例之间的网络通畅。
    • 训练过程中,任意实例失败(退出码非 0)则训练任务失败。
    • 所有实例训练完成(退出码为 0)则训练任务成功。
调用方式

平台为用户注入了有可能在训练代码或者入口命令需要用到的环境变量,通过 BytePS 官方提供的 bpslaunch 启动命令结合环境变量启动训练任务。
环境变量

  • DMLC_PS_ROOT_URI:scheduler0 的域名。
  • DMLC_PS_ROOT_PORT:scheduler 的端口。
  • DMLC_NUM_SERVER:server 实例的数量。
  • DMLC_NUM_WORKER:worker 实例的数量。
  • DMLC_ROLE:实例的角色类型。
  • DMLC_WORKER_ID:worker 编号。

如需使用【自定义训练】模块的通用环境变量详见通用环境变量列表

使用如下命令启动 BytePS 分布式训练任务:

bpslaunch python <代码文件的绝对路径>
示例代码

具体的示例代码详见 GitHub