b11528: meta: 호스트 뷰 처리 기능 추가 (#30217)
요약
이 업데이트는 meta 백엔드에서 호스트에 할당된 텐서의 뷰(views) 처리를 개선합니다. 특히, ggml-alloc이 뷰가 위치한 split 버퍼 내에서 충돌 없이 메모리를 관리하도록 수정되었습니다. 이는 그래프 재구축 시 발생하는 단언 실패 문제를 해결하며, --split-mode tensor 및 부분 오프로드 사용 시 KV 캐시 뷰 관련 오류를 일반화하여 해결합니다.
핵심 포인트
- 호스트 텐서의 뷰 처리가 개선되어 메모리 할당 충돌을 방지합니다.
- ggml-alloc이 뷰가 위치한 split 버퍼 내에서 안전하게 작동하도록 수정되었습니다.
- 부분 오프로드 및 --split-mode tensor 사용 시 KV 캐시 관련 오류를 해결합니다.
- meta: 호스트에 할당된 텐서의 뷰(views) 처리
뷰는 view_src의 메모리를 공유하므로, ggml-alloc은 해당 뷰가 위치하는 split 버퍼 내에서 절대로 뷰를 할당하지 않습니다. 스케줄러는 소스(source)를 split로 복사하고, 이 뷰를 사용하는 연산(ops)들은 그 복사본을 읽습니다. 뷰 노드 자체는 noop이며 자체적인 split이 필요하지 않지만, meta 백엔드는 meta split 내부에 하나가 남겨져 있을 경우 단언(asserted):
- ggml_backend_meta_get_split_state() dereferenced tensor->buffer->context
- 그래프 재구축 시 모든 노드가 ggml_backend_meta_buffer_simple_tensor()로 매핑됨
이러한 노드들을 호스트 텐서의 뷰일 때 허용하며, 이는 이전 s_copy_main 우회(workaround)를 일반화합니다. 이 수정사항은 --split-mode tensor와 부분 오프로드(partial offload) 사용 시 KV 캐시 뷰로 인해 발생하던 단언 실패 문제를 해결합니다.
지원: pi:llama.cpp/Qwen3.8-Flash-Next
-
archs: K2 Horizon용 sm 텐서 재활성화
-
cont: TODO 및 참조 추가
AI 자동 생성 콘텐츠
본 콘텐츠는 llama.cpp Releases의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기