Installation & Setup

Thinc is compatible with 64-bit CPython 3.6+ and runs on Unix/Linux, macOS/OS X and Windows. The latest releases are available from pip and conda.

pippip install thinc
condaconda install -c conda-forge thinc

Extended installation

CUDA:
Libraries:
Install commandpip install thinc

If you know your CUDA version, using the more explicit specifier allows cupy to be installed from a wheel, saving some compilation time. Once you have a GPU-enabled installation, the best way to activate it is to call prefer_gpu (will use GPU if available) or require_gpu (will raise an error if no GPU is available).

from thinc.api import prefer_gpu
is_gpu = prefer_gpu()

Using build constraints when compiling from source

If you install Thinc from source or with pip for platforms where there are not binary wheels on PyPI, you may need to use build constraints if any package in your environment requires an older version of numpy.

If numpy gets downgraded from the most recent release at any point after you’ve compiled thinc, you might see an error that looks like this:

numpy.ndarray size changed, may indicate binary incompatibility.

To fix this, create a new virtual environment and install thinc and all of its dependencies using build constraints. Build constraints specify an older version of numpy that is only used while compiling thinc, and then your runtime environment can use any newer version of numpy and still be compatible. In addition, use --no-cache-dir to ignore any previously cached wheels so that all relevant packages are recompiled from scratch:

PIP_CONSTRAINT=https://raw.githubusercontent.com/explosion/thinc/master/build-constraints.txt \
pip install thinc --no-cache-dir

Our build constraints currently specify the oldest supported numpy available on PyPI for x86_64 and aarch64. Depending on your platform and environment, you may want to customize the specific versions of numpy. For other platforms, you can have a look at SciPy’s oldest-supported-numpy package to see what the oldest recommended versions of numpy are.

(Warning: don’t use pip install -c constraints.txt instead of PIP_CONSTRAINT, since this isn’t applied to the isolated build environments.)


Set up static type checking

Thinc makes extensive use of type hints and includes various custom types for input and output types, like arrays of different shapes. This lets you type check your code and model definitions, and will show you errors if your inputs and outputs don’t match, greatly reducing time spent debugging. To use type checking, you can install mypy alongside Thinc. If you’re using an editor like Visual Studio Code, you can also enable mypy linting to get real-time feedback as you write code. For more details, check out the docs on using type checking.

pippip install mypy
mypy.ini[mypy]
plugins = thinc.mypy
Screenshot of mypy linting in Visual Studio Code
Screenshot of mypy linting in Visual Studio Code