본문 바로가기
원문
Hugging Face Blog·· 2026년 9월 22일주요 뉴스AI 점수63

Hugging Face, transformers에서 GGUF(llama.cpp 양자화) 모델 실행 지원

Transformers now runs llama.cpp quants

AI 요약

Hugging Face는 transformers에 GGUF 모델을 `from_pretrained`로 불러와 실행하는 기능을 추가했다. ggml 커널을 kernels 라이브러리를 통해 재사용하며, 우선 Apple Silicon의 Qwen3.5 아키텍처를 대상으로 한다. 현재는 main 브랜치에서 이용할 수 있으며, 패킹된 추론 경로는 MPS만 지원한다.

자세히

사용자는 Hub의 GGUF 모델 model_id와 filename을 gguf_file로 `from_pretrained`에 넘기기만 하면 된다. Metal에서 가중치가 패킹된 상태로 유지되면 ggml/Metal 레이어 커널이 자동으로 로드되고, 어텐션에는 ggml-org/ggml-attn이 사용된다. 이를 가져올 수 없으면 경고와 함께 "sdpa"로 폴백한다. 호환되는 양자화 커널이 없으면 디퀀타이즈해서 로드하므로 메모리 사용량이 늘어난다. `transformers serve`로는 OpenAI 호환 API로 제공할 수 있으며, Jan이나 Pi 같은 클라이언트에서 연결할 수 있다.

블로그 예시에서는 Unsloth의 Qwen3.5-4B에 대해 BF16이 8.42 GB, Q4_K_M이 2.74 GB로 제시되었다. 먼저 Q4_K_M을 시도하고, 메모리에 여유가 있으면 Q5_K_M이나 Q6_K를 검토하는 것이 권장된다. 벤치마크는 MacBook Pro M2 Max(32 GB)에서 실시했으며, dense 소형, dense 대형, MoE 세 가지 GGUF 체크포인트에서 transformers가 llama.cpp에 가까운 속도를 보였다고 밝혔다. 다만 transformers 쪽은 prefill을 포함하고 llama-bench는 디코드만 측정하므로 동일 조건의 비교가 아니라고 명시되어 있다.

가속의 핵심은 ggml-quantization, ggml-norm, ggml-attn, ggml-gated-delta-net 커널과, MoE 라우팅을 위해 직접 구현한 topk 커널이다. 여기에 더해 `generate`에서는 패딩이 없는 입력의 어텐션 마스크를 조기에 제거하는 변경(#48814)과, 종료 판정을 비동기로 복사해 다음 스텝에서 사용하는 변경(#47975)을 넣었다. 뒤의 두 가지는 GGUF에 국한되지 않고 transformers의 다른 모델에도 효과가 있다.

위치는 다음과 같다. 효율적인 로컬 추론에는 여전히 llama.cpp가 권장 엔진이다. 이번 통합은 PyTorch 훅을 통한 중간 활성값 확인, 양자화 체크포인트 평가, GGUF 변환 검증, 독자적인 디코딩 기법 실험에 적합하다. 파인튜닝에는 `GgufConfig(dequantize=True)`로 디퀀타이즈해서 사용한다.

제약도 명시되어 있다. 패킹된 추론 경로는 MPS에서만 동작하며, 패딩이 있는 배치는 성능이 떨어질 수 있다. 지원 아키텍처는 Qwen3.5의 dense와 MoE(호환되는 Qwen3.8 포함)로 한정되며, 점차 확대할 예정이다. 사용하고 싶은 GGUF 모델이 있다면 체크포인트와 용도를 함께 적어 issue를 올려 달라고 요청하고 있다.

선정 이유

GGUF를 transformers API로 불러오는 절차와 llama.cpp와의 역할 분담, Apple Silicon에서의 현재 지원 범위가 구체적으로 정리되어 있다.

출처: Hugging Face Blog · huggingface.co