-
Notifications
You must be signed in to change notification settings - Fork 748
105 lines (94 loc) · 2.88 KB
/
benchmarks.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
name: ANN benchmarks
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
# Cancel the workflow for the previous commit when the new commit is pushed.
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: True
jobs:
unit-tests:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3 # Pull the repository
- run: sudo apt-get update && sudo apt-get install -y libhdf5-dev python3-numpy python3-scipy python3-matplotlib python3-sklearn
- run: pip3 install --quiet -r requirements.txt
- run: pytest
run-benchmarks:
runs-on: ubuntu-22.04
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
dataset: [random-xs-20-angular]
library:
- annoy
- balltree
- bruteforce
- ckdtree
- descartes
- diskann
- dolphinnpy
- elasticsearch
- elastiknn
- faiss
- flann
- glass
- hnswlib
- kdtree
- luceneknn
- milvus
- mrpt
- nndescent
- n2
- nmslib
- onng_ngt
- opensearchknn
- panng_ngt
- pg_embedding
- pgvector
- pgvecto_rs
- pynndescent
- redisearch
- qdrant
- qg_ngt
- qsg_ngt
- scann
- sptag
- tinyknn
- vald
- vearch
- vespa
- voyager
- weaviate
include:
- library: pynndescent
dataset: random-xs-16-hamming
- library: datasketch
dataset: random-s-jaccard
- library: pynndescent
dataset: random-s-jaccard
name: ${{ matrix.library }} (${{ matrix.dataset }})
env:
LIBRARY: ${{ matrix.library }}
DATASET: ${{ matrix.dataset }}
steps:
- uses: actions/checkout@v3 # Pull the repository
- name: Install OS Dependencies
run: sudo apt-get update && sudo apt-get install -y libhdf5-dev python3-numpy python3-scipy python3-matplotlib python3-sklearn
- name: Install Project Dependencies
run: pip3 install --quiet -r requirements.txt
- name: Build Library Docker Image
run: python3 install.py
- name: Run the benchmark
run: |
python3 run.py --docker-tag ann-benchmarks-${LIBRARY} --max-n-algorithms 3 --runs 2 --dataset $DATASET --run-disabled --timeout 300
python3 run.py --docker-tag ann-benchmarks-${LIBRARY} --max-n-algorithms 3 --runs 2 --dataset $DATASET --run-disabled --batch --timeout 300
sudo chmod -R 777 results/
python3 plot.py --dataset $DATASET --output plot.png
python3 plot.py --dataset $DATASET --output plot-batch.png --batch
python3 data_export.py --out test.csv
python3 create_website.py --outputdir . --scatter --latex