Open-Llama
Open-Llama copied to clipboard
关于训练开销
请问你这边在finetune llama的时候,各个参数如7B,13B,30B各个节点所用资源的数量,有统计过吗? 比方单卡时gpu显存,cpu内存占用?八卡时gpu显存,cpu内存占用?
我现在发现全参数finetune的时候cpu内存占用特别厉害,不知道你这边有没有什么特别的优化没?
目前用8卡3090 instruction tuning,在256G上内存会直接爆掉。 accelerate launch --config_file configs/default_config.yaml instruction_tuning.py
这个可以限制gpu数量吗?
内存和cpu占用我倒是没特别研究过,我明天试试
想问下这是因为7B模型比较小,所以没有使用TP和PP吗?有试过更大的模型吗?
想问下这是因为7B模型比较小,所以没有使用TP和PP吗?有试过更大的模型吗?
我测试设备是64cpu, 1600G memory, 8xA100-80G。 7B模型大约使用了33core,450G内存。 33B的模型,使用deepspeed stage3+offload+activation checkpoint在单机也可以训练,大约使用1.2T内存。 65B的我尝试会出现内存不足,我研究一下怎么优化。
请问这些数据是训练的吗?如果全量finetune的时候,是不是也是要差不多? 如果采用lora finetune的话,相应的数据有吗?
请问这些数据是训练的吗?如果全量finetune的时候,是不是也是要差不多? 如果采用lora finetune的话,相应的数据有吗?
预训练和全量finetune应该是一样的,lora暂未测试过。
batchsize 对于资源需求有比较大影响吗?比方b=1的时候和b=2的时候,相应的资源是线性增长的吗?
会有影响,但是不是线性的,尤其batch size比较小的时候,很多空间都存模型优化器那些参数了,去掉那些差不多是线性的。不同大小模型的结果我再测试完整补充到readme里
leiwen83 @.***> 于2023年5月1日周一 11:18写道:
batchsize 对于资源需求有比较大影响吗?比方b=1的时候和b=2的时候,相应的资源是线性增长的吗?
— Reply to this email directly, view it on GitHub https://github.com/s-JoL/Open-Llama/issues/22#issuecomment-1529303489, or unsubscribe https://github.com/notifications/unsubscribe-auth/AEBJYUDXV7M4WVSYOQB3DWTXD4TRNANCNFSM6AAAAAAXL7UAUM . You are receiving this because you commented.Message ID: @.***>
想问下这是因为7B模型比较小,所以没有使用TP和PP吗?有试过更大的模型吗?
我测试设备是64cpu, 1600G memory, 8xA100-80G。 7B模型大约使用了33core,450G内存。 33B的模型,使用deepspeed stage3+offload+activation checkpoint在单机也可以训练,大约使用1.2T内存。 65B的我尝试会出现内存不足,我研究一下怎么优化。
感谢,那看来单个DGX的上限在30B。还有个问题想请教下,你的20个节点之间网络通信速度怎么样,能满足ZeRO的需求吗?以及如果用流水线并行会不会降低通信的损失?
想问下这是因为7B模型比较小,所以没有使用TP和PP吗?有试过更大的模型吗?
我测试设备是64cpu, 1600G memory, 8xA100-80G。 7B模型大约使用了33core,450G内存。 33B的模型,使用deepspeed stage3+offload+activation checkpoint在单机也可以训练,大约使用1.2T内存。 65B的我尝试会出现内存不足,我研究一下怎么优化。
感谢,那看来单个DGX的上限在30B。还有个问题想请教下,你的20个节点之间网络通信速度怎么样,能满足ZeRO的需求吗?以及如果用流水线并行会不会降低通信的损失?
目前20节点用stage1训练过7B模型,和使用单节点是速度基本一致,没有因为网络通信下降。单节点测试过33B模型,使用stage3+offload+ckpt速度能达到630 token/s,比llama原文给出的360 token/s还快不少,需要再测试一下增多到20节点时速度是否还差不多。你说的流水线并行我不知道是指什么,因为这里没用到流水线并行。
想问下这是因为7B模型比较小,所以没有使用TP和PP吗?有试过更大的模型吗?
我测试设备是64cpu, 1600G memory, 8xA100-80G。 7B模型大约使用了33core,450G内存。 33B的模型,使用deepspeed stage3+offload+activation checkpoint在单机也可以训练,大约使用1.2T内存。 65B的我尝试会出现内存不足,我研究一下怎么优化。
感谢,那看来单个DGX的上限在30B。还有个问题想请教下,你的20个节点之间网络通信速度怎么样,能满足ZeRO的需求吗?以及如果用流水线并行会不会降低通信的损失?
目前20节点用stage1训练过7B模型,和使用单节点是速度基本一致,没有因为网络通信下降。单节点测试过33B模型,使用stage3+offload+ckpt速度能达到630 token/s,比llama原文给出的360 token/s还快不少,需要再测试一下增多到20节点时速度是否还差不多。你说的流水线并行我不知道是指什么,因为这里没用到流水线并行。
感谢感谢,流水线并行是看原llama论文里说用了和《Reducing Activation Recomputation in Large Transformer Models》一样的方法,在想这里节点间的通信如果存在限制的话,会不会用流水线并行更好。看起来ZeRO的效果非常好,网络通信没成为瓶颈。
目前多机并行的时候,deepspeed用的管理器是pdsh还是用mpi?有遇到因为网络问题导致的不稳定问题吗?
应该是mpi,目前没遇到不稳定的
想问下这是因为7B模型比较小,所以没有使用TP和PP吗?有试过更大的模型吗?
我测试设备是64cpu, 1600G memory, 8xA100-80G。 7B模型大约使用了33core,450G内存。 33B的模型,使用deepspeed stage3+offload+activation checkpoint在单机也可以训练,大约使用1.2T内存。 65B的我尝试会出现内存不足,我研究一下怎么优化。
感谢,那看来单个DGX的上限在30B。还有个问题想请教下,你的20个节点之间网络通信速度怎么样,能满足ZeRO的需求吗?以及如果用流水线并行会不会降低通信的损失?
目前20节点用stage1训练过7B模型,和使用单节点是速度基本一致,没有因为网络通信下降。单节点测试过33B模型,使用stage3+offload+ckpt速度能达到630 token/s,比llama原文给出的360 token/s还快不少,需要再测试一下增多到20节点时速度是否还差不多。你说的流水线并行我不知道是指什么,因为这里没用到流水线并行。
感谢感谢,流水线并行是看原llama论文里说用了和《Reducing Activation Recomputation in Large Transformer Models》一样的方法,在想这里节点间的通信如果存在限制的话,会不会用流水线并行更好。看起来ZeRO的效果非常好,网络通信没成为瓶颈。
已支持65B模型训练,具体训练速度已经更新在readme里,对于比较大的模型确实会比llama原文的慢一点,但是也差不了多少。应该还有优化空间
请问65B模型训练的时候用了lora吗
现在测试的结果都没用lora
@s-JoL 请问下,模型是完全从头预训练的吗,还是继承llama的。如果是继承llama的话,相当于扩充了token embedding(加入中文的),然后再完全的全参数训练吗?
请问一下,目前提供的65B的训练速度数据是单机运行的吗? 不知道有没有试过多机训练65B,速度是否还能线性扩展?
我测试了1T内存,训练65b 模型 打开ckpt,仍然会爆内存, 请问您是哪里优化了之后,可以在1T内存下支持单机65b的训练呢?
我测试了1T内存,训练65b 模型 打开ckpt,仍然会爆内存, 请问您是哪里优化了之后,可以在1T内存下支持单机65b的训练呢?
代码支持了从头训练和加载已有的全量finetune或者轻量化finetune。
抱歉,我这里测试使用的都是48卡进行的测试,我刚才又试了一下确实是单机用不了65B,最大只能用33B的。
请问一下,目前提供的65B的训练速度数据是单机运行的吗? 不知道有没有试过多机训练65B,速度是否还能线性扩展?
这里数据已经都是48卡测试结果了。
请问一下,目前提供的65B的训练速度数据是单机运行的吗? 不知道有没有试过多机训练65B,速度是否还能线性扩展?
这里数据已经都是48卡测试结果了。
您好,我也遇到了训练速度上不去的问题,4台机器32张A100-80G,大概是20 token/s/gpu,是网卡的问题吗,想请教下多机训练的时候网络带宽能达到多少啊?
请问一下,目前提供的65B的训练速度数据是单机运行的吗? 不知道有没有试过多机训练65B,速度是否还能线性扩展?
这里数据已经都是48卡测试结果了。
您好,我也遇到了训练速度上不去的问题,4台机器32张A100-80G,大概是20 token/s/gpu,是网卡的问题吗,想请教下多机训练的时候网络带宽能达到多少啊?
首先可以检查一下配置是否正确,是否使用gradient checkpoint并且batch size为12。
下面是一个我跑65B模型在wandb上的记录,可以对比一下看看。
好的,感谢您的回复,我测试一下哈
GPU NVlink带宽在5G/s左右,PCIE带宽在2-3G/s,整机TCP+RDMA在12G/s左右。
GPU NVlink带宽在5G/s左右,PCIE带宽在2-3G/s,整机TCP+RDMA在12G/s左右。
大佬,NVLINK的上限应该是单向300G/s吧(NV12),我用PCIE版本的单机zero3训练7B,用torch profiler看60+%的时间都在AllGather和ReduceScatter,感觉测的这个NVLINK带宽怎么有点低了。您是怎么测试带宽的?
GPU NVlink带宽在5G/s左右,PCIE带宽在2-3G/s,整机TCP+RDMA在12G/s左右。
大佬,NVLINK的上限应该是单向300G/s吧(NV12),我用PCIE版本的单机zero3训练7B,用torch profiler看60+%的时间都在AllGather和ReduceScatter,感觉测的这个NVLINK带宽怎么有点低了。您是怎么测试带宽的?
其实我不太会查看带宽相关的数据,这个是我用的机器自己提供的监控,可能不太准,请问您有什么方法测试么?我之前主要看的sm ocuupancy,感觉在20%以上的话速度就差不多
GPU NVlink带宽在5G/s左右,PCIE带宽在2-3G/s,整机TCP+RDMA在12G/s左右。
大佬,NVLINK的上限应该是单向300G/s吧(NV12),我用PCIE版本的单机zero3训练7B,用torch profiler看60+%的时间都在AllGather和ReduceScatter,感觉测的这个NVLINK带宽怎么有点低了。您是怎么测试带宽的?
其实我不太会查看带宽相关的数据,这个是我用的机器自己提供的监控,可能不太准,请问您有什么方法测试么?我之前主要看的sm ocuupancy,感觉在20%以上的话速度就差不多
我查到 nvidia-smi nvlink -g 0 -i 0 应该可以查看,不过可能需要改下配置。(参考https://www.exxactcorp.com/blog/HPC/exploring-nvidia-nvlink-nvidia-smi-commands) https://github.com/gpuopenanalytics/pynvml/issues/19 用 nvidia-smi nvlink -s 可以看带宽上限,您可以试试?