This package(calflops) is designed to compute the theoretical amount of FLOPs(floating-point operations)、MACs(multiply-add operations) and Parameters in various neural networks such as Linear、 CNN、 RNN、 GCN、**Transformer(Bert、LlaMA etc Large Language Model)**,including **any custom models** via ```torch.nn.function.*``` as long as based on the Pytorch implementation.
Project description
calculate-flops.pytorch
This tool(calflops) is designed to compute the theoretical amount of FLOPs(floating-point operations)、MACs(multiply-add operations) and Parameters in various neural networks such as Linear、 CNN、 RNN、 GCN、Transformer(Bert、LlaMA etc Large Language Model),including any custom models via torch.nn.function.* as long as based on the Pytorch implementation.
In addition, the implementation process of this package inspired by ptflops and deepspeed libraries, for which I am very grateful for their efforts, they are both very good work. Meanwhile this package also improves some aspects(more simple、more model support) based on them.
Install the latest version
From PyPI:
pip install calflops
Example
from calflops import calculate_flops
# Deep Learning Model, such as alexnet.
from torchvision import models
model = models.alexnet()
batch_size = 1
flops, macs, params = calculate_flops(model=model,
input_shape=(batch_size, 3, 224, 224),
print_results=False)
print("alexnet FLOPs:%s MACs:%s Params:%s \n" %(flops, macs, params))
# alexnet FLOPs:1.43 GFLOPS MACs:714.188 MMACs Params:61.101 M
# Transformers Model, such as bert.
from transformers import AutoModel
from transformers import AutoTokenizer
batch_size = 1
max_seq_length = 128
model_name = "hfl/chinese-roberta-wwm-ext/"
model_save = "../pretrain_models/" + model_name
model = AutoModel.from_pretrained(model_save)
tokenizer = AutoTokenizer.from_pretrained(model_save)
flops, macs, params = calculate_flops_pytorch(model=model,
input_shape=(batch_size, max_seq_length),
transformer_tokenizer=tokenizer,
print_results=False)
print("bert(hfl/chinese-roberta-wwm-ext) FLOPs:%s MACs:%s Params:%s \n" %(flops, macs, params))
#bert(hfl/chinese-roberta-wwm-ext) FLOPs:22.363 GFLOPS MACs:11.174 GMACs Params:102.268 M
# Large Languase Model, such as llama-7b.
from transformers import LlamaTokenizer
from transformers import LlamaForCausalLM
batch_size = 1
max_seq_length = 128
model_name = "original_llama2_hf_7B"
model_save = "../model/" + model_name
model = LlamaForCausalLM.from_pretrained(model_save)
tokenizer = LlamaTokenizer.from_pretrained(model_save)
flops, macs, params = calculate_flops(model=model,
input_shape=(batch_size, max_seq_length),
transformer_tokenizer=tokenizer,
print_results=False)
print("llama2(7B) FLOPs:%s MACs:%s Params:%s \n" %(flops, macs, params))
#llama2(7B) FLOPs:1.7 TFLOPS MACs:850.001 GMACs Params:6.738 B
Concact Author
Author: MrYXJ
Mail: code_job@163.com
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file calflops-0.0.2.tar.gz.
File metadata
- Download URL: calflops-0.0.2.tar.gz
- Upload date:
- Size: 13.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b35d0a4ae6cc3f4bcfb6a764d5a9bfa06356c63d9bcc488463f65ac1726467ee
|
|
| MD5 |
f4e308b15b328ad677f20f70912a29ac
|
|
| BLAKE2b-256 |
3c379cb4cf1e3fb2db37b3f67bee0db2f841ce8a88c7dd523689ccf33572c9d4
|
File details
Details for the file calflops-0.0.2-py3-none-any.whl.
File metadata
- Download URL: calflops-0.0.2-py3-none-any.whl
- Upload date:
- Size: 16.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7e5bc664b344c09cca118ba09fcc08164df6255f203ab2e901381e646cdb2c0c
|
|
| MD5 |
49972b0a13fec62797d65d09eaf33023
|
|
| BLAKE2b-256 |
50a7e69930596f8fefe3e1c133524c532c15b7e6f35583147ef55f429764100a
|