Commit Graph

7 Commits (e59d8c35ea0ec3561aad227fb77b07b4bfbb1e05)

Author SHA1 Message Date
Tarang Jain 27b1055cc6 Integrate IVF-PQ from RAFT (#3044)
Summary:
Imports changes from https://github.com/facebookresearch/faiss/issues/3133 and https://github.com/facebookresearch/faiss/issues/3171. So this single PR adds all the changes together.

- [x] Implement RaftIVFPQ class
- [x] Update gtests to test correctness with RAFT enabled
- [x] All googleTests for RAFT enabled IVFPQ pass
- [x] Move some common functions in RaftIVFFlat and RaftIVFPQ to helper: RaftUtils.h
- [x] update Quantizer retroactively after building RAFT index -- both IVFFlat and IVFPQ
- [x] resolve failing LargeBatch (classical GPU)
- [x] add checks for Pascal deprecation
- [x] apply RMM changes from https://github.com/facebookresearch/faiss/issues/3171
- [x] apply robertmaynard's changes from https://github.com/facebookresearch/faiss/issues/3133

Pull Request resolved: https://github.com/facebookresearch/faiss/pull/3044

Reviewed By: junjieqi

Differential Revision: D51074065

Pulled By: algoriddle

fbshipit-source-id: 6871257921bcaff2064a20637e2ed358acbdc363
2024-02-21 06:41:08 -08:00
Gergely Szilvasy 0c07a114ad fix raft contbuild and switch to libraft 23.12 (#3116)
Summary: Pull Request resolved: https://github.com/facebookresearch/faiss/pull/3116

Test Plan: https://app.circleci.com/pipelines/github/facebookresearch/faiss/4839/workflows/cfd84a94-ca60-4128-96e6-db0f5afc69c4

Reviewed By: mdouze

Differential Revision: D50897934

Pulled By: algoriddle

fbshipit-source-id: 1422be39d640a2aec3ab6b4c68d3ef54900b5ba2
2023-11-01 14:37:21 -07:00
Corey J. Nolet edcf7438bb Integrate IVF-Flat from RAFT (#2521)
Summary:
This is a design proposal that demonstrates an approach to enabling optional support for [RAFT](https://github.com/rapidsai/raft) versions of IVF PQ and IVF Flat (and brute force w/ fused k-selection when k <= 64). There are still a few open issues and design discussions needed for the new RAFT index types to support the full range of features of that FAISS' current gpu index types.

Checklist for the integration todos:
- [x] Rebase on current `main` branch
- [X] The raft handle has been plugged directly into the StandardGpuResources
- [X] `FlatIndex` passing Googletests
- [x] Use `CodePacker` to support `copyFrom()` and `copyTo()`
- [X] `IVF-flat passing Googletests
- [ ] Raise appropriate exceptions for operations which are not yet supported by RAFT

Additional features we've discussed:
- [x] Separate IVF lists into individual memory chunks
- [ ] Saving/loading

To build FAISS w/ optional RAFT support:
```
mkdir build
cd build
cmake ../ -DFAISS_ENABLE_RAFT=ON -DFAISS_ENABLE_GPU=ON
make -j
```

For development/testing, we've also supplied a bash script to make things easier: `build.sh`

Below is a benchmark comparing the training of IVF Flat indices for RAFT and FAISS:
![image](https://user-images.githubusercontent.com/1242464/194944737-8b808f11-e28e-4556-82d1-1ea4b0707283.png)

The benchmark was produced using Googlebench in [this](https://github.com/tfeher/raft/tree/raft_faiss_bench) RAFT fork. We're going to provide benchmarks for the queries as well. There are still a couple bottlenecks to be removed in the IVF-Flat training implementation and we'll update the current benchmark when ready.

Pull Request resolved: https://github.com/facebookresearch/faiss/pull/2521

Test Plan: `buck test mode/debuck test mode/dev-nosan //faiss/gpu/test:test_gpu_index_ivfflat`

Reviewed By: algoriddle

Differential Revision: D49118319

Pulled By: mdouze

fbshipit-source-id: 5916108bc27154acf7c92021ba579a6ca85d730b
2023-10-04 23:42:30 -07:00
Gergely Szilvasy da16d9d3ca simplify raft build (#2983)
Summary: Pull Request resolved: https://github.com/facebookresearch/faiss/pull/2983

Reviewed By: mdouze

Differential Revision: D48063550

Pulled By: algoriddle

fbshipit-source-id: c67e13cec97f4de8cc30cae47186593dbe0bdadb
2023-08-04 06:52:07 -07:00
Corey J. Nolet 7bf714928c Adding `libraft` dependency to speed up compile times with `USE_RAFT` (#2958)
Summary: Pull Request resolved: https://github.com/facebookresearch/faiss/pull/2958

Reviewed By: mlomeli1, mdouze

Differential Revision: D47678341

Pulled By: algoriddle

fbshipit-source-id: 2ab2d0e8349498faa0fc59ac9800da29a201c766
2023-07-31 07:37:27 -07:00
Alexandr Guzhva 1fb696838e upgrade raft version to 23.06 (#2847)
Summary:
Pull Request resolved: https://github.com/facebookresearch/faiss/pull/2847

Addresses https://github.com/facebookresearch/faiss/issues/2844

Reviewed By: algoriddle

Differential Revision: D45569204

fbshipit-source-id: 75c00ebb6d835107f8ba029b4e98ae247fff77a6
2023-05-04 10:23:46 -07:00
Corey J. Nolet 4f574d59b0 Integrate RAFT FlatIndex / Distances (#2707)
Summary:
I've broken out the FlatIndex / Distances changes from https://github.com/facebookresearch/faiss/issues/2521 into a separate PR to make things a litle easier to review. This does also include a couple other minor changes to the IVF Flat index which I used to make it easier to dispatch to the RAFT version. I can revert that change too if desired.

Pull Request resolved: https://github.com/facebookresearch/faiss/pull/2707

Reviewed By: wickedfoo

Differential Revision: D44758912

Pulled By: algoriddle

fbshipit-source-id: b2544990b4e941a2558f5004bceec4af4fa1ad09
2023-05-03 13:13:45 -07:00