Repolode
ashvardanian

ashvardanian/NumKong

15가지가 넘는 숫자 타입을 지원하는 SIMD 가속 거리·내적·행렬 연산 커널로, Python, Rust, C/C++, JS, Swift, Go 바인딩을 제공합니다.

스타
1,907
포크
142
열린 이슈
59
마지막 커밋
7일 전

어떤 프로젝트인가요?

NumKong은 내적, 거리 및 유사도 측정, 행렬 곱셈 같은 벡터·행렬 연산을 위한 수치 연산 라이브러리입니다. 커널은 x86, Arm, RISC-V, LoongArch, Power, WebAssembly용으로 SIMD를 활용해 수작업으로 최적화했으며, 4비트 정수와 6비트 부동소수점부터 128비트 복소수까지 다양한 숫자 타입을 지원합니다. 내적 및 관련 리덕션 연산은 Float16에서 Float32로, Int8에서 Int32로 처리하는 것처럼 더 넓은 타입에 누적하므로 결과가 예기치 않게 오버플로되지 않습니다.

라이브러리는 C로 작성되었으며 Python, Rust, C++, JavaScript, Swift, Go 바인딩을 제공합니다. 자체적으로 스레드나 메모리를 관리하지 않으므로 호출자가 스레딩 모델과 버퍼를 제공해야 합니다. 패킹된 행렬 API를 사용하면 가중치를 한 번 준비해 여러 쿼리에서 재사용할 수 있습니다. 프로젝트 문서에는 확장 정밀도 기준값과 비교한 정확도가 설명되어 있으며, 여러 BLAS 계열 대안보다 바이너리 크기가 훨씬 작다고 보고합니다.

NumKong은 벡터 검색 및 검색 시스템, 임베딩 유사도 계산, 보상 합산이 필요한 과학 계산, 미니 플로트나 정수 타입을 사용하는 저정밀도 추론 작업에 적합합니다.

핵심 기능

  • 01주요 CPU 및 WASM 타깃에서 내적, 거리 측정, 행렬 곱셈을 위한 SIMD 커널을 제공합니다.
  • 024비트 정수, 6비트 및 8비트 부동소수점, Float16, BFloat16, 복소수 등을 포함해 15가지가 넘는 숫자 타입을 지원합니다.
  • 03오버플로를 방지하기 위해 더 넓은 타입에 누적하며, Float64에는 보상 합산을 사용합니다.
  • 04Python, Rust, C/C++, JavaScript, Swift, Go 바인딩을 제공합니다.
  • 05스레딩과 메모리 할당을 호출자가 맡으므로 어떤 병렬 처리 모델이나 할당자와도 함께 사용할 수 있습니다.
  • 06데이터를 한 번 준비해 반복 쿼리에 활용할 수 있는 패킹된 행렬 API를 제공합니다.

활용 사례

  • 벡터 검색을 위해 대규모 임베딩 집합 간 코사인 또는 유클리드 유사도를 계산합니다.
  • Float8, Float16, Int8 데이터를 사용하는 저정밀도 추론 커널을 실행합니다.
  • 대규모 BLAS 스택을 끌어오지 않고 Python 또는 Rust 애플리케이션에 빠른 거리 계산을 통합합니다.
  • JavaScript 바인딩을 통해 브라우저나 Node.js에서 수치 연산 커널을 실행합니다.

토픽

#simd#linear-algebra#vector-search#matrix-multiplication#blas#mixed-precision#distance-metrics#arm-neon#assembly#cpp

자주 묻는 질문

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 통계는 매일 갱신됩니다.

관련 프로젝트