Skip to main content

One-clicked merge convolution and batchnorm to one unified convolution

Project description

Convolution Batchnorm Merge

Only one line of code and we can accelerate your model up to 50% faster!

Installation

$ pip install convbnmerge

Usage

conv-bn-merge is ONLY used in inference time!

from convbnmerge import merge

model = ...
"""
training...
"""
merge(model)

Update

  • 2021.18.04: support ConvTranspose2d and ConvTranspose3d
  • 2021.02.04: also support Conv3d

How much fast

You usually reach 30++% inferece time reduce. In some cases, the number is more than 50%!

from time import time

import torch
from torchvision.models.resnet import resnet34

from convbnmerge import merge

if __name__ == '__main__':
    model = resnet34(pretrained=True)
    x = torch.Tensor(2, 3, 32, 32)

    with torch.no_grad():
        start = time()
        for i in range(100):
            model(x)
        stop = time()
        print(stop - start)             # Before merge: about 7.9s

    merge(model)

    with torch.no_grad():
        start = time()
        for i in range(100):
            model(x)
        stop = time()
        print(stop - start)             # After merge: about 4.8s

How we do

Coming soon

Are outputs the same before and after merge?

A small difference caused by round-off error. In almost cases, it doesn't harm the model's result.

import torch
from torchvision.models.resnet import resnet34

from convbnmerge import merge

if __name__ == '__main__':
    model = resnet34(pretrained=True)
    model.eval()
    x = torch.Tensor(1, 3, 32, 32)
    out_old = model(x)
    merge(model)
    out_new = model(x)
    print(((out_old-out_new)**2).sum())         #less than 1e-10 

License

conv-bn-merge is MIT-licensed.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

convbnmerge-0.1.6.tar.gz (2.8 kB view hashes)

Uploaded Source

Built Distribution

convbnmerge-0.1.6-py3-none-any.whl (4.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page