ing-bank/sparse_dot_topn
Python package to accelerate the sparse matrix multiplication and top-n similarity selection
What it solves
比较非常大的特征向量以寻找最佳匹配项时,通常需要执行稀疏矩阵乘法,随后进行前 n 个结果的选择。标准方法在处理海量数据集时,可能会非常耗费内存且速度缓慢。本项目提供了一个高性能、并行化的实现,将前 n 个结果的选择直接集成到乘法过程中,以减少内存占用并提高速度。
How it works
该库使用带有 OpenMP 并行化的 C++ 扩展。它支持 CSR, CSC, 和 COO 稀疏矩阵格式(将后两者转换为 CSR 以进行处理)。在内部,它采用 max-heap(最大堆积)来收集前 n 个值,将选择的复杂度从 $O(n ext{ columns})$ 降低至 $O(top ext{-}n)$。用户也可以应用一个阈值来过滤掉低值结果,或指定一个预期的密度来优化内存预分配。
Who it’s for
处理大规模稀疏数据集(例如 TF-IDF 矩阵)的数据科学家和工程师,他们需要高效地检索 Top-k 最相似的项,或是在大规模尺度下进行高维向量特征匹配。
Highlights
- Integrated Top-N Selection: 集成了前 n 个结果的选择功能,将乘法与选择一步完成以节省内存。
- Parallelized Execution: 通过 OpenMP 实现并行化执行。
- Flexible Formats: Supports 32-bit 和 64-bit 整数与浮点数,支持 CSR, CSC, 和 COO 格式。
- Cluster Distribution: 包含如
zip_sp_matmul_topn等工具,可将大型矩阵(10M+ 行)拆分到集群中并合并结果。 - High Performance: 在特定硬件(Apple M2 Pro)上处理大型 TF-IDF 矩阵时,比标准方法快上 6 倍。
相关
- 项目
- 项目
- 项目
- 项目
- 项目