Tensorflow/Keras Model Profiler: Tells you model's memory requirement, no. of parameters, flops etc.
Project description
Tensorflow/ Keras Model Profiler
Gives you some basic but important information about your tf or keras model like,
- Model Parameters
- Model memory requirement on GPU
- Memory required to store parameters
model weights. - GPU availability and GPU IDs if available
Version 1.1.8 fixes problems with custom sequential models and includes other minor improvements.
Dependencies
python >= 3.6
numpy
tabulate
tensorflow >= 2.0.0
keras >= 2.2.4
Built and tested on tensorflow >= 2.3.1
Installation
using pip.
pip install model_profiler
Usage
Firs load any model built using keras or tensorflow. Here for simplicity we will load model from kera applications.
from tensorflow.keras.applications import EfficientNetB3
model = EfficientNetB3(include_top=True)
Now after installing model_profiler run
from model_profiler import model_profiler
Batch_size = 128
profile = model_profiler(model, Batch_size)
print(profile)
Batch_size have effect on model memory usage so GPU memory usage need batch_size, it's default value if 1.
Output
| Model Profile | Value | Unit |
|----------------------------------|---------------|---------|
| Selected GPUs | ['0', '1'] | GPU IDs |
| No. of FLOPs | 1.5651 | BFLOPs |
| GPU Memory Requirement | 41.7385 | GB |
| Model Parameters | 12.3205 | Million |
| Memory Required by Model Weights | 46.9991 | MB |
Using Custom Models
you can also built your own models on top of keras.application a simple example is given below. The usage is almost same the only difference is that for better calculation of FLOPs, it's better to
sepcify the input_shape argument. Simple example below.
from tensorflow.keras.applications import EfficientNetB3
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout
from profiler import model_profiler
custom_model = Sequential()
custom_model.add(EfficientNetB3(weights='imagenet', include_top=False,
input_shape=(296,256,3), pooling='avg'))
# build you custom layers on top
custom_model.add(Dropout(0.50))
custom_model.add(Dense(1000, activation='softmax'))
profile = model_profiler(custom_model, Batch_size)
Output
| Model Profile | Value | Unit |
|----------------------------------|---------------|---------|
| Selected GPUs | None Detected | GPU IDs |
| No. of FLOPs | 1.2868 | BFLOPs |
| GPU Memory Requirement | 34.8656 | GB |
| Model Parameters | 10.7989 | Million |
| Memory Required by Model Weights | 41.1945 | MB |
Units
Default units for the prfiler are
# in order
use_units = ['GPU IDs', 'BFLOPs', 'GB', 'Million', 'MB']
You can change units by changing the list entry in appropriate location. For example if you want to get model FLOPs in million just change the list as follows.
# keep order
use_units = ['GPU IDs', 'MFLOPs', 'GB', 'Million', 'MB']
Availabel units are
'GB':memory unit gega-byte
'MB': memory unit mega-byte
'MFLOPs': FLOPs unit million-flops
'BFLOPs': FLOPs unit billion-flops
'Million': paprmeter count unit millions
'Billion': paprmeter count unit billions
More Examples
For further details and more examples visit my github
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 model_profiler-1.1.8.tar.gz.
File metadata
- Download URL: model_profiler-1.1.8.tar.gz
- Upload date:
- Size: 6.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2bb682849150bb9306353f15fb6b9bc3598fa382deaecfe6a1f7b16a585b806d
|
|
| MD5 |
9759a01f64c7e83c49dea219a89a0578
|
|
| BLAKE2b-256 |
71c9947592f8ab32095ca6baa28837727c13572dce32f68a23127495607c5835
|
File details
Details for the file model_profiler-1.1.8-py3-none-any.whl.
File metadata
- Download URL: model_profiler-1.1.8-py3-none-any.whl
- Upload date:
- Size: 6.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
06a64693b3951b52737c91839cd9399344450895afeb86cae3683c0e18ae4926
|
|
| MD5 |
ebeef2d9496bfe666cc217e01291bc5e
|
|
| BLAKE2b-256 |
77dd26702f220aca6457fb14c36f0e6d4965d97b9102fd1e291f1ad2dac61a4f
|