Оптимизированная библиотека BLAS и LAPACK с открытым исходным кодом для многих архитектур CPU, без поддержки GPU.
ashvardanian/NumKong
SIMD-ускоренные математические ядра для вычисления расстояний, скалярных произведений и матричных операций с 15+ числовыми типами и привязками для Python, Rust, C/C++, JS, Swift и Go.
- Звёзды
- 1,908
- Форки
- 142
- Открытые issues
- 59
- Последний коммит
- 7 дней назад
Что это?
NumKong — библиотека для численных вычислений с векторами и матрицами, включая скалярные произведения, метрики расстояния и сходства, а также умножение матриц. Её ядра вручную оптимизированы с использованием SIMD для x86, Arm, RISC-V, LoongArch, Power и WebAssembly и поддерживают числовые типы от 4-битных целых чисел и 6-битных чисел с плавающей точкой до 128-битных комплексных чисел. Скалярные произведения и связанные с ними операции редукции накапливают результат в типах большей разрядности — например, Float16 в Float32 или Int8 в Int32, — поэтому переполнение не происходит незаметно.
Библиотека написана на C и предоставляет привязки для Python, Rust, C++, JavaScript, Swift и Go. Она сама не управляет потоками или памятью: вызывающий код задаёт модель многопоточности и передаёт буферы, а API упакованных матриц позволяют подготовить веса один раз и повторно использовать их для множества запросов. В проекте описана точность относительно эталонных вычислений с расширенной точностью, а также указано, что размер бинарного файла намного меньше, чем у нескольких альтернатив в стиле BLAS.
NumKong подходит для векторного поиска и извлечения данных, вычисления сходства эмбеддингов, научных вычислений с компенсированным суммированием и инференса с низкой точностью, использующего mini-float или целочисленные типы.
Ключевые возможности
- 01Предоставляет SIMD-ядра для скалярных произведений, метрик расстояния и умножения матриц на основных CPU-архитектурах и WASM.
- 02Поддерживает более 15 числовых типов, включая 4-битные целые числа, 6- и 8-битные числа с плавающей точкой, Float16, BFloat16 и комплексные числа.
- 03Накапливает результаты в типах большей разрядности, чтобы избежать переполнения, и использует компенсированное суммирование для Float64.
- 04Предоставляет привязки для Python, Rust, C/C++, JavaScript, Swift и Go.
- 05Оставляет управление потоками и выделением памяти вызывающему коду, поэтому библиотека совместима с любой моделью параллелизма и любым аллокатором.
- 06Предоставляет API упакованных матриц для однократной подготовки данных с последующей обработкой множества запросов.
Сценарии использования
- Вычисление косинусного или евклидова сходства между большими наборами эмбеддингов для векторного поиска.
- Запуск ядер инференса с низкой точностью на данных Float8, Float16 или Int8.
- Встраивание быстрых вычислений расстояний в приложение на Python или Rust без подключения большой библиотеки BLAS.
- Запуск численных ядер в браузерах или Node.js через привязку для JavaScript.
Темы
Частые вопросы
- Что такое NumKong?
- SIMD-ускоренные математические ядра для вычисления расстояний, скалярных произведений и матричных операций с 15+ числовыми типами и привязками для Python, Rust, C/C++, JS, Swift и Go. NumKong — библиотека для численных вычислений с векторами и матрицами, включая скалярные произведения, метрики расстояния и сходства, а также умножение матриц. Её ядра вручную оптимизированы с использованием SIMD для x86, Arm, RISC-V, LoongArch, Power и WebAssembly и поддерживают числовые типы от 4-битных целых чисел и 6-битных чисел с плавающей точкой до 128-битных комплексных чисел. Скалярные произведения и связанные с ними операции редукции накапливают результат в типах большей разрядности — например, Float16 в Float32 или Int8 в Int32, — поэтому переполнение не происходит незаметно.
- NumKong можно использовать бесплатно? Какая у него лицензия?
- NumKong распространяется с открытым исходным кодом под лицензией Apache-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- NumKong всё ещё поддерживается?
- Активно поддерживается. Последний коммит в NumKong — 31 окт. 2026 г..
- Для чего можно использовать NumKong?
- Вычисление косинусного или евклидова сходства между большими наборами эмбеддингов для векторного поиска. Запуск ядер инференса с низкой точностью на данных Float8, Float16 или Int8. Встраивание быстрых вычислений расстояний в приложение на Python или Rust без подключения большой библиотеки BLAS. Запуск численных ядер в браузерах или Node.js через привязку для JavaScript.
- Где скачать NumKong?
- Исходный код и инструкции по установке — на GitHub: https://github.com/ashvardanian/NumKong
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Векторный индекс для Python и Rust, который сжимает эмбеддинги до 2 или 4 бит на измерение с помощью TurboQuant и ищет прямо по сжатым данным.
Header-only библиотека C++ с ускорением на CUDA и Python-обёртками для переиспользуемых примитивов машинного обучения, линейной алгебры и информационного поиска на GPU NVIDIA.
Однофайловая библиотека на C++ для приближённого поиска ближайших соседей и кластеризации векторов с биндингами для Python, JavaScript, Rust, Java, Go, Swift и других языков.
Высокопроизводительный фреймворк на C++ для инференса моделей глубокого обучения на мобильных, встраиваемых и настольных устройствах.
Оптимизированная для GPU библиотека и эталонные скрипты для обучения крупных трансформерных моделей с многомерным параллелизмом.