ing-bank/sparse_dot_topn
Python package to accelerate the sparse matrix multiplication and top-n similarity selection
What it solves
가장 적합한 매칭 항목을 찾기 위해 매우 큰 특징 벡터를 비교할 때는 보통 희소 행렬 곱셈을 수행한 후 Top-n 결과 선택을 수행해야 합니다. 표준 방식은 대규모 데이터셋을 다룰 때 메모리 집약적이고 속도가 느려질 수 있습니다. 이 프로젝트는 Top-n 선택 과정을 곱셈 과정에 직접 통합하여 메모리 사용량을 줄이고 속도를 높이는 고성능, 병렬화된 구현체를 제공합니다.
How it works
이 라이브러리는 OpenMP를 사용하여 병렬화를 수행하는 C++ 확장 기능을 사용합니다. CSR, CSC, 및 COO 희소 행렬 형식을 지원합니다 (COO, CSC는 처리 과정에서 CSR으로 변환환됩니다). 내부적으로는 max-heap을 사용하여 Top-n 값을 수집하여, 선택의 복잡도를 $O(n ext{ columns})$에서 $O(top ext{-}n)$에로써 ลดosa(n ext{ columns})$에서 $O(top ext{-}n)$으로 낮춥니다. 사용자는 임계값을 적용하여 낮은 값의 결과를 필터링하거나, 메모리 사전 할당을 최적화하기 위해 예상 밀도를 지정할 수 있습니다.
Who it’s for
대규모 희소 데이터셋(예: TF-IDF 행렬)을 다루며, Top-k 가장 유사한 항목을 효율적으로 검색하거나 대규모 규모에서 고차원 벡터 매칭을 수행해야 하는 데이터 과학자 및 엔지니어.
Highlights
- Integrated Top-N Selection: 곱셈과 선택을 과정을 一ขั้นตอน(one step)를 통해 통합하여 메모리를 절약합니다.\n* Parallelized Execution: OpenMP를 통해 여러 CPU 코어를 활용합니다.
- Flexible Formats: CSR, CSC, 및 COO 형식에서 32-bit 및 64-bit 정수와 부동 소수점 수를 지원합니다.
- Cluster Distribution:
zip_sp_matmul_topn과 같은 유틸리티를 포함하여, 대규모 행렬(10M+ 행)을 클러스터에 분산시키고 결과를 병합하는 기능을 제공합니다. - High Performance: 특정 하드웨어(Apple M2 Pro)에서 대규모 TF-IDF 행렬에 대해 표준 방식보다 최대 6배 더 빠릅니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트