llama-graph: SWA 전용 모델을 위한 llm_graph_input_attn_kv_iswa에서의 null-buffer 충돌 수정 ( #
요약
llama-graph에서 SWA(Sliding Window Attention) 전용 모델 사용 시 발생하는 null-buffer 충돌 문제를 해결했습니다. 특정 레이어가 존재하지 않을 때 백엔드 스케줄러가 버퍼를 할당하지 않아 발생하는 assertion 오류와 null-dereference 문제를 방지하기 위한 가드를 추가했습니다.
핵심 포인트
- SWA 전용 모델에서 미할당 텐서 접근 시 발생하는 충돌 수정
- 베이스 및 SWA set_input 호출 시 null/버퍼 체크 가드 도입
- can_reuse() 메서드 수정을 통한 재사용 경로의 null-dereference 방지
- Gemma 4와 같은 SWA 전용 슬라이스 모델의 안정성 확보
llama-graph: SWA 전용 모델을 위한 llm_graph_input_attn_kv_iswa에서의 null-buffer 충돌 수정 ( #23131 ) 모델에 non-SWA 어텐션 레이어가 하나도 없는 경우 (예: Gemma 4의 SWA 전용 슬라이스), 베이스 KV 캐시에는 레이어 텐서가 존재하지 않습니다. 입력 텐서(self_k_idxs, self_v_idxs, self_kq_mask)는 그래프 입력 노드로 생성되지만 어떤 연산 노드(compute node)에 의해서도 소비되지 않으므로, 백엔드 스케줄러(backend scheduler)가 이들을 위한 버퍼를 할당하지 않습니다. 할당되지 않은 텐서에 대해 mctx->get_base()->set_input_k_idxs()를 호출하면 ggml-backend.cpp:194에서 GGML_ASSERT(buffer)에 걸리게 됩니다. 동일한 시나리오가 대칭적으로 적용됩니다: 만약 모델에 SWA 레이어가 하나도 없다면, SWA 텐서들이 할당되지 않을 것입니다. 수정 사항: 'base tensors may not be allocated if there are no non-SWA attention layers'라는 주석이 있는 llm_graph_input_mem_hybrid_iswa::set_input (약 674행)에서 이미 사용 중인 패턴에 맞춰, 베이스(base) 및 SWA set_input 호출 모두에 null/버퍼 체크 가드를 추가했습니다. 또한 동일한 클래스의 can_reuse()를 수정하여 할당되지 않은 텐서에 대해 ne[0] 및 kq_mask 체크를 건너뛰도록 함으로써, 재사용 경로(reuse path)에서의 null-dereference를 방지했습니다.
macOS/iOS: macOS Apple Silicon (arm64), macOS Apple Silicon (arm64, KleidiAI 활성화), macOS Intel (x64), iOS XCFramework
Linux: Ubuntu x64 (CPU), Ubuntu arm64 (CPU), Ubuntu s390x (CPU), Ubuntu x64 (Vulkan), Ubuntu arm64 (Vulkan), Ubuntu x64 (ROCm 7.2), Ubuntu x64 (OpenVINO), Ubuntu x64 (SYCL FP32), Ubuntu x64 (SYCL FP16)
Android: Android arm64 (CPU)
Windows: Windows x64 (CPU), Windows arm64 (CPU), Windows x64 (CUDA 12) - CUDA 12.4 DLLs, Windows x64 (CUDA 13) - CUDA 13.1 DLLs, Windows x64 (Vulkan), Windows x64 (SYCL), Windows x64 (HIP)
openEuler: openEuler x86 (310p), openEuler x86 (910b, ACL Graph), openEuler aarch64 (310p), openEuler aarch64 (910b, ACL Graph)
AI 자동 생성 콘텐츠
본 콘텐츠는 llama.cpp Releases의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기