llama.cpp Releases

[사전 릴리스 / 연속 빌드] b11412

[사전 릴리스 / 연속 빌드] llama : k-pool 모델에서 예기치 않은 그래프 재할당 수정 (#29958) * llama : k-pool 모델에서 예기치 않은 그래프 재할당 수정 두 k-pool 모델 모두 풀 컨텍스트 예약(reserve)이 알 수 없는 상태에 의존하는 그래프 형태를 만들었습니다: - qwen4exp는 inp->cache_safe를 분기 조건으로 사용했는데…

사전 릴리스 / 연속 빌드: 이것은 실험적인 빌드이며, 안정적인 릴리스가 아닙니다.

llama : k-pool 모델에서 예기치 않은 그래프 재할당 수정 (#29958) * llama : k-pool 모델에서 예기치 않은 그래프 재할당 수정 두 k-pool 모델 모두 풀 컨텍스트 예약(reserve)이 알 수 없는 상태에 의존하는 그래프 형태를 만들었습니다: - qwen4exp는 inp->cache_safe를 분기 조건으로 사용했는데, llama_memory_seq_cp가 셀을 공유하는 순간(예: batched-bench -pps) 이 값은 false가 됩니다: QSA 레이어가 scatter+gather를 fill+concat으로 바꾸고 new_pool_rep 리프를 제거하여, 디코드 그래프가 예약된 그래프보다 노드가 12개 적었습니다 - glm5-next는 gather = n_tokens <= 16 && n_kv > n_sel을 분기 조건으로 사용하여, TG 디코드는 gather 형태(7564 노드)를 만들었지만 마지막 예약인 PP 예약은 dense 형태(7762 노드)였습니다 어느 쪽 불일치든 디코드 시점 재예약을 강제하여 최악 경우 크기 조정을 버리고 현재 상태를 고정시키므로, 다음 상태 증가 (n_pool, n_kv, n_new)가 동일한 그래프 크기에서 더 많은 공간을 필요로 하게 되어 GGML_SCHED_DEBUG_REALLOC=1 하에서 중단됩니다. 예를 들어 다음과 같이 재현할 수 있습니다: GGML_SCHED_DEBUG_REALLOC=1 ./bin/llama-batched-bench \ -hf ggml-org/GLM-5.3-Flash-GGUF:Q2_K -npp 2500 -ntg 32 -npl 1,2 \ -c 32768 -pps -kvu 이제 풀링된 키는 항상 scatter+gather를 사용하고, gather 선택은 컨텍스트 상수만으로 결정합니다: n_ubatch가 모든 ubatch를, top_k + kpool - 1이 n_sel을 상한합니다. 그러면 컨텍스트의 모든 그래프가 하나의 형태를 공유하며, 예약이 이를 커버하고, dense 경로가 2.5k 및 16k 컨텍스트에서 gather 경로보다 빠르게 측정되었습니다. Assisted-by: pi:llama.cpp/MiMo-V2.6-Flash-MOPD * llama : 사용되지 않는 k-pool cache_safe 그래프 API 제거 k-pool 그래프는 더 이상 cache_safe를 분기 조건으로 사용하지 않으므로, get_kpool_cache_safe()나 조건부 new_pool_rep을 읽는 곳이 없습니다: 두 모델 모두 이제 항상 scatter 대상을 전달하며, set_input_kpool은 이제 단순 선호가 아닌 이를 요구합니다. 또한 크기 전용 헬퍼인 kpool_build_sizes()에서 cache_safe 복사를 제거합니다. 레이아웃과 상태 플래그 자체는 유지되며, 공유 셀을 가진 레이아웃이 어떤 풀을 재풀링해야 하는지 여전히 결정합니다. Assisted-by: pi:llama.cpp/MiMo-V2.6-Flash-MOPD * tests : 공유 시퀀스(shared-seq) 그래프 예약 회귀 테스트 추가 프롬프트를 seq 0으로 디코드하고, llama_memory_seq_cp로(-pps에서 llama-batched-bench가 하는 것처럼) 그 셀을 seq 1과 공유한 뒤, 두 시퀀스의 디코딩을 계속합니다. k-pool 모델의 경우 공유가 cache_safe를 지우는데, 이는 풀이 계속 커지는 동안 그래프 토폴로지를 변경시키므로, 최악 경우 대신 현재 상태로 재예약하는 스케줄러는 GGML_SCHED_DEBUG_REALLOC=1 하에서 중단됩니다. 테스트 등록이 해당 플래그를 설정하며, 이 테스트는 2220411ec1 이전에는 두 k-pool 모델 모두에서 중단됩니다. kimi-linear와 minimax-01은 건너뜁니다: 이들은 최종 pp 그래프를 n_seqs = 1로 예약하므로(llama-context.cpp의 [TAG_RESERVE_DIAG_DECAY] 참조), 모든 멀티 시퀀스 그래프는 서로 다른 레이아웃을 가지며 설계상 재예약됩니다. Assisted-by: pi:llama.cpp/MiMo-V2.6-Flash-MOPD * cont : TODO 추가 * cont : 주석 수정 * cuda: 빈 ubatch에서 moe 가중치 축소 매칭 ggml_cuda_match_moe_weighted_reduction은 행이 0개인 텐서를 거부했습니다. 출력이 없는 ubatch는 inp_out_ids를 통해 마지막 레이어를 0행으로 축소하므로, graph_optimize가 그곳에서 alloc 종속성을 제거했고 스케줄러 그래프는 예약된 그래프에 비해 노드 하나를 잃었습니다. 스케줄러는 그 ubatch 크기로 재예약했고, 동일한 노드 수에 더 큰 텐서를 가진 다음 ubatch가 GGML_SCHED_DEBUG_REALLOC=1 하에서 중단되었습니다. 연산 루프는 이미 어떤 융합(fusion)을 시도하기 전에 빈 노드를 건너뛰므로, 이 가드는 alloc 종속성을 행 수에 의존하게 만들었을 뿐이었습니다. * tests: 내부 심볼이 링크되는 곳에서만 롤백 테스트 빌드 공유 시퀀스(shared-seq) 케이스는 llm_arch_from_string을 호출하는데, libllama는 이를 LLAMA_API를 통해 내보내지 않으므로, 공유 라이브러리를 사용하는 Windows에서 test-recurrent-state-rollback 링크가 실패합니다. 이제 그 빌드는 test-llama-archs와 그것이 이미 속한 테스트 등록 바로 옆의 NOT WIN32 OR NOT BUILD_SHARED_LIBS 블록 안에 위치합니다. * tests: 공유 시퀀스 예약 테스트에서 아키텍처를 이름으로 건너뜀 다음의 건너뜁(skip) 처리 kimi-linear와 minimax-01은 llm_arch_from_string을 거쳤는데, libllama는 이를 LLAMA_API를 통해 내보내지 않으므로, 공유 라이브러리를 사용하는 Windows에서 테스트 링크가 실패할 수 있었습니다. 이제는 general.architecture 문자열을 직접 비교하며, 테스트는 다시 모든 플랫폼에서 빌드됩니다. --------- Co-authored-by: Pascal

웹사이트: - https://llama.app

Attestations: - https://github.com/ggml-org/llama.cpp/attestations/52789660

macOS/iOS: - macOS Apple Silicon (arm64) - macOS Apple Silicon (arm64, KleidiAI 활성화) DISABLED - macOS Intel (x64) - iOS XCFramework

Linux: - Ubuntu x64 (CPU) - Ubuntu arm64 (CPU) - Ubuntu s390x (CPU) - Ubuntu x64 (Vulkan) - Ubuntu arm64 (Vulkan) - Ubuntu x64 (CUDA 12) - CUDA 12.8 라이브러리 - Ubuntu x64 (CUDA 13) - CUDA 13.4 라이브러리 - Ubuntu arm64 (CUDA 13) - CUDA 13.4 라이브러리 - Ubuntu x64 (ROCm 10.0) - Ubuntu x64 (OpenVINO) - Ubuntu x64 (SYCL FP32) - Ubuntu x64 (SYCL FP16) - Linux arm64 (Snapdragon: CPU, Adreno GPU, Hexagon NPU) - 설정 가이드

Android: - Android arm64 (CPU) - Android arm64 (Snapdragon: CPU, Adreno GPU, Hexagon NPU) - 설정 가이드

Windows용: - Windows x64(CPU) - Windows arm64(CPU) - Windows arm64(OpenCL Adreno) - Windows x64(CUDA 12) - CUDA 12.4 DLL - Windows x64(CUDA 13) - CUDA 13.4 DLL - Windows arm64(CUDA 13) - CUDA 13.4 DLL - Windows x64(Vulkan) - Windows arm64(Vulkan) - Windows x64(OpenVINO) - Windows x64(SYCL) - Windows x64(ROCm 10.0)

openEuler: - DISABLED - openEuler x86 (310p) 환경 - openEuler x86 (910b, ACL Graph) 환경 - openEuler aarch64 (310p) 환경 - openEuler aarch64 (910b, ACL Graph) 환경

UI: - UI

원문 출처

llama.cpp Releases

내용 안내

원문 발행 및 권리는 출처에 있습니다.

기계 번역 · 원문을 참고하세요