分布式训练TorchDistributor

本文描述如何执行分布式训练PyTorch毫升模型使用TorchDistributor

TorchDistributor PySpark开源模块,帮助用户做分布式训练PyTorch火花集群,这允许您启动PyTorch培训工作引发的工作。底层,它初始化环境和员工之间的沟通渠道,充分利用了CLI命令torch.distributed.run工作者节点运行分布式训练。

TorchDistributor API支持方法如下表所示。

方法和签名

描述

init(自我,num_processes,local_mode,use_gpu)

TorchDistributor创建一个实例。

运行(自我,主要的,* args)

通过调用运行分布式训练主要(* * kwargs)如果主要是功能和运行CLI命令torchrun主要* args如果主要是文件路径。

需求

  • 火花3.4

  • 砖运行时13.0毫升以上

开发工作流程为笔记本电脑

如果模型创建和训练过程完全从你的本地机器或笔记本砖的笔记本,你只需要准备你的代码进行少量更改为分布式训练。

  1. 准备单独的节点代码:准备和测试单一节点代码PyTorch, PyTorch闪电,或其他框架基于PyTorch / PyTorch闪电,HuggingFace教练API。

  2. 准备代码标准分布式训练:你需要单流程培训转化成分布式训练。这种分布式代码都包含在一个训练函数,您可以使用TorchDistributor

  3. 移动进口在训练函数:添加必要的进口,如进口火炬在培训的功能。这样做可以让你避免常见的酸洗错误。此外,device_id模型和数据的联系是由:

    device_id=int(操作系统环境(“LOCAL_RANK”])
  4. 启动分布式训练:实例化TorchDistributor所需的参数和调用.run (* args)启动培训。

以下是培训代码示例:

pyspark.ml.torch.distributor进口TorchDistributordef火车(learning_rate,use_gpu):进口火炬进口torch.distributed作为经销进口torch.nn.parallel.DistributedDataParallel作为DDPtorch.utils.data进口DistributedSampler,DataLoader后端=“nccl”如果use_gpu其他的“gloo”经销init_process_group(后端)设备=int(操作系统环境(“LOCAL_RANK”])如果use_gpu其他的“cpu”模型=DDP(createModel(),* *kwargs)取样器=DistributedSampler(数据集)加载程序=DataLoader(数据集,取样器=取样器)输出=火车(模型,加载程序,learning_rate)经销清理()返回输出经销商=TorchDistributor(num_processes=2,local_mode=,use_gpu=真正的)经销商运行(火车,1 e - 3,真正的)

从外部存储库迁移训练

如果你有一个现有的分布式训练程序存储在外部存储库中,您可以很容易地迁移到砖做的以下几点:

  1. 导入库:导入外部存储库是一个砖回购

  2. 创建一个新的笔记本初始化一个新的库中的数据砖的笔记本。

  3. 启动分布式训练笔记本电池,电话TorchDistributor如下:

pyspark.ml.torch.distributor进口TorchDistributortrain_file=“/道路/ / train.py”arg游戏=(“——learning_rate = 0.001”,”——batch_size = 16 "]经销商=TorchDistributor(num_processes=2,local_mode=,use_gpu=真正的)经销商运行(train_file,*arg游戏)

故障排除

笔记本工作流的常见的错误是,对象不能被发现或腌当运行分布式训练。这可能发生在图书馆导入语句不分发给其他执行者。

为了避免这个问题,包括所有导入语句(例如,进口火炬)这两个顶部的训练函数,称为TorchDistributor (…) .run (< func >)在任何其他用户定义的函数称为训练方法。

例如笔记本电脑

以下笔记本例子演示如何执行PyTorch分布式训练。

端到端分布式训练砖笔记本

在新标签页打开笔记本

分布式微调拥抱脸模型笔记本

在新标签页打开笔记本

分布式训练PyTorch文件笔记本

在新标签页打开笔记本

分布式训练使用PyTorch闪电笔记本

在新标签页打开笔记本

分布式数据加载使用Petastorm笔记本

在新标签页打开笔记本