llama.cpp v0.0.52: Granite Speech 지원 추가 및 구조 개선
요약
llama.cpp v0.0.52는 IBM Granite 모델군에 대한 지원을 대폭 확장하여, 특히 음성 인식(Speech) 기능을 갖춘 Granite-4.0-1B-Speech 모델의 GGUF 변환기 지원을 추가했습니다. 이 릴리스는 GraniteSpeechTextModel을 기존 GraniteModel로 통합하고, Conformer 인코더와 QFormer 프로젝터 등 복잡한 오디오 처리 아키텍처를 효율적으로 구현하는 구조 개선 사항들을 포함합니다. 다양한 플랫폼(macOS, Linux, Windows, Android 등)에 걸쳐 최적화된 지원을 제공하며, 여러 하드웨어 가속기 및 백엔드를 포괄하여 범용성과 성능을 크게 향상시켰습니다.
핵심 포인트
- IBM Granite-4.0-1B-Speech 모델의 GGUF 변환기 지원 추가
- GraniteSpeechTextModel을 기존 GraniteModel로 통합하고 구조를 개선함
- Conformer 인코더, QFormer 프로젝터 등 복잡한 오디오 처리 아키텍처 구현 및 최적화
- 다양한 플랫폼(Apple Silicon, Linux, Windows, Android)과 백엔드(Vulkan, ROCm, OpenVINO 등) 지원 강화
- GGUF 변환 과정에서 배치 정규화 폴딩, K/V 분리 등의 기술적 개선을 적용함
이 릴리스는 IBM Granite Granite-4.0-1B-Speech 모델의 GGUF 변환기 지원을 추가하고, GraniteSpeechTextModel을 GraniteModel 로 통합하는 주요 변경 사항을 포함합니다.
Granite Speech 모델은 Conformer 인코더 (Shaw 상대 위치 인코딩 사용), QFormer 프로젝터, 로그-Mel 스펙트로그램 (프레임 스택킹 적용) 을 사용합니다. 인코더는 GLU 게이트링, 폴드드 배치 정규화, SSM 깊이 방향 컨볼루션을 활용합니다. QFormer 는 윈도우 크로스 어텐션 (window=15, queries=3) 을 통해 인코더 출력을 LLM 임베딩 공간으로 압축합니다. 오디오 전처리에는 반사 패딩 STFT, 80-진 Mel 필터뱅크, 동적 범위 압축, 2x 프레임 스택킹 (80->160 mel) 이 적용됩니다.
GGUF 변환기는 내보내기 시 배치 정규화 폴딩, 융합된 K/V 분리, Conv1d 가중치 재형성 처리를 수행합니다. HF transformers 참조 테스트에서 30 초/60 초 오디오 클립에 대해 토큰 대비 토큰 매칭을 달성했습니다.
변경 사항:
- gs_ 접두사를 가진 텐서를 일반적/구조 이름으로 재명명
- tensor_mapping.py 를 모든 granite_speech 텐서에 사용
- GraniteSpeechTextModel 을 GraniteModel 로 통합
- n_layer 해크를 명시적인 has_standard_layers 플래그로 교체
- 하드코딩된 마직 수치를 GGUF hparams 로 granite speech 에 대체
- KEY_A_ 정의 간격 정렬
- TN_ 정의 간격 정렬
- clip_layer 로 qformer_proj_layer 를 통합
- redundant ggml_build_forward_expand 제거 (입력)
- build_attn 사용 이유 설명 주석 추가
- eps 를 cpp 에 하드코딩, GGUF 메타데이터에서 제거
- granite_speech tensor mapping 블록 간 간격 추가
- generic audio layer_norm_eps 를 선택적 읽기 가능하게 변경
- encoder eps 를 GGUF 에 유지, projector eps 만 cpp 에 하드코딩
- clip-impl.h 와 clip-model.h 의 정의 및 구조 필드 정렬
- granite speech 파일 간의 정렬 및 순서 문제 수정
- filter_tensors 사용 (macOS/iOS 제외)
지원 플랫폼:
- macOS: Apple Silicon (arm64), KleidiAI 활성화됨, Intel (x64)
- iOS: XCFramework
- Linux: Ubuntu x64 (CPU), arm64 (CPU), s390x (CPU), Vulkan, ROCm 7.2, OpenVINO, SYCL FP32/FP16
- Android: arm64 (CPU)
- Windows: x64 (CPU), arm64 (CPU), CUDA 12/13 DLLs, Vulkan, SYCL, HIP
- openEuler: x86 (310p, 910b ACL Graph), aarch64 (310p, 910b ACL Graph)
AI 자동 생성 콘텐츠
본 콘텐츠는 llama.cpp Releases의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기