1 介绍
- 随着模型规模的增大,并行处理已成为在有限硬件上训练大型模型和提高训练速度的重要策略。
- Hugging Face 创建了Accelerate库,帮助用户在任何类型的分布式环境中轻松训练Transformers模型,无论是单机多GPU还是跨多机的多GPU
2 创建Accelerator对象
from accelerate import Accelerator
accelerator = Accelerator()
-
Accelerator
类初始化分布式训练所需的一切,并且会根据代码启动的方式自动检测你的训练环境(单机单GPU、单机多GPU、多机多GPU或TPU等) - 默认情况下,
Accelerator
类会自动将对象放置到合适的设备上- 可以通过在初始化
Accelerator
时传递device_placement=False
来关闭自动设备放置 - 如果想明确地将对象放置到某个设备上,确保使用
accelerator.device
- 可以通过在初始化
3 训练对象传递给prepare方法
train_dataloader, eval_dataloader, model, optimizer = accelerator.prepare(
train_dataloader,
eval_dataloader,
model,
optimizer
)
4 反向传播
唯一不同的是把loss.backward()替换成Accelerate的backward
5 总结
绿色的是加上的,红色的是去掉的
6 训练
运行以下命令创建并保存配置文件