피드로 돌아가기
Introduction to ggml
Hugging Face BlogHugging Face Blog
AI/ML

ggml이 C/C++로 구현한 경량 ML 라이브러리로 컴파일된 바이너리 1MB 미만 달성

Introduction to ggml

2024년 8월 13일10beginner

Context

PyTorch와 TensorFlow 같은 기존 ML 라이브러리는 수백 MB의 무거운 바이너리를 생성하며 복잡한 빌드 도구가 필요해 온디바이스 LLM 배포가 어렵다.

Technical Solution

  • Core 라이브러리를 5개 미만의 파일로 구성: GPU 지원은 선택적으로 포함 가능하게 최소화
  • 빌드 의존성 제거: GCC 또는 Clang만으로 GPU 지원 없이 컴파일 가능
  • ggml_context로 텐서와 계산 그래프를 메모리에 효율적으로 관리
  • ggml_cgraph와 ggml_backend를 통해 계산 순서 정의 및 CPU/CUDA/Metal/Vulkan 등 다중 백엔드 지원
  • ggml_gallocr와 ggml_backend_sched로 메모리 할당 최적화 및 GPU/CPU 간 자동 작업 분배
  • 텐서 양자화 지원으로 메모리 절감 (JPEG 압축과 유사한 방식)

Key Takeaway

온디바이스 LLM 배포 시 llama.cpp, ollama, Jan 같은 상위 프레임워크 대신 ggml 핵심 개념(context, cgraph, backend, 양자화)을 이해하면 임베디드 환경에서 최소한의 의존성으로 ML 추론 시스템을 구축할 수 있다.


모바일/엣지 디바이스에 LLM을 배포해야 하는 엔지니어는 ggml의 다중 백엔드 스케줄러(ggml_backend_sched)를 활용해 GPU 미지원 연산을 CPU로 자동 우회하면 호환성 문제 없이 혼합 하드웨어 환경에서 동작하는 추론 엔진을 구현할 수 있다.

원문 읽기