Bolt - 10배 빠른 매트릭스 & 벡터 연산 알고리듬를 소개합니다
웹페이지에서는 아래와 같이 설명하고 있고요..
Bolt is an algorithm for compressing vectors of real-valued data and running mathematical operations directly on the compressed representations.
한마디로 말해서..
Bolt 는 10배 빠른 매트릭스 & 벡터 연산 알고리즘이라고 머릿속에 넣어두시면 될것 같네요..
추가적으로, Bolt 의 특징을 간단하게 정리해보면 아래와 같고요..
- 데이터의 벡터를 압축하고, 압축된 상태에서 직접 수학연산을 실행
- 대규모의 밀도가 높은 벡터 컬렉션을 가지고 있고, 손실 압축을 견딜수 있다면
→ 10~200x 공간과 계산시간을 줄여줌
- C++로 구현, Python Wrapper 제공
- AVX2 명령어 지원 필수
설치는 아래와 같이 진행하시면 됩니다.
크게 파이썬과 C++ 로 구분되고요..
Python
$ brew install swig # for wrapping C++; use apt-get, yum, etc, if not OS X
$ pip install numpy # bolt installation needs numpy already present
$ git clone https://github.com/dblalock/bolt.git
$ cd bolt && python setup.py install
$ pytest tests/ # optionally, run the tests
If you run into any problems, please don't hesitate to mention it in the Python build problems issue.
C++
Install Bazel, Google's open-source build system. Then
$ git clone https://github.com/dblalock/bolt.git
$ cd bolt/cpp && bazel run :main
The bazel run command will build the project and run the tests and benchmarks.
If you want to integrate Bolt with another C++ project, include cpp/src/include/public.hpp and add the remaining files under cpp/src to your builds.
참고로, 기본적인 사용은 아래와 같이 하시면 됩니다.
Basic usage
X, queries = some N x D array, some iterable of length D arrays
# these are approximately equal (though the latter are shifted and scaled)
enc = bolt.Encoder(reduction='dot').fit(X)
[np.dot(X, q) for q in queries]
[enc.transform(q) for q in queries]
# same for these
enc = bolt.Encoder(reduction='l2').fit(X)
[np.sum((X - q) * (X - q), axis=1) for q in queries]
[enc.transform(q) for q in queries]
# but enc.transform() is 10x faster or more
좀더 자세한 사항은 아래 github 페이지 참고하시면 좋을것 같네요...
오늘의 블로그는 여기까지고요..
감사합니다
'좋아하는 것_매직IT > 96.IT 핫이슈' 카테고리의 다른 글
Metaverse Standards Forum 을 소개합니다. (metaverse-standards.org) (0) | 2022.06.29 |
---|---|
XLite - 엑셀 파일을 가상 테이블로 쿼리하는 SQLite 확장 (0) | 2022.06.28 |
SQLite 3.39.0 릴리즈를 소개합니다. (0) | 2022.06.27 |
7-Zip 22.00 릴리즈에 대한 내용을 소개합니다. (0) | 2022.06.24 |
TinyWow - 무료 파일 처리 도구 모음 사이트를 소개합니다. (0) | 2022.06.24 |