当前位置:   article > 正文

深度学习使用Accelerate库

深度学习使用Accelerate库

Accelerate库

1.使用accelerate修改gpu代码实现多gpu推理过程

1.1关于单GPU训练的函数

一般单GPU训练整体流程大概为遍历一下batch,然后将img传给模型。之后,将groungtruth计算一下损失,进而,更新一下梯度,反向传播

12. 预测的话

将梯度值为零;预测的话只需要将模型打印一下结果,记录一下结果即可;

2. 引入多GPU训练

首先导入库from accelerate import Accelerator

2.1 修改训练函数

首先就是不需要将模型和数据,放到哪个gpu上的操作

细节:
1.不需要将数据和模型放到device的操作;
2.关于反向传播,使用args.accelerator.backward(loss)来替代;
3.关于显示进度条的时候tqdm,我们仅在主进程下显示;
for batch in tqdm(dataloader,disable=not args.accelerator.is_main_process)
–第三点的解释:两个gpu构成的进度条一起交火显示就会很奇怪;因此仅显示主进程最优

2.2 修改预测函数

关于预测模块

除了上述修改一致意外
1.需要写入多GPU的汇总结果 使用gather_for_metrics(prediction)
  • 1
  • 2

1.6其他改动

需要对Accelerator进行实例化;

需要实例化对象调用prepare函数准备()需要传入相关数据

1.7关于batchsize的修改

batchsize对应的是单gpu的batchsize

假如单gpu训练256,因此多gpu的batchsize应设置为128 与原先对齐;

与此同时,单机多卡不使用accelerate也是并行计算,假如accelerate只是提高了计算机进程速度;

2.accelerate参数与混合精度训练

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/482732
推荐阅读
相关标签
  

闽ICP备14008679号