ggml 개요 — 의존성 없는 텐서 라이브러리

ggml 개요 — 의존성 없는 텐서 라이브러리

ggml은 기계학습용 저수준 크로스플랫폼 텐서 라이브러리예요. 많은 프로젝트가 활발한 개발 중인데, 그중에서도 llama.cpp와 whisper.cpp에서 함께 발전하고 있어요.

출처: https://github.com/ggml-org/ggml

ggml의 특징을 짚어볼게요.

  • 저수준 크로스플랫폼 구현
  • 정수 양자화(intger quantization) 지원
  • 넓은 하드웨어 지원
  • 자동 미분(automatic differentiation)
  • ADAM과 L-BFGS 최적화기
  • 제3자 의존성 없음
  • 런타임 동안 메모리 할당 없음

'제3자 의존성이 없고 런타임에 메모리 할당을 안 한다'는 점은 임베디드나 리소스가 제한된 환경에서 특히 매력적이에요. 미리 계산해 둔 메모리 레이아웃에 텐서 연산을 배치하면 가비지 컬렉션 걱정 없이 예측 가능한 성능을 낼 수 있어요.

빌드는 CMake 기반으로 간단해요. 파이썬 의존성만 venv에 설치하고 cmake ..로 빌드하면 예제 실행 파일이 생겨요.

git clone https://github.com/ggml-org/ggml
cd ggml
python3.10 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
mkdir build && cd build
cmake ..
cmake --build . --config Release -j 8

더 알아보기