usearch binary
1.0.0
이 저장소에는 Huggingf
결과를 보려면 bench.ipynb 를 확인하십시오. 결과를 복제하려면 먼저 데이터를 다운로드하십시오.
$ pip install -r requirements.txt
$ python download.py
$ ls -alh mixedbread | head -n 1
> total 15G
$ ls -alh cohere | head -n 1
> total 15G두 경우 모두, 임베딩은 1024 치수를 가지며, 각각 단일 비트로 표현되며 128 바이트 벡터로 가득 차 있습니다. 스크립트를 실행하는 데 32GB의 RAM이 권장됩니다.
임베딩 길이를 아는 것은 최적화에 매우 편리합니다. 임베딩의 길이가 1024 비트 인 경우 전체 벡터를 저장하려면 2 ZMM 레지스터 만 있으면됩니다. 우리는 -loops for 필요로하지 않으면 전체 작업이 풀리고 상실 될 수 있습니다.
inline uint64_t hamming_distance ( uint8_t const * first_vector , uint8_t const * second_vector ) {
__m512i const first_start = _mm512_loadu_si512 (( __m512i const * )( first_vector ));
__m512i const first_end = _mm512_loadu_si512 (( __m512i const * )( first_vector + 64 ));
__m512i const second_start = _mm512_loadu_si512 (( __m512i const * )( second_vector ));
__m512i const second_end = _mm512_loadu_si512 (( __m512i const * )( second_vector + 64 ));
__m512i const differences_start = _mm512_xor_epi64 ( first_start , second_start );
__m512i const differences_end = _mm512_xor_epi64 ( first_end , second_end );
__m512i const population_start = _mm512_popcnt_epi64 ( differences_start );
__m512i const population_end = _mm512_popcnt_epi64 ( differences_end );
__m512i const population = _mm512_add_epi64 ( population_start , population_end );
return _mm512_reduce_add_epi64 ( population );
}커널 벤치 마크를 실행하려면 다음 명령을 사용하십시오.
$ python kernel.py실제 데이터에 대한 벤치 마크를 실행하려면 :
$ python kernels.py --dir cohere --limit 1e6