Skip to content

Tensorflow-Keras Model Profiler: Tells you model's memory requirement, no. of parameters, flops etc.

License

Notifications You must be signed in to change notification settings

Mr-TalhaIlyas/Tensorflow-Keras-Model-Profiler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 

Repository files navigation

License: MIT Keras TensorFlow Downloads Generic badge

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.7 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

or latest version from PyPI project site

Usage

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.

Output

| 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']

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

About

Tensorflow-Keras Model Profiler: Tells you model's memory requirement, no. of parameters, flops etc.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages