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
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