RTX 3090/RTX A4000 lora训练性能对比

引入

最近我给家中的拯救者刃9000-ICO机器更换了显卡,将原来的机器自带的RTX 2080更换成了丽台RTX A4000。那么这块A4000的性能究竟如何呢?今天打算用lora训练来验证下。

另外,根据autodl的说明,RTX3090的半精度峰值算力71T,RTX A4000的半精度峰值算力76T,家用A4000实际相比autodl上的3090容器的效果又怎样呢?

方案

这里使用kohya_ss的训练工具进行lora训练作为对比项。选取了完全相同的样本,完全相同的配置。配置batchsize=2, 共1550步。关键配置如下

  • 开启xformers
  • 开启Adam8bit
  • 混合精度选择fp16
  • dim为128

对比平台选取了4组,分别是

  • autodl云Ubuntu 20.04容器 + RTX 3090
  • 家用机Windows 11 + A4000
  • 家用机Windows 11 wsl2 + A4000
  • 家用机Kubuntu 22.04 + A4000

详情

3090 + Ubuntu 20.04

用时9:32。云平台应该是有非常好的散热措施,340多W的功耗下,显卡温度始终在54度左右。训练期间显卡核心频率在1900MHz左右非常稳定。

A4000 + Windows Native

用时12:59。显卡温度在75度左右,使用Afterbunner手动调节风扇转速到69%。训练期间,显卡的核心频率在1450MHz~1860MHz之间来回波动,并随着显卡温度从50度左右上升到75度,会逐步降频,符合预期。

另外Windows方案在开始训练迭代前会额外卡住大概1分钟左右,可以观察到内存在上涨,几乎涨到了64G全部用满。

A4000 + Windows wsl2

用时11:33。显卡温度在75度左右,使用Afterbunner手动调节风扇转速到69%。训练期间,显卡的核心频率在1450MHz~1860MHz之间来回波动,并随着显卡温度从50度左右上升到75度,会逐步降频,符合预期。

wsl2方案在开始训练迭代前会额外卡住大概20s左右,可以观察到内存在上涨,但幅度远小于原生Windows。

A4000 + Kubuntu 22.04

用时10:13。显卡温度在75度左右,使用nvidia-settings手动调节风扇转速到69%。训练期间,显卡的核心频率在1450MHz~1860MHz之间来回波动,并随着显卡温度从50度左右上升到75度,会逐步降频,符合预期。

进入训练迭代前没有卡住的现象

结论

最终结果如下

  • 在fp16 lora训练上,RTX A4000的效能表现约为RTX 3090的93%
  • 实测Linux原生平台的性能最好,wsl2次之,windows原生最次

详细数据如下

Plat CPU Memory Driver Time(in second) Ratio
autodl Linux 3090 Xeon Platinum 8350C 14C 32G 515.57 572 1
home Win A4000 i9-9900K 8C16T 64G 528.49 779 0.73
home WSL2 A4000 i9-9900K 8C16T 32G 528.49 693 0.83
home Linux A4000 i9-9900K 8C16T 64G 525.85 613 0.93

总结

这个结论与预期基本一致。如果在本地使用更强的冷却措施,确保温度一直处于50多度,应当可以达到略强于3090的效果。现状是在较小的机箱中使用改造过的双风扇三热管风冷散热器,温度上升到75度,效能略弱于3090。

另外按照2020年左右的评测,wsl2的Resnet评测的效果是与Windows原生有10%~20%的差距的,目前看综合上数据加载等综合因素,wsl2下的效果比Windows原生是要更好的,所以在Windows平台上使用wsl2是个不错的选择。如果有可能,还是推荐使用原生Linux,这会带来最佳的训练效果。

《RTX 3090/RTX A4000 lora训练性能对比》有2条评论

  1. 你好,方便分享一下3090 + Ubuntu 20.04下部署流程吗?我的部署环境Miniconda conda3
    Python 3.8(ubuntu20.04),Cuda 11.6
    会出现下面错误
    Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
    2023-04-07 14:12:37.953800: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library ‘libnvinfer.so.7’; dlerror: libnvinfer.so.7: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/nvidia/lib:/usr/local/nvidia/lib64
    2023-04-07 14:12:37.953877: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library ‘libnvinfer_plugin.so.7’; dlerror: libnvinfer_plugin.so.7: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/nvidia/lib:/usr/local/nvidia/lib64

    回复
    • 你报告的这两个并不是错误,而是tensorflow的Warning,不影响实际运行的。项目中对tensorflow的使用仅限于tensorboard,即记录日志。如果你不想看到这些,可以尝试手工降级安装tensorflow到2.9.3版本,就不会报告上面的问题了。pip install tensorflow==2.9.3

      回复

发表评论

为防机器,验证码请直接输入4个数字1

*