llama: 버퍼가 할당되지 않았을 때 K/V rotation 입력에 대한 가드 추가 ([#25215](https://github.com/ggm
요약
llama.cpp에서 K/V rotation 입력 시 버퍼가 할당되지 않았을 경우 발생하는 중단 문제를 해결하기 위한 가드 로직을 추가했습니다. Speculative decoding 과정에서 텐서 버퍼가 NULL인 상태로 함수가 호출되어 발생하는 오류를 방지합니다.
핵심 포인트
- K/V rotation 입력 시 NULL 버퍼에 대한 안전 장치 추가
- Speculative decoding(DFlash) 시 발생하는 텐서 버퍼 미할당 문제 해결
- GGML_ASSERT 오류로 인한 프로그램 중단 방지
llama: 버퍼가 할당되지 않았을 때 K/V rotation 입력에 대한 가드 추가 (#25215)
llm_graph_input_attn_kv::set_input 및 llm_graph_input_attn_kv_iswa::set_input은 rotation 텐서 포인터가 non-null일 때마다 set_input_k_rot / set_input_v_rot를 호출합니다. 하지만 그래프가 어텐션(attending) 없이 K/V만 저장하는 경우(예: DFlash speculative decoding의 KV-injection 패스), 텐서의 버퍼가 할당되지 않았을(NULL) 수 있습니다. 이 경우 set_input_k_rot는 NULL 버퍼에 대해 ggml_backend_buffer_is_host()를 호출하게 되어 GGML_ASSERT(buffer)와 함께 중단됩니다.
이 두 함수에서 인접한 kq_mask 입력들이 이미 사용하고 있는 것과 동일한 "&& ->buffer" 체크를 통해 네 개의 k_rot/v_rot 입력을 보호합니다. 버퍼가 할당되지 않은 경우 업로드할 데이터가 없으므로, 이를 건너뛰는 것이 올바른 동작입니다.
Fixes #25191
Signed-off-by: liminfei-amd 91481003+liminfei-amd@users.noreply.github.com
macOS/iOS:
- macOS Apple Silicon (arm64)
- macOS Apple Silicon (arm64, KleidiAI 활성화) 비활성화됨
- macOS Intel (x64)
- iOS XCFramework
Linux:
<strong>Linux:</strong>
- 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)
<strong>Android:</strong>
<strong>Windows:</strong>
<strong style="font-size: 1.2em;">Windows:</strong>
- Windows x64 (CPU)
- Windows arm64 (CPU)
- Windows arm64 (OpenCL Adreno)
- Windows x64 (CUDA 12) - CUDA 12.4 DLLs
- Windows x64 (CUDA 13) - CUDA 13.3 DLLs
- Windows x64 (Vulkan)
- Windows x64 (OpenVINO)
- Windows x64 (SYCL)
- Windows x64 (HIP)**
openEuler:
- DISABLED
- openEuler x86 (310p)
- openEuler x86 (910b, ACL Graph)
- openEuler aarch64 (310p)
- openEuler aarch64 (910b, ACL Graph)**
UI:
AI 자동 생성 콘텐츠
본 콘텐츠는 llama.cpp Releases의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기