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
python >= 3.6
numpy
tabulate
tensorflow >= 2.0.0
keras >= 2.2.4
Built and tested on tensorflow == 2.3.1
using pip.
pip install model-profiler
or latest version from PyPI project site
Firs load any model built using keras or tensorflow. Here for simplicity we will load model from kera applications.
form tensorflow.keras.applications import VGG16
model = VGG16(include_top=True, weights="imagenet", input_tensor=None,
input_shape=None, pooling=None, classes=1000,
classifier_activation="softmax")
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
.
| Model Profile | Value | Unit |
|----------------------------------|---------------------|---------|
| Selected GPUs | ['0', '1'] | GPU IDs |
| No. of FLOPs | 0.30932349055999997 | BFLOPs |
| GPU Memory Requirement | 7.4066760912537575 | GB |
| Model Parameters | 138.357544 | Million |
| Memory Required by Model Weights | 527.7921447753906 | MB |
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']
'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
For further details and more examples visit my github