Skip to main content

Minimalistic & easy deployment of PyTorch models on AWS Lambda with C++

Project description

torchlambda is a tool to deploy PyTorch models on Amazon's AWS Lambda using AWS SDK for C++ and custom C++ runtime.

Using statically compiled dependencies whole package is shrunk to only 30MB.

Due to small size of compiled source code users can pass their models as AWS Lambda layers. Services like Amazon S3 are no longer necessary to load your model.

torchlambda has it's PyTorch & AWS dependencies always tested & up to date because of daily continuous deployment runs.

Docs Deployment Package Python PyTorch Docker CodeBeat Images
Documentation CD PyPI Python PyTorch Docker codebeat badge Images

:heavy_check_mark: Why should I use torchlambda?

  • Lightweight & latest dependencies - compiled source code weights only 30MB. Previous approach to PyTorch network deployment on AWS Lambda (fastai) uses outdated PyTorch (1.1.0) as dependency layer and requires AWS S3 to host your model. Now you can only use AWS Lambda and host your model as layer and PyTorch master and latest stable release are supported on a daily basis.
  • Cheaper and less resource hungry - available solutions run server hosting incoming requests all the time. AWS Lambda (and torchlambda) runs only when the request comes.
  • Easy automated scaling usually autoscaling is done with Kubernetes or similar tools (see KubeFlow). This approach requires knowledge of another tool, setting up appropriate services (e.g. Amazon EKS). In AWS Lambda case you just push your neural network inference code and you are done.
  • Easy to use - no need to learn new tool. torchlambda has at most 4 commands and deployment is done via YAML settings. No need to modify your PyTorch code.
  • Do one thing and do it well - most deployment tools are complex solutions including multiple frameworks and multiple services. torchlambda focuses solely on inference of PyTorch models on AWS Lambda.
  • Write programs to work together - This tool does not repeat PyTorch & AWS's functionalities (like aws-cli). You can also use your favorite third party tools (say saws, Terraform with AWS and MLFlow, PyTorch-Lightning to train your model).
  • Test locally, run in the cloud - torchlambda uses Amazon Linux 2 Docker images under the hood & allows you to use lambci/docker-lambda to test your deployment on localhost before pushing deployment to the cloud (see Test Lambda deployment locally tutorial).
  • Extensible when you need it - All you usually need are a few lines of YAML settings, but if you wish to fine-tune your deployment you can use torchlambda build --flags (changing various properties of PyTorch and AWS dependencies themselves). You can also write your own C++ deployment code (generate template via torchlambda template command).
  • Small is beautiful - 3000 LOC (most being convenience wrapper creating this tool) make it easy to jump into source code and check what's going on under the hood.

:house: Table Of Contents

:page_with_curl: Benchmarks

Benchmarks can be seen in BENCHMARKS.md file and are comprised of around ~30000 test cases.

Results are divided based on settings used, model type, payload, AWS Lambda timing etc. Below is an example of how inference performance changes due to higher resolution images and type of encoding:

128x128 256x256 512x512 1024x1024
base64 120.622 165.184 311.129 995.249
byte 133.315 203.628 498.391 1738.97
char 128.331 209.306 517.482 1822.56
short 135.859 207.389 497.818 1740.91
int 133.42 216.163 519.502 1783.02
long 126.979 228.497 516.98 1760.93
float 135.825 223.045 515.245 1802.25
double 137.281 209.267 536.959 1811.83

Clearly the bigger image, the more important it is to use base64 encoding. For all results and description click here.

:question: Contributing

If you find an issue or you think some functionality may be useful to you, please open new Issue or create Pull Request with your changes, thanks!

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

torchlambda-1594523557.tar.gz (26.9 kB view details)

Uploaded Source

Built Distribution

torchlambda-1594523557-py3-none-any.whl (34.8 kB view details)

Uploaded Python 3

File details

Details for the file torchlambda-1594523557.tar.gz.

File metadata

  • Download URL: torchlambda-1594523557.tar.gz
  • Upload date:
  • Size: 26.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.1 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.8.3

File hashes

Hashes for torchlambda-1594523557.tar.gz
Algorithm Hash digest
SHA256 1817605716de1c80dc04051d7d312b732eb7f542a05d9daf531b1d23b01eb9ca
MD5 b529c7c75f5e3bd2a722ac7b86bdbc00
BLAKE2b-256 e8b2c242057de7301efe9fb010aea99c02fe9e3990afed7530fcf4c307535fc5

See more details on using hashes here.

File details

Details for the file torchlambda-1594523557-py3-none-any.whl.

File metadata

  • Download URL: torchlambda-1594523557-py3-none-any.whl
  • Upload date:
  • Size: 34.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.1 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.8.3

File hashes

Hashes for torchlambda-1594523557-py3-none-any.whl
Algorithm Hash digest
SHA256 f0310e9db471e33cb73589a22adb500343e3b46f1278b475fe6df4e3cc7ada52
MD5 d4c06d3c132e372e4b2182a26de05a72
BLAKE2b-256 1fdc0586d78877cb8b2d57bc465cc970a6d3099e4472ecadc1453fa2b844c6af

See more details on using hashes here.

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