多様なCPUアーキテクチャ向けに最適化された、GPUを除くオープンソースのBLAS・LAPACK線形代数ライブラリ。
ashvardanian/NumKong
15種類以上の数値型に対応し、距離・内積・行列演算をSIMDで高速化する数学カーネル。Python、Rust、C/C++、JS、Swift、Go向けのバインディングを提供します。
- スター
- 1,907
- フォーク
- 142
- 未解決の Issue
- 59
- 最終コミット
- 6 日前
これは何?
NumKongは、内積、距離・類似度の指標、行列乗算などのベクトル・行列演算を行う数値計算ライブラリです。カーネルはx86、Arm、RISC-V、LoongArch、Power、WebAssembly向けにSIMDを用いて手作業で最適化されており、4ビット整数や6ビット浮動小数点数から128ビット複素数まで、幅広い数値型を扱えます。内積などのリダクションでは、Float16からFloat32、Int8からInt32のように、より広い型で累算するため、結果が気づかないうちにオーバーフローすることはありません。
ライブラリはCで実装され、Python、Rust、C++、JavaScript、Swift、Go向けのバインディングを提供します。スレッドやメモリの管理は行わないため、呼び出し側がスレッドモデルとバッファを用意します。また、packed-matrix APIを使えば、重みを一度準備して複数のクエリで再利用できます。精度については拡張精度を使った基準値との比較を公開しており、複数のBLAS系代替ライブラリよりバイナリサイズが大幅に小さいことも報告しています。
NumKongは、ベクトル検索や情報検索、埋め込みの類似度計算、補償和が必要な科学計算、mini-floatや整数型を使う低精度推論のワークロードに適しています。
主な機能
- 01主要なCPUおよびWASMターゲット向けに、内積、距離指標、行列乗算のSIMDカーネルを提供します。
- 024ビット整数、6ビット・8ビット浮動小数点数、Float16、BFloat16、複素数など、15種類以上の数値型に対応します。
- 03オーバーフローを防ぐためにより広い型で累算し、Float64では補償和を使用します。
- 04Python、Rust、C/C++、JavaScript、Swift、Go向けのバインディングを提供します。
- 05スレッド管理とメモリ確保は呼び出し側に任せるため、任意の並列化モデルやアロケータで利用できます。
- 06データを一度準備して繰り返しクエリに使える、packed-matrix APIを提供します。
ユースケース
- ベクトル検索向けに、大規模な埋め込み集合間のコサイン類似度やユークリッド距離を計算する。
- Float8、Float16、Int8データを使った低精度推論カーネルを実行する。
- 大規模なBLAS一式を導入せずに、PythonやRustのアプリケーションへ高速な距離計算を組み込む。
- JavaScriptバインディングを介して、ブラウザやNode.jsで数値カーネルを実行する。
トピック
よくある質問
- NumKong とは?
- 15種類以上の数値型に対応し、距離・内積・行列演算をSIMDで高速化する数学カーネル。Python、Rust、C/C++、JS、Swift、Go向けのバインディングを提供します。 NumKongは、内積、距離・類似度の指標、行列乗算などのベクトル・行列演算を行う数値計算ライブラリです。カーネルはx86、Arm、RISC-V、LoongArch、Power、WebAssembly向けにSIMDを用いて手作業で最適化されており、4ビット整数や6ビット浮動小数点数から128ビット複素数まで、幅広い数値型を扱えます。内積などのリダクションでは、Float16からFloat32、Int8からInt32のように、より広い型で累算するため、結果が気づかないうちにオーバーフローすることはありません。
- NumKong は無料で使えますか?ライセンスは?
- NumKong は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- NumKong は今もメンテナンスされていますか?
- 活発にメンテナンス中。NumKong の最終コミットは 2026年10月31日 です。
- NumKong は何に使えますか?
- ベクトル検索向けに、大規模な埋め込み集合間のコサイン類似度やユークリッド距離を計算する。 Float8、Float16、Int8データを使った低精度推論カーネルを実行する。 大規模なBLAS一式を導入せずに、PythonやRustのアプリケーションへ高速な距離計算を組み込む。 JavaScriptバインディングを介して、ブラウザやNode.jsで数値カーネルを実行する。
- NumKong はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/ashvardanian/NumKong
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
TurboQuantで埋め込みを次元あたり2または4ビットに圧縮し、圧縮したまま検索できるPython・Rust向けインプロセスベクトルインデックス。
NVIDIA GPU上の機械学習、線形代数、情報検索向けに、CUDAで高速化したC++ヘッダーオンリーライブラリとPythonラッパーを提供します。
Python、JavaScript、Rust、Java、Go、Swiftなどのバインディングを備えた、近似最近傍ベクトル検索とクラスタリング用の単一ファイルC++ライブラリ。
モバイル、組み込み機器、デスクトップで深層学習モデルを実行するための、高性能なC++ニューラルネットワーク推論フレームワークです。
多次元並列処理で大規模Transformerモデルを学習するための、GPU向け最適化ライブラリと学習用リファレンススクリプト。