Skip to main content

License: MIT Keras TensorFlow Generic badge Downloads

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

Metadata

Release files for model-profiler 1.1.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for model-profiler 1.1.8
File Size Uploaded
model_profiler-1.1.8.tar.gz 6.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for model-profiler 1.1.8
File Interpreter ABI Platform
model_profiler-1.1.8-py3-none-any.whl Python 3 none any Details

Total release size: 13.2 kB

Release files / model_profiler-1.1.8.tar.gz

Download URL model_profiler-1.1.8.tar.gz
Size 6.9 kB
Tags Source
SHA-256 checksum
How to use checksums
2bb682849150bb9306353f15fb6b9bc3598fa382deaecfe6a1f7b16a585b806d
BLAKE2b-256 checksum
How to use checksums
71c9947592f8ab32095ca6baa28837727c13572dce32f68a23127495607c5835
Upload date
Uploaded using Trusted Publishing?
What is 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

Release files / model_profiler-1.1.8-py3-none-any.whl

Download URL model_profiler-1.1.8-py3-none-any.whl
Size 6.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
06a64693b3951b52737c91839cd9399344450895afeb86cae3683c0e18ae4926
BLAKE2b-256 checksum
How to use checksums
77dd26702f220aca6457fb14c36f0e6d4965d97b9102fd1e291f1ad2dac61a4f
Upload date
Uploaded using Trusted Publishing?
What is 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

Release history Release notifications | RSS feed

This release

1.1.8 This release

2 release files

0.1.7

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page