搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
笔触狂放9
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
数据分析——十大数据分析模型
2
Accclerate使用教程【提供简单的API使得脚本可以按混合精度运行,同时可在任何分布式设置上运行,相同的代码可以在本地电脑上进行debug也可以在训练环境执行】_accelerate日志
3
Terraform基础(四)-Terraform配置文件基础语法&格式_terraform data
4
openwrt无线速率的修改_强制发射速率 ( 0为自动,建议值 )
5
中国电子学会2021年12月真题C语言软件编程等级考试一级(含解析答案)
6
python的基本数据类型和变量 及 python的运算符 python的缩进_python float和nonetype运算
7
微擎系统的php环境要求说明书,微擎安装教程及云服务器环境快速搭建教程
8
SVM的原理和代码实现_svm算法代码
9
为什么MySQL不能正常关闭?解决办法来了_linux mysql 关闭不了
10
宝塔面板如何设置301重定向,为什么网站要设置重定向?_访问一个不存在的文件baota重定向到存在的文件
当前位置:
article
> 正文
Hugging Face开源库accelerate详解_accelerate库函数
作者:笔触狂放9 | 2024-03-01 17:18:48
赞
踩
accelerate库函数
官网:https://huggingface.co/docs/accelerate/package_reference/accelerator
Accelerate使用步骤
初始化accelerate对象accelerator = Accelerator()
调用prepare方法对model、dataloader、optimizer、lr_schedluer进行预处理
删除掉代码中关于gpu的操作,比如.cuda()、.to(device)等,让accelerate自行判断硬件设备的分配
将loss.backbard()替换为accelerate.backward(loss)
当使用超过1片GPU进行分布式训练时,在主进程中使用gather方法收集其他几个进程的数据,然后在计算准确率等指标
Accelerator对象初始化参数
device_placement (bool, optional, defaults to True) — 是否让accelerate来确定tensor应该放在哪个device
split_batches (bool, optional, defaults to False) — 分布式训练时是否对dataloader产生的batch进行split,如果True,那么每个进程使用的batch size = batch size / GPU数量,如果是False,那么每个进程使用就是batch size,总的batch size = batch size * GPU数量
mixed_precision (str, optional) — 是否使用混合精度训练
gradient_accumulation_steps (int, optional, default to 1) — 梯度累加的步数,也可以使用GradientAccumulationPlugin插件进行详细配置
cpu (bool, optional) — 是否强制使用CPU执行
deepspeed_plugin (DeepSpeedPlugin, optional) — 使用此参数调整与DeepSpeed相关的参数,也可以使用accelerate config直接配置
fsdp_plugin (FullyShardedDataParallelPlugin, optional) — 使用此参数调整FSDP(Fully Sharded Data Parallel)相关参数,也可以使用accelerate config直接配置
megatron_lm_plugin (MegatronLMPlugin, optional) — 使用此参数调整与MegatronLM相关的参数,可以使用accelerate config直接配置
step_scheduler_with_optimizer (bool, *optional, defaults to True) – lr_scheduler是否和optimizer同步更新
gradient_accumulation_plugin (GradientAccumulationPlugin, optional) — 梯度累积插件
Accelerate常用高阶用法
accelerator.print()
当使用多片GPU训练时,打印每个进程的信息,替换python的print函数,这样在每个server上只打印一次,其实就是先使用is_local_main_process判断的print。
accelerator.is_local_main_process
可以当做装饰器使用,在一个具有多片GPU的server上只执行一次,local表示每台机器。与is_local_main_process对应的是is_main_process,is_local_main_process每个server上的主进程,is_main_process是所有server的主进程。
wait_for_everyone()
同步控制,确保在后续操作之前所有前提操作已完成
accelerator.save_model() / load_state_dict /
load_checkpoint_in_model
模型保存,自动去除掉由于分布式训练在模型上做的包装(调用unwrap_model),保存state_dict,并且可以对大模型文件进行分块存储。并加载保存的模型
Accelerate与Transformers库搭配使用进行模型保存
使用accelerator做梯度裁剪:
梯度累加gradient accumulation
尤其对于超大规模的模型,模型参数本来就已经很大了,如果再用很大的batch size进行训练,硬件资源吃不消,但是如果用很小的batch size训练的话模型稳定性很差,所以梯度累加gradient accumulation是一个这种的解决方案,其实就是连续执行多次forward前向过程,在多次执行期间不进行反向传播,每次都是很小的batch size,多次就累积成了比较大的batch size,然后在累积的结果上做反向传播。Accelerate在梯度累加期间暂停在不同GPU之间的梯度同步,进一步减少了通信数据量。
GradientAccumulationPlugin提供了更灵活梯度累加操作,除了能指定累加的步数,还能指定在累计过程中是否更新lr_scheduler调节器。
autocast混合精度训练
对处于with上下文管理中的模块使用混合精度训练
gather、gather_for_metrics
分布式训练时,在不同进程之间回收结果数据
Prepare
为分布式训练和混合精度做准备,然后以相同的顺序返回它们。
reduce:跨进程做tensor的reduce操作
save_state / load_state:保存、加载模型的状态数据
unscale_gradients:混合训练过程中不对梯度进行缩放
unwrap_model
去掉模型上由prepare加上的用于做分布式训练的包装层,在保存模型的时候比较有用
4、使用accelerate执行分布式训练
执行accelerate config根据提问和实际硬件情况设置配置文件
执行accelerate test --config_file path_to_config.yaml验证环境配置是否正常
执行进行命令进行分布式训练,accelerate launch --config_file path_to_config.yaml path_to_script.py --args_for_the_script
5、使用Accelerate在低资源环境下加载大的模型
参考:https://huggingface.co/docs/accelerate/usage_guides/big_modeling
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/笔触狂放9/article/detail/175614
推荐阅读
article
git
之更换
仓库
地址
_
git
修改
仓库
地址
...
vim config //
修改
config配置文件,快速找到remote "origin"下面的url并替换即可实现快...
赞
踩
article
【Web开发】——
tomcat
安装和介绍_
tomcat
webapps
目录
可以
解析什么
文件格式
...
介绍了http的服务器
tomcat
,手把手教你从安装到发布一个网页.介绍了如果启动服务器,将一个html页面部署到服务器...
赞
踩
article
安装
wget
、
wget
命令_
wget
安装
...
今天给服务器
安装
新LNMP环境时,
wget
时提示 -bash:
wget
command not found,很明显没有...
赞
踩
article
服务器
权限
:
Error
: EACCES: permission denied, open‘/Card...
我想在
服务器
上传一个文件
uniquC
.csv,但是
服务器
说我没有
权限
。1. 查看目前是否存在对文件夹的
权限
。这也意味着r...
赞
踩
article
emqx
配置
wss
_
wss
连接
emqx
...
emqx
配置
wss
_
wss
连接
emqx
wss
连接
emqx
1、进入
emqx
的配置文件 cd...
赞
踩
article
无法解析
服务器
的名称或地址/Wsl/
0x80072eff
/
win10
WSL2
问题解决Wsl 0x8...
win10
WSL2
问题解决WslRegisterDistribution failed with error: 0x8...
赞
踩
article
[
JavaWeb
玩耍日记]
Mybatis
快速
入门
与
增删
改查
...
实体类的属性
与
表的列名冲突不一样时,mybatis不能自动封装数据,导致查询结果某列为null 比如mysql表的列名为...
赞
踩
article
百度无人驾驶
Apollo
的
dreamview
的
demo
运行_
baidu
dreamview
er...
bash docker/scripts/dev_start.sh -C # -C表示从docker中国的镜像服务器下载,...
赞
踩
article
张量
分解和应用(1)
_
tamara
g
.
kolda
...
注: 此文章为对Tamara G.Kolda和Brett W.Bader的
[详细]
-->
赞
踩
article
torch
点
乘
-向量
乘
法...
函数来计算两个一维张量的
点
乘
(内积)。
点
乘
操作会将两个一维张量按元素相
乘
,并返回一个标量(0维张量)作为结果。
点
乘
操作要...
赞
踩
article
ESP32
学习笔记(47)——
加密
算法
AES
/MD5/SHA_
esp32
aes
加密
...
一、简介1.1 SSLSSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和...
赞
踩
article
解决
requests
.
exceptions
.ProxyError_
requests
.exceptio...
Tr
a
ceb
a
ck (most recent c
a
ll l
a
st): File "gevent_c
a
ini
a
o_tr
a
c...
赞
踩
article
python
复制出现
错误
_
Python
中
的
错误
和
异常
...
前言
错误
是程序
中
的问题,由于这些问题而导致程序停止执行。另一方面,当某些内部事件发生时,会引发
异常
,从而改变程序的正常流...
赞
踩
article
多维
张量
_
四维
张量
...
参照网页:
张量
(tensor)是什么? 多维
张量
的几何理解 TensorFlow:使用tf.reshape函数重...
赞
踩
article
【
go
l
ang
】 ENT框架 排序问题
Order
() 与
Page
(
l
.ctx,
in
.
Page
,...
【
go
l
ang
】 ENT框架 排序问题
Order
() 与
Page
(
l
.ctx,
in
.
Page
,
in
.
Page
Si...
赞
踩
article
MQTT
异步使用_
mqttasync
...
Mqtt C中分为同步访问和异步访问模式同步访问的时候,请求会阻塞到访问处,知道有结果返回;异步访问的时候,会将请求委托...
赞
踩
article
ffmpeg
批量
m4a
转
mp3
_
ffmpeg
转换多
文件
mp3
代码...
首先感慨一下,
ffmpeg
是一个非常强大的开源音视频处理软件。官网:http://
ffmpeg
.org/我是在windo...
赞
踩
article
FFmpeg
安卓开发2-
FFMpeg
常用命令
_
ffmpeg
hqdn3d
...
介绍
ffmpeg
处理视频常用的命令_
ffmpeg
hqdn3d
ffmpeg
hqdn3d
...
赞
踩
article
tomcat
的
webapps
和
ROOT
目录区别_
tomcat
webapps
...
访问 http://localhost 结果如下图,如果你项目在服务器并且服务器有域名,则就可以直接通过域名访问项目(如...
赞
踩
article
【
TabularData
】DNN和
表格
数据分析
建模
综述_
tabular
data
...
论文年份:2021,论文被引:8(2022/04/30)_
tabular
data
tabular
data
...
赞
踩
相关标签
git
tomcat
前端
servlet
linux
服务器
运维
centos
WSL
mybatis
java
开发语言
dreamview
apollo
无人驾驶
线性代数
矩阵
python
pytorch
深度学习
aes
ESP32
md5
sha
mbedtls