
随着深度学习模型日益复杂,准确评估模型的计算复杂度变得越来越重要。FLOPs(浮点运算次数)是衡量模型计算复杂度的重要指标之一。本文将介绍一个强大的FLOPs计算工具 - calflops,它可以方便地计算各种PyTorch神经网络模型的FLOPs、MACs和参数数量。
calflops是一个专门用于计算PyTorch模型理论FLOPs、MACs(乘加运算次数)和参数数量的Python库。它具有以下主要特点:
支持各种神经网络结构,包括Linear、CNN、RNN、GCN、Transformer等。
可计算大语言模型(如BERT、LLaMA等)的FLOPs。
支持自定义模型,只要基于PyTorch实现。
可打印每个子模块的FLOPs、参数等详细信息。
支持在线计算Hugging Face模型的FLOPs,无需下载完整权重。
calflops可以通过pip安装:
pip install --upgrade calflops
基本使用示例:
from calflops import calculate_flops from torchvision import models model = models.alexnet() batch_size = 1 input_shape = (batch_size, 3, 224, 224) flops, macs, params = calculate_flops(model=model, input_shape=input_shape, output_as_string=True) print(f"AlexNet FLOPs:{flops} MACs:{macs} Params:{params}")
这将输出AlexNet模型的FLOPs、MACs和参数数量。
对于Transformer类模型,calflops提供了更便捷的使用方式:
from calflops import calculate_flops from transformers import AutoModel, AutoTokenizer model_name = "bert-base-uncased" model = AutoModel.from_pretrained(model_name) tokenizer = AutoTokenizer.from_pretrained(model_name) flops, macs, params = calculate_flops(model=model, input_shape=(1, 128), transformer_tokenizer=tokenizer) print(f"BERT FLOPs:{flops} MACs:{macs} Params:{params}")
通过传入transformer_tokenizer,calflops可以自动生成合适的输入数据。
calflops还支持直接计算Hugging Face上的模型,无需下载完整权重:
from calflops import calculate_flops_hf model_name = "meta-llama/Llama-2-7b" flops, macs, params = calculate_flops_hf(model_name=model_name, input_shape=(1, 128)) print(f"{model_name} FLOPs:{flops} MACs:{macs} Params:{params}")
这对于计算大型语言模型的FLOPs特别有用。
calflops可以打印每个子模块的详细计算结果:
flops, macs, params = calculate_flops(model, input_shape=(1,3,224,224), print_results=True, print_detailed=True)
这将输出类似下面的详细信息:
-------------------------------- Detailed Calculated FLOPs Results --------------------------------
Each module caculated is listed after its name in the following order:
params, percentage of total params, MACs, percentage of total MACs, FLOPS, percentage of total FLOPs
AlexNet(
61.1 M = 100% Params, 715.51 MMACs = 100% MACs, 1.43 GFLOPS = 50% FLOPs
(features): Sequential(
2.47 M = 4.04% Params, 666.52 MMACs = 93.15% MACs, 1.33 GFLOPS = 46.58% FLOPs
(0): Conv2d(23.3 K = 0.04% Params, 105.71 MMACs = 14.77% MACs, 211.41 MFLOPS = 7.39% FLOPs, 3, 64, kernel_size=(11, 11), stride=(4, 4), padding=(2, 2))
(1): ReLU(0 = 0% Params, 0.29 MMACs = 0.04% MACs, 0.58 MFLOPS = 0.02% FLOPs, inplace=True)
(2): MaxPool2d(0 = 0% Params, 0.29 MMACs = 0.04% MACs, 0.58 MFLOPS = 0.02% FLOPs, kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=False)
...
)
(avgpool): AdaptiveAvgPool2d(0 = 0% Params, 0.01 MMACs = 0% MACs, 0.03 MFLOPS = 0% FLOPs, output_size=(6, 6))
(classifier): Sequential(
58.63 M = 95.96% Params, 48.98 MMACs = 6.85% MACs, 97.96 MFLOPS = 3.42% FLOPs
(0): Dropout(0 = 0% Params, 0 MACs = 0% MACs, 0 FLOPS = 0% FLOPs, p=0.5, inplace=False)
(1): Linear(37.75 M = 61.79% Params, 37.75 MMACs = 5.28% MACs, 75.5 MFLOPS = 2.64% FLOPs, in_features=9216, out_features=4096, bias=True)
(2): ReLU(0 = 0% Params, 0 MACs = 0% MACs, 0.01 MFLOPS = 0% FLOPs, inplace=True)
...
)
)
这种详细输出可以帮助我们更好地理解模型中各部分的计算复杂度分布。
除了基本的FLOPs计算,calflops还提供了一些高级功能:
计算反向传播的FLOPs:
flops, macs, params = calculate_flops(model, input_shape=(1,3,224,224), include_backPropagation=True)
忽略特定模块:
flops, macs, params = calculate_flops(model, input_shape=(1,3,224,224), ignore_modules=[nn.ReLU, nn.Dropout])
计算模型生成过程的FLOPs:
flops, macs, params = calculate_flops(model, input_shape=(1,128), forward_mode="generate")
calflops是一个功能强大且易用的工具,可以帮助研究人员和工程师快速评估PyTorch模型的计算复杂度。无论是传统的CNN模型还是最新的大语言模型,calflops都能提供准确的FLOPs、MACs和参数统计。通过使用calflops,我们可以更好地理解和优化深度学习模型的计算效率。
在实际应用中,准确计算模型的FLOPs可以帮助我们:
总之,calflops为PyTorch模型的性能分析提供了一个简单而强大的工具,值得每个深度学习从业者掌握和使用。


职场AI,就用扣子
AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!


多风格AI绘画神器
堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。


零代码AI应用开发平台
零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无需编写代码。


免费创建高清无水印Sora视频
Vora是一个免费创建高清无水印Sora视频的AI工具


最适合小白的AI自动化工作流平台
无需编码,轻松生成可复用、可变现的AI自动化工作流

大模型驱动的Excel数据处理工具
基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。


AI辅助编程,代码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。


AI论文写作指导平台
AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。


AI一键生成PPT,就用博思AIPPT!
博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。


AI赋能电商视觉革命,一站式智能商拍平台
潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。
最新AI工具、AI资讯
独家AI资源、AI项目落地

微信扫一扫关注公众号