赞
踩
一般单GPU训练整体流程大概为遍历一下batch,然后将img传给模型。之后,将groungtruth计算一下损失,进而,更新一下梯度,反向传播,
将梯度值为零;预测的话只需要将模型打印一下结果,记录一下结果即可;
首先导入库from accelerate import Accelerator
首先就是不需要将模型和数据,放到哪个gpu上的操作
细节:
1.不需要将数据和模型放到device的操作;
2.关于反向传播,使用args.accelerator.backward(loss)来替代;
3.关于显示进度条的时候tqdm,我们仅在主进程下显示;
for batch in tqdm(dataloader,disable=not args.accelerator.is_main_process)
–第三点的解释:两个gpu构成的进度条一起交火显示就会很奇怪;因此仅显示主进程最优
关于预测模块
除了上述修改一致意外
1.需要写入多GPU的汇总结果 使用gather_for_metrics(prediction)
需要对Accelerator进行实例化;
需要实例化对象调用prepare函数准备()需要传入相关数据
batchsize对应的是单gpu的batchsize
假如单gpu训练256,因此多gpu的batchsize应设置为128 与原先对齐;
与此同时,单机多卡不使用accelerate也是并行计算,假如accelerate只是提高了计算机进程速度;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。