Accelerate使用教程
安装Accelerate库
在终端执行以下命令安装最新版Accelerate:
`pip install accelerate`
如需源码安装,可从GitHub克隆仓库后执行:
`git clone https://github.com/huggingface/accelerate.git && cd accelerate && pip install .`
初始化配置
通过配置向导生成硬件与分布式策略文件:
在终端运行 `accelerate config`,根据提示依次选择:
- 硬件类型单GPU/多GPU/CPU/TPU;
- 分布式策略如数据并行、模型并行;
- 混合精度训练FP16/FP8,可选;
- 保存路径默认生成 `accelerate_config.yaml`。
代码适配步骤
1. 导入Accelerator
在训练脚本添加:
`from accelerate import Accelerator`
初始化加速器:
`accelerator = Accelerator()`
2. 数据加载适配
使用 `accelerator.prepare` 处理DataLoader,自动适配分布式环境下的样本分配:
```python
from torch.utils.data import DataLoader
train_loader = DataLoader(dataset, batch_size=32)
train_loader = accelerator.prepare(train_loader)
```
3. 模型与优化器适配
将模型、优化器传入 `accelerator.prepare`,自动处理设备分配与分布式包装:
```python
model = MyModel()
optimizer = torch.optim.Adam(model.parameters())
model, optimizer = accelerator.prepare(model, optimizer)
```
4. 训练循环调整
- 前向传播:需手动指定设备,Accelerator自动处理输入数据转移;
- 反向传播:用 `accelerator.backward(loss)` 替代 `loss.backward()`,自动同步梯度;
- 优化器更新:正常执行 `optimizer.step()`,Accelerator处理学习率调度。
示例训练循环:
```python
for epoch in range(epochs):
model.train()
for batch in train_loader:
inputs, labels = batch
outputs = model(inputs)
loss = criterion(outputs, labels)
accelerator.backward(loss)
optimizer.step()
optimizer.zero_grad()
```
5. 模型保存
使用 `accelerator.save` 替代 `torch.save`,避免分布式环境下重复保存:
`accelerator.save(model.state_dict(), \"model.pth\")`
启动训练
通过 `accelerate launch` 命令启动脚本,自动读取配置文件:
`accelerate launch --config_file accelerate_config.yaml train.py`
若需临时调整参数如GPU数量,可直接指定:
`accelerate launch --num_processes=2 train.py`
多环境兼容
- 单GPU:自动适配设备,需配置;
- 多GPU:支持DataParallel或DistributedDataParallel;
- CPU/TPU:通过配置向导选择对应硬件类型,Accelerator自动切换后端。
训练过程中,可通过 `accelerator.is_main_process` 判断主进程,用于日志打印或结果保存。