google/gemma.cpp
lightweight, standalone C++ inference engine for Google's Gemma models.
해결하는 문제
gemma.cpp는 Google의 Gemma 기반 모델을 위한 경량이고 독립적인 C++ 추론 엔진입니다. 복잡한 배포 중심의 C++ 런타임과 고수준의 Python 연구 프레임워크 사이의 격차를 메우며, 다른 프로젝트에 쉽게 수정하고 통합할 수 있는 최소한의 구현을 제공합니다.
작동 방식
이 엔진은 Gemma 2, Gemma 3, PaliGemma 2 모델에 대한 CPU 전용 추론을 수행하기 위해 약 2,000줄의 코드로 구성된 소규모 코어 구현을 사용합니다. 다양한 아키텍처에서 CPU 성능을 최적화하기 위해 Google Highway 라이브러리를 활용하여 포터블 SIMD(Single Instruction, Multiple Data)를 사용합니다.
주요 기술적 특징:
- 혼합 정밀도 GEMM: fp8, bf16, fp32, fp64를 지원하며, 행렬 크기에 따라 자동 런타임 오토튜닝을 제공합니다.
- 가중치 압축: 고유의 fp8 형식과 비균일 4비트(NUQ) 압축을 통합하여 메모리 대역폭과 캐시 사용량을 줄입니다.
- 인프라스트럭처: 멀티소켓 스레드 풀을 사용한 텐서 병렬 처리를 구현하고, 메모리 매핑된 디스크 I/O를 지원합니다.
- 프론트엔드: 스트리밍을 지원하는 C++ API, 기본적인 인터랙티브 CLI, 그리고 pybind11를 통한 Python 바인딩을 제공합니다.
대상 사용자
이 엔진은 생산 환경 배포가 아닌, 실험 및 연구용으로 간단하고 수정 가능한 추론 엔진이 필요한 연구자 및 개발자를 주요 대상으로 합니다.
주요 특징
- 최소한의 설계: 감사 및 실험에 적합한 작은 코드베이스.
- 광범위한 모델 지원: 텍스트 기반 Gemma 2-3 및 PaliGemma 2 비전-언어 모델을 지원합니다.
- CPU 최적화: GPU가 필요 없이 Highway SIMD를 사용해 고성능 CPU 추론을 구현합니다.
- 유연한 통합: CMake
FetchContent를 통해 라이브러리로 통합하거나, 공유 라이브러리로 빌드할 수 있습니다. - 연구용 도구: Gemma 연구를 위한 백워드 패스(VJP)와 Adam 최적화기 포함.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- Dispatch
- 프로젝트