【pytorch】深度学习所需算力估算:flops及模型参数量

这篇具有很好参考价值的文章主要介绍了【pytorch】深度学习所需算力估算:flops及模型参数量。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

计算量的要求是在于芯片的floaps(指的是gpu的运算能力)

确定神经网络推理需要的运算能力需要考虑以下几个因素:

网络结构:神经网络结构的复杂度直接影响运算能力的需求。一般来说,深度网络和卷积网络需要更多的计算能力。

输入数据大小和数据类型:输入数据的大小和数据类型直接影响到每层神经网络的计算量和存储需求。例如,输入数据是较大的图像或视频,需要更多的内存和计算能力。

批量大小:批量大小决定了每次处理的样本数量,也会影响到计算能力的需求。一般来说,批量大小越大,需要的计算能力就越大。

计算网络结构的浮点运算量(FLOPs):可以使用现有的工具或代码库(如TensorFlow Profiler或PyTorch Profiler)来计算网络结构的FLOPs。

thop(pytorch-OpCounter)是一个用于计算 PyTorch 模型 FLOPs 和参数数量的 Python 库。在 thop 中,计算的是 FLOPs(Floating Point Operations)而不是 FLOPS(Floating Point Operations Per Second)

FLOPs 转换为 FLOPS 来确定所需的计算能力。
转换的方法是:将 FLOPs 除以每秒钟可以执行的浮点运算次数,即 FLOPs / FLOPS = 秒数。这个秒数表示模型需要的最短计算时间。例如,如果一个模型的 FLOPs 为 1000,计算机的处理能力为 10 FLOPS,那么需要的最短计算时间为 100 秒(1000 / 10 = 100)

参数量对应显存大小选型

PyTorch模型的参数量和GPU显存之间有一定的关系。模型参数越多,需要的显存也就越大。这是因为模型的参数需要存储在显存中,而在计算过程中,也会涉及到一些中间结果的存储和计算,所以需要足够的显存来支持模型的运行。
在部署时,需要考虑芯片的显存,是因为显存的大小限制了模型的最大批次大小。如果模型的批次大小超过了显存的大小,那么就无法将整个批次的数据同时加载到显存中,需要分批处理,这会增加模型推理的时间。因此,在部署时,需要选择适合芯片显存大小的模型和批次大小。

假设我们已知模型的参数量为100M,最大推理batchsize为32,现在需要选定适合的推理芯片显存大小。下面是一个简单的计算过程:
首先,我们需要计算出模型在最大推理batchsize下所需要的显存大小。假设模型的输入数据大小为[h, w],每个元素的数据类型为float32,那么模型每个batch的输入数据大小为[h, w, 32](32为batchsize),占用显存大小为h * w * 32 * 4(4为float32的字节大小,即4个字节),同理,输出数据大小也为[h, w, 32],占用显存大小也为h * w * 32 * 4,因此,模型在最大推理batchsize下所需要的显存大小为:

显存大小 = 输入数据大小 + 输出数据大小 + 模型参数大小
显存大小 = h * w * 32 * 4 + h * w * 32 * 4 + 100M * 4

注意,这里假设模型所有参数都是float32类型,所以模型参数大小是100M * 4,如果模型参数类型不是float32,需要相应地调整计算。
假设我们希望显存利用率达到80%,则最终选定的显存大小为:

显存大小 = (h * w * 32 * 4 + h * w * 32 * 4 + 100M * 4) / 0.8

接下来,我们需要根据计算结果选择适合的推理芯片显存大小。以NVIDIA的显卡为例,NVIDIA显卡的显存有不同的规格,例如8GB、16GB、32GB等。我们可以选择最接近计算结果的显存规格作为推理芯片的显存大小。
假设计算结果为3000MB,我们可以选择8GB的显存规格作为推理芯片的显存大小。因为8GB显卡的实际可用显存约为7500MB左右,可以满足模型在最大推理batchsize下的显存需求,同时还有一定的余量,可以保证模型能够正常运行。如果选择16GB或32GB的显存规格,虽然可以更好地满足显存需求,但是会造成显存的浪费,同时也会增加硬件成本。

一般一个参数是值一个float,也就是4个字节
1kb=1024字节

常见的英伟达显卡的FLOPS和显存规格

NVIDIA GeForce GTX 1080 Ti
FLOPS: 11.34 TFLOPS
显存: 11 GB GDDR5X

NVIDIA GeForce RTX 2080 Ti
FLOPS: 14.2 TFLOPS
显存: 11 GB GDDR6

NVIDIA Tesla V100
FLOPS: 7.5-15.7 TFLOPS (取决于精度)
显存: 16 GB HBM2

NVIDIA Tesla P100
FLOPS: 4.7-9.3 TFLOPS (取决于精度)
显存: 16 GB HBM2

NVIDIA Tesla T4
FLOPS: 8.1 TFLOPS
显存: 16 GB GDDR6

NVIDIA Quadro RTX 6000
FLOPS: 16.3 TFLOPS
显存: 24 GB GDDR6

pytorch中的floaps与显存计算方法

安装库:

pip install thop

执行代码:

# -- coding: utf-8 --
import torch
import torchvision
from thop import profile

# Model
print('==> Building model..')
model = torchvision.models.alexnet(pretrained=False)

dummy_input = torch.randn(1, 3, 224, 224)
flops, params = profile(model, (dummy_input,))
print('flops: ', flops, 'params: ', params)
print('flops: %.2f M, params: %.2f M' % (flops / 1000000.0, params / 1000000.0))

输出结果:

flops:  714206912.0 params:  61100840.0
flops: 714.21 M, params: 61.10 M

注:
FLOPS(Floating Point Operations Per Second)是一种计算机性能单位,用于表示每秒钟可以执行的浮点运算次数。它通常用于衡量计算机的处理速度和性能,特别是在科学计算、人工智能、大数据处理等领域。FLOPS的单位是每秒浮点运算次数,常用的前缀有k(千)、M(百万)、G(十亿)、T(万亿)等。

故在批次为1时,224*224的3通道输入,其计算量为714206912.0flops文章来源地址https://www.toymoban.com/news/detail-444714.html

到了这里,关于【pytorch】深度学习所需算力估算:flops及模型参数量的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【深度强化学习】(8) iPPO 模型解析,附Pytorch完整代码

    大家好,今天和各位分享一下多智能体深度强化学习算法 ippo,并基于 gym 环境完成一个小案例。完整代码可以从我的 GitHub 中获得:https://github.com/LiSir-HIT/Reinforcement-Learning/tree/main/Model 多智能体的情形相比于单智能体更加复杂,因为 每个智能体在和环境交互的同时也在和其他

    2024年02月03日
    浏览(59)
  • PyTorch深度学习实战 | 高斯混合模型聚类原理分析

    为理解高斯混合模型解决聚类问题的原理,本实例采用三个一元高斯函数混合构成原始数据,再采用GMM来聚类。 1) 数据 三个一元高斯组件函数可以采用均值和协方差表示如表1所示: ▍表1 三个一元高斯组件函数的均值和协方差 每个高斯组件函数分配不同的权重,其中1号组

    2024年02月01日
    浏览(48)
  • PyTorch各种损失函数解析:深度学习模型优化的关键(2)

    目录 详解pytorch中各种Loss functions mse_loss 用途 用法 使用技巧 注意事项 参数 数学理论公式 代码演示  margin_ranking_loss 用途 用法 使用技巧 注意事项 参数 数学理论公式  代码演示 multilabel_margin_loss 用途 用法 使用技巧 注意事项 参数 数学理论公式 代码演示 multilabel_soft_margin_

    2024年01月19日
    浏览(68)
  • 《动手学深度学习 Pytorch版》 8.3 语言模型和数据集

    依靠在 8.1 节中对序列模型的分析,可以在单词级别对文本数据进行词元化。基本概率规则如下: P ( x 1 , x 2 , … , x T ) = ∏ t = 1 T P ( x t ∣ x 1 , … , x t − 1 ) P(x_1,x_2,dots,x_T)=prod^T_{t=1}P(x_t|x_1,dots,x_{t-1}) P ( x 1 ​ , x 2 ​ , … , x T ​ ) = t = 1 ∏ T ​ P ( x t ​ ∣ x 1 ​ , … , x t −

    2024年02月07日
    浏览(43)
  • PyTorch深度学习实战(1)——神经网络与模型训练过程详解

    人工神经网络 ( Artificial Neural Network , ANN ) 是一种监督学习算法,其灵感来自人类大脑的运作方式。类似于人脑中神经元连接和激活的方式,神经网络接受输入,通过某些函数在网络中进行传递,导致某些后续神经元被激活,从而产生输出。函数越复杂,网络对于输入的数据拟

    2024年02月06日
    浏览(52)
  • 使用PyTorch解决多分类问题:构建、训练和评估深度学习模型

    💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢迎在文章下方留下你的评论和反馈。我期待着与你分享知识、互

    2024年02月07日
    浏览(42)
  • PyTorch深度学习实战 | 基于多层感知机模型和随机森林模型的某地房价预测

    简介: 在现实生活中,除了分类问题外,也存在很多需要预测出具体值的回归问题,例如年龄预测、房价预测、股价预测等。相比分类问题而言,回归问题输出类型为一个连续值,如下表所示为两者的区别。在本文中,将完成房价预测这一回归问题。 ■ 分类问题与回归问题

    2023年04月12日
    浏览(52)
  • 【深度强化学习】(2) Double DQN 模型解析,附Pytorch完整代码

    大家好,今天和大家分享一个深度强化学习算法 DQN 的改进版 Double DQN,并基于 OpenAI 的 gym 环境库完成一个小游戏,完整代码可以从我的 GitHub 中获得: https://github.com/LiSir-HIT/Reinforcement-Learning/tree/main/Model DQN 算法的原理是指导机器人不断与环境交互,理解最佳的行为方式,最

    2024年02月03日
    浏览(44)
  • 【深度学习PyTorch入门】6.Optimizing Model Parameters 优化模型参数

    现在我们有了模型和数据,是时候通过优化数据上的参数来训练、验证和测试我们的模型了。训练模型是一个迭代过程;在每次迭代中,模型都会对输出进行猜测,计算其猜测中的误差( 损失 ),收集相对于其参数的导数的误差(如我们在上一节中看到的),并使用梯度下

    2024年01月24日
    浏览(61)
  • 【AI】《动手学-深度学习-PyTorch版》笔记(十八):卷积神经网络模型

    发布时间:1989年 模型目的:识别手写数字 1.3.1 相关函数原型 1)nn.Conv2d:卷积层

    2024年02月13日
    浏览(79)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包