4090 深度学习性能实测

这篇具有很好参考价值的文章主要介绍了4090 深度学习性能实测。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

测试结果 

4090 深度学习性能实测

测试平台:

显卡:影驰金属大师4090

cpu:i7 12700k

4090 深度学习性能实测

测试方法

李沐老师micro-benchmarkings

B站视频

测试

1.矩阵计算速度

transformer的核心操作是矩阵乘法,通过测试矩阵计算的tflops可以得到硬件的计算上限。

matmul_tflops = defaultdict(lambda: {})
for n in [128, 512, 2048, 8192]: #四种大小的矩阵
    for dtype in (torch.float32, torch.float16):
        a = torch.randn(n, n, dtype=dtype).cuda()
        b = torch.randn(n, n, dtype=dtype).cuda()   
        t = walltime('a @ b', var_dict(a, b))  #计算两个矩阵相乘的时间
        matmul_tflops[f'n={n}'][dtype] = 2*n**3 / t / 1e12   #计算TFLOPS:两个n*n的矩阵相乘会继续2*n**3次计算,再除以计算的时间,和1e12(1tplops=1e12),得到tflops
        del a, b
        
pd.DataFrame(matmul_tflops)

结果: 

4090 深度学习性能实测

对比:

4090 深度学习性能实测

可以得出单精度4090tflops为85TFLOPS是3090的两倍,半精度下是为144TFLPOPS是3090的1.77倍,半精度下因为Tensor Cores的原因,性能相比单精度有很大的提升。

2.向量乘法速度、带宽

深度学习训练中,带宽会限制你的训练速度。

网络训练过程中的激活函数会做的事情计算步骤类似向量乘法,这种操作会很慢,而减慢你的训练速度。

vector = defaultdict(lambda: {})
for n in [1024*64, 1024*256, 1024*1024, 1024*1024*4]:
    a = torch.randn(n).cuda()
    t = walltime('a * 1.2', var_dict(a)) #进行向量乘法操作
    vector[n]['TFLOPS'] = n / t / 1e12 #计算TFPLOS
    vector[n]['GB/s'] = 8 * n / t / 1e9 #计算带宽:进行一个向量乘法需要将数据从gpu拿得到计算单元(4byte),再从计算单元再拿回来(4byte),所以是8*n
    
pd.DataFrame(vector)

结果: 

 4090 深度学习性能实测

可以看出TFLOPS仅为0.462

对比:

4090 深度学习性能实测

 可以看出4090向量乘法操作大约是3090ti的四倍。

3.Bert Layer Forward / Forward+Backward速度

def layer_benchmark(layer, hidden_size, seq_lens, batch_sizes, cross_attention=False):
    h = hidden_size
    results = defaultdict(lambda: {})    
    encoder_state = 'encoder_hidden_states=X' if cross_attention else ''
    for s in seq_lens:
        for b in batch_sizes:            
            ffn = 16*b*s*h*h / 1e12    #计算一个ffn层的TFLOPS
            atten = (4*b*h*s*s + 8*b*s*h*h) / 1e12    #计算一个attention层的TFLOPS       
            forward = ffn + (2 if cross_attention else 1) * atten
            
            X = torch.randn(b, s, h).half().cuda()
            results[f'batch={b}'][f'fwd seq_len={s}'] = forward / walltime(
                f'layer(X, {encoder_state})', var_dict(layer, X))
            results[f'batch={b}'][f'fwd+bwd seq_len={s}'] = 3 * forward / walltime(
                f'layer(X, {encoder_state})[0].sum().backward()', var_dict(layer, X))            
    return pd.DataFrame(results)

总结:

矩阵计算的硬件的计算上限来说,单精度4090为是3090ti的两倍,半精度下是3090ti的1.77倍。4090bertForward操作的性能是 3090ti的1.79倍,Forward+Backward是3090ti的1.63倍。

因为内存带宽、Nvidia提供的矩阵库的效率、中间的缓存的的大小,我们日常训练当中一般不可能达到理论的速度,而这些都是我们难以解决的,我们能做的是提高批量的大小、将多个按元素计算的操作合并成一个单个操作用CUDA重新实现一次。文章来源地址https://www.toymoban.com/news/detail-441217.html

到了这里,关于4090 深度学习性能实测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Ubuntu 20.04 RTX 4090显卡 深度学习环境配置(Nvidia显卡驱动、CUDA11.6.0、cuDNN8.5)

    参考文献:从零到一保姆级Ubuntu深度学习服务器环境配置教程 看文献中“ 三、 NVIDIA驱动安装 ” 安装NVIDIA驱动,这也是安装CUDA10.0及其对应版本的CuDNN和tensorflow的重要步骤。 1.1.1 英伟达中国驱动官网 进入英伟达中国驱动官网 1.1.2 输入显卡型号查询 1.1.3 查看搜索结果 1.2.1 方

    2024年02月04日
    浏览(112)
  • 实测结果公开:用户见证 StarRocks 存算分离优异性能!

    StarRocks 在 3.0 版本正式引入了存算分离架构,从 shared-nothing 走向 shared-data,实现了架构上的重大升级。这一升级受到许多用户的高度期待,因为它不仅是企业降本增效的关键,也是 StarRocks 迈向云原生的必经之路。因此,在 StarRocks 3.0 版本发布初期,StarRocks 号召了社区用户响

    2024年02月16日
    浏览(32)
  • ubuntu 22.04 安装 RTX 4090 显卡驱动

    1. 官网下载4090: 驱动程序 2. 关闭图形界面 对应的打开图形界面命令为: 3. tty登录之后 安装新版驱动: 如果报错,信息如下: ERROR: An NVIDIA kernel module \\\'nvidia-drm\\\' appears to already be loaded in your kernel.  This may be because it is in use (for example, by an X server, a CUDA program, or the NVIDIA      

    2024年02月05日
    浏览(75)
  • 适用于深度学习的GPU服务器选RTX4090与RTX3090哪个更合适、更划算?

    一、弄清基本参数对比 RTX 4090 具有 760 亿个晶体管、16384 个 CUDA 核心和 24 GB 高速美光 GDDR6X 显存, 4090单精度浮点73TFLOPs RTX 3090 ,搭载了 10496 个流处理器与 24G GDDR6X 显存,带宽为 936GB/S。 3090单精度浮点35.7TFLOPs   二、以同等算力的情况做简单的对比 简单给大家算一下, 从单

    2024年02月17日
    浏览(50)
  • 性能测试工具 Lmbench 的使用方法以及解析运行结果

    Lmbench 是一款简易可以移植的内存测试工具,其主要功能有,带宽测评(读取缓存文件、拷贝内存、读/写内存、管道、TCP),延时测评(上下文切换、网络、文件系统的建立和删除、进程创建、信号处理、上层系统调用、内存读入反应时间)等功能。 官网地址:http://www.bit

    2023年04月18日
    浏览(60)
  • 案例分享| T-Box功能自动化测试方案: 测试对象和原理分析 | 车内T-Box与手机端的交互流程 | 测试方案设计及实测结果 | T-Box功能自动化测试系统框架 | 软硬件工具组成及作用

    背景 T-Box是实现汽车车联网的一个关键环节,从起初单纯的实现车辆信息采集,已发展到具有车辆信息监测及信息交互(V2X)、车辆远程控制、安全监测和报警、远程诊断、边缘计算等多种离线和在线的应用功能的载体。为保障T-Box功能的正常运转,对其进行功能测试就尤为

    2024年04月13日
    浏览(114)
  • 全网最牛,JMeter性能测试步骤与结果分析(压力 / 负载测试)详全,精品太干了

    1、负载:模拟业务操作对服务器造成压力的过程,比如模拟100个用户进行发帖 在一定软硬件环境下,通过不断加大负载(不同虚拟用户量)来确定在满足性能指标情况下能够承受的最大用户数 简单说,可以帮我们对系统进行定容 定量,找出系统性能的拐点,给予生产环境规

    2024年02月20日
    浏览(59)
  • 【stable-diffusion】4090显卡下dreambooth、lora、sd模型微调的GUI环境安装(cuda驱动、pytorch、xformer)

    相关博文 stable-diffusion-webui的基础功能手动安装,了解代码结构、依赖、模型出处 cuda11.7下载-https://developer.nvidia.com/cuda-toolkit-archive cudnn8.6 for 11.x : https://developer.nvidia.com/rdp/cudnn-archive dreamboothlora 训练环境: 最原始的命令端 https://github.com/kohya-ss/sd-scripts GUI端口 https://github.co

    2024年02月06日
    浏览(117)
  • 【深度学习】训练模型结果同时显示,模型结果对比

    码字不易,如果各位看官感觉该文章对你有所帮助,麻烦点个关注,如果有任何问题,请留言交流。如需转载,请注明出处,谢谢。 文章链接:【深度学习】训练模型结果同时显示,模型结果对比_莫克_Cheney的博客-CSDN博客 目录 目录 一、问题描述 二、解决方案 三、实验结果

    2024年02月09日
    浏览(55)
  • POSTGRESQL 压力测试结果与 POSTGRESQL CPU OR 内存 提升性能提升大

    数据库与硬件之间的关系,是一个决定数据库性能,必要条件,即使你参数调整的漂亮,你的SQL 撰写的没有问题,但是硬件不行,那么上面说的这一切对于数据库的性能,只能是杯水车薪。 那么如何对一个数据库或者一个应用要使用的数据库,预先通过压测的方式来满足应

    2024年02月12日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包