Skip to main content

Fast inference engine for Transformer models

Project description

CI PyPI version Documentation Gitter Forum

CTranslate2

CTranslate2 is a C++ and Python library for efficient inference with Transformer models. The project implements a custom runtime that applies many performance optimization techniques such as weights quantization, layers fusion, batch reordering, etc., to accelerate and reduce the memory usage of Transformer models on CPU and GPU. The following model types are currently supported:

  • Encoder-decoder models: Transformer base/big, M2M-100, BART, mBART
  • Decoder-only models: GPT-2

Compatible models should be first converted into an optimized model format. The library includes converters for multiple frameworks:

The project is production-oriented and comes with backward compatibility guarantees, but it also includes experimental features related to model compression and inference acceleration.

Key features

  • Fast and efficient execution on CPU and GPU
    The execution is significantly faster and requires less resources than general-purpose deep learning frameworks on supported models and tasks thanks to many advanced optimizations: layer fusion, padding removal, batch reordering, in-place operations, caching mechanism, etc.
  • Quantization and reduced precision
    The model serialization and computation support weights with reduced precision: 16-bit floating points (FP16), 16-bit integers (INT16), and 8-bit integers (INT8).
  • Multiple CPU architectures support
    The project supports x86-64 and AArch64/ARM64 processors and integrates multiple backends that are optimized for these platforms: Intel MKL, oneDNN, OpenBLAS, Ruy, and Apple Accelerate.
  • Automatic CPU detection and code dispatch
    One binary can include multiple backends (e.g. Intel MKL and oneDNN) and instruction set architectures (e.g. AVX, AVX2) that are automatically selected at runtime based on the CPU information.
  • Parallel and asynchronous execution
    Multiple batches can be processed in parallel and asynchronously using multiple GPUs or CPU cores.
  • Dynamic memory usage
    The memory usage changes dynamically depending on the request size while still meeting performance requirements thanks to caching allocators on both CPU and GPU.
  • Lightweight on disk
    Quantization can make the models 4 times smaller on disk with minimal accuracy loss. A full featured Docker image supporting GPU and CPU requires less than 500MB (with CUDA 10.0).
  • Simple integration
    The project has few dependencies and exposes simple APIs in Python and C++ to cover most integration needs.
  • Configurable and interactive decoding
    Advanced decoding features allow autocompleting a partial sequence and returning alternatives at a specific location in the sequence.

Some of these features are difficult to achieve with standard deep learning frameworks and are the motivation for this project.

Installation and usage

CTranslate2 can be installed with pip:

pip install ctranslate2

The Python module is used to convert models and can translate or generate text with few lines of code:

translator = ctranslate2.Translator(translation_model_path)
translator.translate_batch(tokens)

generator = ctranslate2.Generator(generation_model_path)
generator.generate_batch(start_tokens)

See the documentation for more information and examples.

Benchmarks

We translate the En->De test set newstest2014 with multiple models:

  • OpenNMT-tf WMT14: a base Transformer trained with OpenNMT-tf on the WMT14 dataset (4.5M lines)
  • OpenNMT-py WMT14: a base Transformer trained with OpenNMT-py on the WMT14 dataset (4.5M lines)
  • OPUS-MT: a base Transformer trained with Marian on all OPUS data available on 2020-02-26 (81.9M lines)

The benchmark reports the number of target tokens generated per second (higher is better). The results are aggregated over multiple runs. See the benchmark scripts for more details and reproduce these numbers.

Please note that the results presented below are only valid for the configuration used during this benchmark: absolute and relative performance may change with different settings.

CPU

Tokens per second Max. memory BLEU
OpenNMT-tf WMT14 model
OpenNMT-tf 2.25.0 (with TensorFlow 2.8.0) 342.4 2600MB 26.93
OpenNMT-py WMT14 model
OpenNMT-py 2.2.0 (with PyTorch 1.9.1) 458.8 1734MB 26.77
- int8 500.1 1612MB 26.72
CTranslate2 2.13.1 1217.8 1068MB 26.77
- int16 1530.9 989MB 26.82
- int8 1787.3 773MB 26.89
- int8 + vmap 2179.2 789MB 26.62
OPUS-MT model
Marian 1.11.0 756.7 13819MB 27.93
- int16 723.6 10393MB 27.65
- int8 857.3 8169MB 27.27
CTranslate2 2.13.1 993.5 901MB 27.92
- int16 1290.4 921MB 27.51
- int8 1486.5 748MB 27.71

Executed with 8 threads on a c5.metal Amazon EC2 instance equipped with an Intel(R) Xeon(R) Platinum 8275CL CPU.

GPU

Tokens per second Max. GPU memory Max. CPU memory BLEU
OpenNMT-tf WMT14 model
OpenNMT-tf 2.25.0 (with TensorFlow 2.8.0) 1285.7 2666MB 2364MB 26.93
OpenNMT-py WMT14 model
OpenNMT-py 2.2.0 (with PyTorch 1.9.1) 1220.9 3082MB 3900MB 26.77
FasterTransformer 4.0 2950.8 5868MB 2436MB 26.77
- float16 6499.3 3916MB 2423MB 26.83
CTranslate2 2.13.1 3747.1 1264MB 676MB 26.77
- int8 5306.4 976MB 561MB 26.83
- float16 5367.8 816MB 607MB 26.78
- int8 + float16 6158.7 688MB 563MB 26.80
OPUS-MT model
Marian 1.11.0 2221.5 3128MB 1932MB 27.92
- float16 2832.7 2986MB 1713MB 27.93
CTranslate2 2.13.1 3136.3 1200MB 481MB 27.92
- int8 4634.4 1008MB 519MB 27.89
- float16 4708.7 816MB 560MB 27.85
- int8 + float16 5320.3 720MB 515MB 27.81

Executed with CUDA 11 on a g4dn.xlarge Amazon EC2 instance equipped with a NVIDIA T4 GPU (driver version: 470.82.01).

Additional resources

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

ctranslate2-2.17.0-cp310-cp310-win_amd64.whl (14.4 MB view details)

Uploaded CPython 3.10Windows x86-64

ctranslate2-2.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (19.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

ctranslate2-2.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

ctranslate2-2.17.0-cp310-cp310-macosx_11_0_arm64.whl (612.3 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

ctranslate2-2.17.0-cp310-cp310-macosx_10_9_x86_64.whl (5.4 MB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

ctranslate2-2.17.0-cp39-cp39-win_amd64.whl (14.4 MB view details)

Uploaded CPython 3.9Windows x86-64

ctranslate2-2.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (19.0 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

ctranslate2-2.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

ctranslate2-2.17.0-cp39-cp39-macosx_11_0_arm64.whl (612.5 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

ctranslate2-2.17.0-cp39-cp39-macosx_10_9_x86_64.whl (5.4 MB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

ctranslate2-2.17.0-cp38-cp38-win_amd64.whl (14.4 MB view details)

Uploaded CPython 3.8Windows x86-64

ctranslate2-2.17.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (19.0 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

ctranslate2-2.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

ctranslate2-2.17.0-cp38-cp38-macosx_11_0_arm64.whl (612.3 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

ctranslate2-2.17.0-cp38-cp38-macosx_10_9_x86_64.whl (5.4 MB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

ctranslate2-2.17.0-cp37-cp37m-win_amd64.whl (14.4 MB view details)

Uploaded CPython 3.7mWindows x86-64

ctranslate2-2.17.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (19.1 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

ctranslate2-2.17.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.6 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ ARM64

ctranslate2-2.17.0-cp37-cp37m-macosx_10_9_x86_64.whl (5.4 MB view details)

Uploaded CPython 3.7mmacOS 10.9+ x86-64

ctranslate2-2.17.0-cp36-cp36m-win_amd64.whl (14.4 MB view details)

Uploaded CPython 3.6mWindows x86-64

ctranslate2-2.17.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (19.1 MB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ x86-64

ctranslate2-2.17.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.6 MB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ ARM64

ctranslate2-2.17.0-cp36-cp36m-macosx_10_9_x86_64.whl (5.4 MB view details)

Uploaded CPython 3.6mmacOS 10.9+ x86-64

File details

Details for the file ctranslate2-2.17.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for ctranslate2-2.17.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 5c0df9d8862131b8eab894e36071bf63b3ed15a6bbb96fceaa355df17cedd765
MD5 0521106aff00b448960bd4914ef32805
BLAKE2b-256 454f8a92971bc2ef6d4f0f64eff2a914fb5aa59307ab5bea34a4e2d4a3cf22a8

See more details on using hashes here.

File details

Details for the file ctranslate2-2.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ctranslate2-2.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 487af16d02b84fdd1c01abb396c0cad8cb2fc3d6cbf28fb1ce679b61d712e1d3
MD5 25e256ae519038276b5aecf13574887e
BLAKE2b-256 735df725e17b97216dc8125e922331932043b5ea39ad50972c91a90211fa0101

See more details on using hashes here.

File details

Details for the file ctranslate2-2.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ctranslate2-2.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 285c63b060a0d8bbd0bb94f2dd3ed8d7bfe28d61d04287cfa9c80a8cd5d9e025
MD5 c16f2d771e9e090eb8170344e77c53a2
BLAKE2b-256 4b71fabc8dd53c42333e6c229442a72e266a5da7bc5fa8bbd8daa4e031c92fb4

See more details on using hashes here.

File details

Details for the file ctranslate2-2.17.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ctranslate2-2.17.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ec405d33f019f1c853e5aa98d7be0e1dda701a8f6d0e28ad39ff42305d16d4f5
MD5 66a5e0ed84ed33a4a9ebc54056c5319c
BLAKE2b-256 6518e006655f04e66f398155324457bc4596faf24c6b576dae205eada4407fc1

See more details on using hashes here.

File details

Details for the file ctranslate2-2.17.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for ctranslate2-2.17.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3c1cd0b8e0e18e9fd91e954559fdd0070805f37d64458505add00914b5a58173
MD5 24a556fc48648bd289c19278037848a9
BLAKE2b-256 327685ac3e5eba751b91b1c1083f3305adf5e1f1f75c567d0ace5e2fdd0f0c50

See more details on using hashes here.

File details

Details for the file ctranslate2-2.17.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: ctranslate2-2.17.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 14.4 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.12

File hashes

Hashes for ctranslate2-2.17.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 35b7e39134681f4bcb876e0984804cb6092c38e2002c3311b4634094351508ab
MD5 d42a6148625e331bdb6a078a04034c5a
BLAKE2b-256 5a77812dd9776f12a9745f5cb86e9d58465a467a9e014a743e63587ee0844f34

See more details on using hashes here.

File details

Details for the file ctranslate2-2.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ctranslate2-2.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c9cb5f190f337cf1b8cccb003e96f6be551a92cb6e295c77ad4634fa15aa92ac
MD5 ee679a49199c0c0218f29415905bd2ce
BLAKE2b-256 ef9c5c04827b57925dc61d8fad6aaa0683dc3dd2c3edcadb554d4a6bc3ca8ff8

See more details on using hashes here.

File details

Details for the file ctranslate2-2.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ctranslate2-2.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f462164ac51874d7b2a5df7f0ef6e251d77b5c9db1786c8afc208c092673a6b3
MD5 f08a0d1c6b262d7fa831d081ab1426c7
BLAKE2b-256 c19479d6971d909f9e7f2a6200ab8895743284c6d3edfda5236ada0e7b4ca704

See more details on using hashes here.

File details

Details for the file ctranslate2-2.17.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ctranslate2-2.17.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1af9f9385cd12b13afd19bb4aefd31b88b2554cd222a1f8f93494daa4b99127a
MD5 d87f35db16d1abb0d65e7b182cf0c500
BLAKE2b-256 c11c0ba827c63888becc854c741afc9653ee23e66a9dea55dd384dcbfe675d6e

See more details on using hashes here.

File details

Details for the file ctranslate2-2.17.0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for ctranslate2-2.17.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 01a8387ecbd64f11ad3a9c7c25e64161013ca1ea6a307339541d21dc14360b98
MD5 19f897deeb9957de998251fb006acca5
BLAKE2b-256 05be687f602d2aabfb3ae3b9b2b830f35ef8b05c97780faa4004462aa270d6c6

See more details on using hashes here.

File details

Details for the file ctranslate2-2.17.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: ctranslate2-2.17.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 14.4 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.12

File hashes

Hashes for ctranslate2-2.17.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 adfda6d61d05efa064514c06b1ed1bad936852df06fddcc19760d48179bc7482
MD5 61b46ebe5fa2069101e8e3fdcadd063e
BLAKE2b-256 d1f18cab4c054bcde197e47d95f77fff6e0c636c2ae5d017c49e2dac419d9235

See more details on using hashes here.

File details

Details for the file ctranslate2-2.17.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ctranslate2-2.17.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2d410c36a9b813c96419966a7c500aa1221a2516190215ed0965d357844cdcdd
MD5 5768bcfc874c63f5fc1742204aca79ed
BLAKE2b-256 c6be9054ae968188f27016db33545eed3bd17db65767d8efbf651bf27b69fe5c

See more details on using hashes here.

File details

Details for the file ctranslate2-2.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ctranslate2-2.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7a3cdc837f837545a974dc0c4eab9dcfd7efe02dd0be9267da1ebf6fc61438a7
MD5 005056952aad211c718d4cf8fd00e24e
BLAKE2b-256 ea3c5edbe81b28204bb33d97d93fc9e02280be0cff173b82accfa1b47c34225c

See more details on using hashes here.

File details

Details for the file ctranslate2-2.17.0-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ctranslate2-2.17.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0ac288fd92c62d97990b84e1cf5bdeb6a847dde4d1f072891362899b60da4b17
MD5 fa0033eeef53aea1864e44cf51bc5d41
BLAKE2b-256 aa3af33c413be0d454c9381e24e92e39f5dd2f8b1692d501a0c5b498267b9d80

See more details on using hashes here.

File details

Details for the file ctranslate2-2.17.0-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for ctranslate2-2.17.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6bd67ed0c724923483a78d5e1bfd34eb1b15769bc462d52fa3519930ae7b3dcf
MD5 d44dc49f95ce8b356cad8d3170c18455
BLAKE2b-256 63b700e32c0a588d6e69a0b940efe3eab4de38058562d1fa47f01adad56e4a14

See more details on using hashes here.

File details

Details for the file ctranslate2-2.17.0-cp37-cp37m-win_amd64.whl.

File metadata

File hashes

Hashes for ctranslate2-2.17.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 e061cd9dfea14acbedf90c208fc83dbeffbe8d0acd8ed79859d2782a6026eed4
MD5 751001853600d41b2651b4a3eada4a11
BLAKE2b-256 d11ca7fcb5a60899419db09af14d9b28d5740faa33432d147c93e16e5f29c943

See more details on using hashes here.

File details

Details for the file ctranslate2-2.17.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ctranslate2-2.17.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a306c2824740fbc415f1f09af7a01e0fd2bbe0bc6f31252c76e1467ba923a38c
MD5 b46218e69ae00eb4282ba90c39a4ec29
BLAKE2b-256 77948491e66b83581b14c655491b51727de2e886eb4ee8dcfb757b6735ff48fd

See more details on using hashes here.

File details

Details for the file ctranslate2-2.17.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ctranslate2-2.17.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 99262922d6479fd29b01d4509718cd095ea0cb87a3bb6cb535f1d74476d21d44
MD5 2689c2a013cc259d69d425e81fbbe39e
BLAKE2b-256 fbf7276f5d23879cb20a8d0b405dca492921b2a7cd5d66716ed8082a31da8e9d

See more details on using hashes here.

File details

Details for the file ctranslate2-2.17.0-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for ctranslate2-2.17.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8e8c87e47dfe96f1009ad178f6110a493fb39e99a9b227eb78a2c6f03840551c
MD5 122ed3ada00943eed2a29a18a57ee2ac
BLAKE2b-256 f6d9f977a4eb4638595b9351b6c3f02cedf5cd8c3039a752b6ace99bea798436

See more details on using hashes here.

File details

Details for the file ctranslate2-2.17.0-cp36-cp36m-win_amd64.whl.

File metadata

File hashes

Hashes for ctranslate2-2.17.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 19c388743882054ce7759b69adddd730397116b59f026952725878eec8950723
MD5 0167ed31cbe32175997f47900f13776e
BLAKE2b-256 30fa85583573c018a0d3b124c17742656f7b0dbb0d408794fff2cd42ee88174a

See more details on using hashes here.

File details

Details for the file ctranslate2-2.17.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ctranslate2-2.17.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f4d0cd0e2d6a7d52284bf007b81969de328f46bcc09482c28fb44be5a0359c50
MD5 0440992a2cc8478c6c3e3d3a09652422
BLAKE2b-256 d936610bb17239a677b67ad34eb1dae7a6cccac22b04ad7539ec22a71086bab6

See more details on using hashes here.

File details

Details for the file ctranslate2-2.17.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ctranslate2-2.17.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 110be76c7a22dcdcd774e9565bd9edd1c24a954c33801bfbc954c78177d0554e
MD5 eec1716b152871a557dd62f2d28bd47f
BLAKE2b-256 c010ef6cbb02af87de5987bf1c87b0046f70bf93e0d43d90c001f2d84d7867c0

See more details on using hashes here.

File details

Details for the file ctranslate2-2.17.0-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for ctranslate2-2.17.0-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7c7a32d5205846cf0f3e588ac3774aa3e8031473763904627dc57b693e3abba1
MD5 1b1b4f0cae87d36ebdae4b4aa1b33fc1
BLAKE2b-256 c7116305e1cb9083df69a52ada9d6d6dacc740e49a605e671dbb801d43351c33

See more details on using hashes here.

Supported by

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