ggml : MoE 모델에서 tensor-parallel + -ncmoe 충돌 수정 ([#25028](https://github.com/ggml
요약
ggml 라이브러리에서 MoE 모델 사용 시 텐서 병렬화와 CPU 오프로딩 옵션이 충돌하여 발생하는 어설션 오류를 수정했습니다. 미러링된 비연속적 텐서가 웜업 단계에서 중단되던 문제를 해결하여 안정성을 높였습니다.
핵심 포인트
- MoE 모델의 텐서 병렬화와 -ncmoe 옵션 간 충돌 해결
- 미러링된 비연속적 텐서에 대한 어설션 검사 로직 수정
- ggml-backend-meta.cpp 내 분할 상태 조회 순서 최적화
- MoE 라우터 출력 텐서 처리 안정성 강화
ggml : MoE 모델에서 tensor-parallel + -ncmoe 충돌 수정 (#25028)
텐서 병렬화 (Tensor parallelism, -sm tensor)가 -ncmoe (CPU-offloaded MoE experts)와 결합될 경우, MoE 모델의 웜업 (warm-up) 단계에서 ggml-backend-meta.cpp 내의 GGML_ASSERT(ggml_is_contiguous(tensor))로 인해 중단됩니다.
문제가 발생하는 텐서는 MoE 라우터 출력 (ffn_moe_topk)입니다. 이 텐서는 미러링 (mirrored, GGML_BACKEND_SPLIT_AXIS_MIRRORED, 라우팅이 동일해야 하므로 백엔드 간에 복제됨)되어 있으며, 우연히 비연속적 뷰 (non-contiguous view)인 상태입니다.
ggml_backend_meta_buffer_{get,set}_tensor는 분할 상태 (split state)를 확인하기 전에 텐서의 연속성 (contiguity)을 검사(assert)했습니다. 이로 인해 바로 아래의 GGML_BACKEND_SPLIT_AXIS_MIRRORED 케이스가 이미 이를 처리하고 있음에도 불구하고, 미러링된 비연속적 텐서가 어설션 (assert)을 발생시켰습니다.
분할 상태 조회 (split-state lookup)를 어설션 위로 이동하고, get_tensor와 set_tensor 모두에서 미러링 케이스를 허용하도록 수정했습니다.
진단 도움: 제보자 (@nathanmp).
Fixes #24886
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가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기