Skip to main content

A library for efficient similarity search and clustering of dense vectors.

Project description

faiss-wheels

This repository is based on kyamagu/faiss-wheels.

PyPI PyPI

Overview

This repository provides scripts to build gpu wheels for the faiss library. Distribute the faiss-gpu-cuXX package to PyPI using the contents of this repository.

  • Builds CUDA 11.8+/CUDA 12.1+ compatible wheels.
    • Support Pascal~Hopper architecture GPU (Compute Capability 6.0~9.0).
    • Dynamically linked to CUDA Runtime and cuBLAS libraries published in PyPI.
  • Bundles OpenBLAS in Linux.

Installation

The faiss-gpu-cu11 and faiss-gpu-cu12 wheels built for CUDA11 and CUDA12 are available on PyPI. Install one or the other depending on your environment. These wheels dynamically link to the CUDA Runtime and cuBLAS shared libraries. This approach helps to reduce the file size of the wheels.

faiss-gpu-cuXX(XX=11 or 12) has dependencies on CUDA Runtime (nvidia-cuda-runtime-cuXX) and cuBLAS (nvidia-cublas-cuXX) released by PyPI, and links shared libraries in these packages. Therefore, there is no need to install CUDA on your host(system).

Caution

The published faiss-gpu-cuXX package requires proper setup of system, hardware, and other dependencies that cannot be managed by the package manager (e.g. pip). It is the responsibility of the user of this package to prepare an environment suitable for its operation.

Here are the main requirements that such an environment should meet (Other conditions may be hidden.)

  1. the host environment must have a CUDA-compatible Nvidia Driver installed, as required by faiss-gpu-cuXX (see below for details)
  2. the GPU architecture of the execution environment must be compatible with faiss-gpu-cuXX (see below for details)
  3. if you install faiss-gpu-cuXX and another library (e.g. Pytorch) that uses dynamically linked CUDA in the same environment, they must be linked to the same CUDA shared library.

Wheel for CUDA12

faiss-gpu-cu12 is a package built using CUDA Toolkit 12.1. The following command will install faiss and the CUDA Runtime and cuBLAS for CUDA 12.1 used at build time.

# install CUDA 12.1 at the same time
pip install faiss-gpu-cu12[fix-cuda]

Requirements

  • OS: Linux
    • arch: x86_64
    • glibc >=2.28
  • Nvidia driver: >=R530 (specify fix-cuda extra during installation)
  • GPU architectures: Pascal~Hopper (Compute Capability: 6.0~9.0)

Advanced

The faiss-gpu-cu12 package (the binaries contained in it) is minor version compatible with CUDA and will work dynamically linked with CUDA 12.X (X>=1).

Installation of the CUDA runtime and cuBLAS is allowed to the extent that minor version compatibility is maintained by excluding the fix-cuda extra.

This is useful when coexisting this package with a package that has a dependency on the CUDA Toolkit used at build time, such as Pytorch or Tensorflow.

The installation commands are as follows.

# install CUDA 12.X(X>=1) at the same time
pip install faiss-gpu-cu12

If you install the faiss-gpu-cuXX package in this way, CUDA may be updated due to lock file updates, etc.

Please note that this may cause an error depending on the compatibility with the driver. (Basically, to use a new CUDA, the driver must also be updated).

Wheel for CUDA11

faiss-gpu-cu11 is a package built using CUDA Toolkit 11.8. The following command will install faiss and the CUDA Runtime and cuBLAS for CUDA 11.8 used at build time.

# install CUDA 11.8 at the same time
pip install faiss-gpu-cu11[fix-cuda]

Requirements

  • OS: Linux
    • arch: x86_64
    • glibc >=2.28
  • Nvidia driver: >=R520 (specify fix-cuda extra during installation)
  • GPU architectures: Pascal~Hopper (Compute Capability: 6.0~9.0)

Advanced

Since CUDA 11.8 is the final version of the CUDA 11 series, the results are the same with or without the fix-cuda extras.

# install CUDA 11.X(X>=8) at the same time
pip install faiss-gpu-cu11

Versioning rule

Packages to be published from this repository are "{A}.{B}.{C}.{D}" format. A, B, and C are the versions of faiss used for builds. D is the version used to manage changes specific to this repository.

Usage

Build wheels

You can build faiss-gpu-cu11 and faiss-gpu-cu12 wheels using dagger.

# build wheel for CUDA 11.8
dagger call build-gpu-wheels --cuda-major-version 11 --host-directory=.:build-view --output ./wheelhouse/gpu/cuda11

# build wheel for CUDA 12.1
dagger call build-gpu-wheels --cuda-major-version 12 --host-directory=.:build-view --output ./wheelhouse/gpu/cuda12

When executed, a wheel is created under "{repository root}/wheelhouse/gpu/cuXX".

Requirements

  • OS: Linux
    • arch: x86_64
  • Dagger: v0.13.5

Test wheels

You can test faiss-gpu-cu11 and faiss-gpu-cu12 wheels using dagger.

# test for faiss-gpu-cu11 wheels
_EXPERIMENTAL_DAGGER_GPU_SUPPORT=1 dagger call test-gpu-wheels --cuda-major-version 11 --host-directory=.:test-view --wheel-directory=./wheelhouse/gpu/cuda11/

# test for faiss-gpu-cu12 wheels
_EXPERIMENTAL_DAGGER_GPU_SUPPORT=1 dagger call test-gpu-wheels --cuda-major-version 12 --host-directory=.:test-view --wheel-directory=./wheelhouse/gpu/cuda12/

Requirements

  • OS: Linux
    • arch: x86_64
  • Dagger: v0.13.5
  • Nvidia container toolkit
  • Nvidia driver: >=R530

Build & Test wheels

You can build andtest faiss-gpu-cu11 and faiss-gpu-cu12 wheels using dagger.

# test for faiss-gpu-cu11 & cu12 wheels
_EXPERIMENTAL_DAGGER_GPU_SUPPORT=1 dagger call faiss-gpu-ci --cuda-major-versions 11 --cuda-major-versions 12 --host-directory=.:ci-view --output=./wheelhouse

Requirements

  • OS: Linux
    • arch: x86_64
  • Dagger: v0.13.5
  • Nvidia container toolkit
  • Nvidia driver: >=R530

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

faiss_gpu_cu12-1.9.0.0-cp312-cp312-manylinux_2_28_x86_64.whl (66.3 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.28+ x86-64

faiss_gpu_cu12-1.9.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (65.3 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

faiss_gpu_cu12-1.9.0.0-cp311-cp311-manylinux_2_28_x86_64.whl (66.3 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ x86-64

faiss_gpu_cu12-1.9.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (65.3 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

faiss_gpu_cu12-1.9.0.0-cp310-cp310-manylinux_2_28_x86_64.whl (66.3 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ x86-64

faiss_gpu_cu12-1.9.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (65.3 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

faiss_gpu_cu12-1.9.0.0-cp39-cp39-manylinux_2_28_x86_64.whl (66.3 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.28+ x86-64

faiss_gpu_cu12-1.9.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (65.3 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

File details

Details for the file faiss_gpu_cu12-1.9.0.0-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for faiss_gpu_cu12-1.9.0.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 38e7b4a69bb1ba26e315efe5fc9d265fd409e71d62d34689cc0de35ca3c61b89
MD5 23cb7d07c6fca0979c75233327f7331d
BLAKE2b-256 cbed99b3cb6489dd0f174fa5bf7ed79f0bf5ef619663939186c2fb35975882af

See more details on using hashes here.

File details

Details for the file faiss_gpu_cu12-1.9.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for faiss_gpu_cu12-1.9.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f32d4b59f6e059360603f1c5674c0a28fe9718561afe1bffddc09d06806279cd
MD5 984226ec637fd2a78399a681751f5e15
BLAKE2b-256 f1c36da9b64561fb171db4b05c28b0148351db0150c6fdfa089658cd57c58ab9

See more details on using hashes here.

File details

Details for the file faiss_gpu_cu12-1.9.0.0-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for faiss_gpu_cu12-1.9.0.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b587397afb18f48dad3083858ef5f21c854c084ddcd27b8fd09bccf62a0c80d0
MD5 0ca3380ca7f3d8f366d119221b4ad45b
BLAKE2b-256 b4dfa827a848648718dfd53dd7a848584d02a4bf8da4c92e6b83dc29fd2544c6

See more details on using hashes here.

File details

Details for the file faiss_gpu_cu12-1.9.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for faiss_gpu_cu12-1.9.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 499ef1ba499db19ce1b4423f5268c0194a1a8dab87624012e0cf68cb39783949
MD5 249a023dd5583a2924eac562c16b9ada
BLAKE2b-256 259366a3e9eac5ece9e0f4d776b8040620e3b80dc2b2b334486afa85d811d5ab

See more details on using hashes here.

File details

Details for the file faiss_gpu_cu12-1.9.0.0-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for faiss_gpu_cu12-1.9.0.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3eaa508ecc8facf42a0bfa087ad30f0a7fe8044c63e051ec6b3f97b0b88476a7
MD5 029530bab0e50eed283acfef4e05f30b
BLAKE2b-256 793b720652c22248f35ff3c26b9817b90d9ae5f792e26ae87c8d90b9e9a0527f

See more details on using hashes here.

File details

Details for the file faiss_gpu_cu12-1.9.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for faiss_gpu_cu12-1.9.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0b1173f9bfd340f278e4f480a8cfce43e6c81aa3966d2113d6b4069ac1aeb3aa
MD5 9bfa4edd3e3a136ce68a9797a7e6f3cd
BLAKE2b-256 21f0fafd4965c213307f243395d1d8b17d720059cc3daa18dca0371e416e2359

See more details on using hashes here.

File details

Details for the file faiss_gpu_cu12-1.9.0.0-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for faiss_gpu_cu12-1.9.0.0-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5c00d3b24fd81204964c5cc5585bff7f92c9c5b4392c15dbcf190e9e80eee2ff
MD5 8e7a61825a4cd3727882927f4e08b3da
BLAKE2b-256 fea744f443032cf7fdb182cfffc119ae9c050cb2c8a88d47f5dfcd2171bb3663

See more details on using hashes here.

File details

Details for the file faiss_gpu_cu12-1.9.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for faiss_gpu_cu12-1.9.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e3e8b0ac9fc904664b3dc86d1135ae059ea8784881c1ada9b7cd4742edc2b61f
MD5 1ce238944f8e31b970c1d7b037b550ec
BLAKE2b-256 c4f9eca6071e59e3cba6653c56eed98ae15734995df13f98a9d4fa3148fcfcc2

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