AISpot

llama.cpp 修復語法取樣:超長 token 不再被誤拒

llama.cpp releases版本更新地端推論開源

llama.cpp 修復了啟用語法(grammar)取樣時長 token 被誤判拒絕的問題。此前 llama_grammar_reject_candidates_for_stack 的深度限制按 token 的碼點數計算,凡是 256 字元及以上的 token 在 grammar 下都會被拒絕,例如 GLM-4.7-Flash 的 512 空格 token 和 Laguna-S-2.1 的長空格 token。

修復了 GLM-4.7-Flash、Laguna 等模型的長空格 token 在 grammar 下總被拒絕的 bug,同時帶來可測量的取樣提速,對用 llama.cpp 做結構化輸出的本地推理影響最直接。

原標題:b11888
閱讀原文

評分68 / 45(平均 56,門檻 60)
狀態未入選

原文

common, grammar: add recursive depth limit, make it a requirement ( #31153 ) common, grammar: add recursive depth limit, make it a requirement catch more recursive functions common : tidy up peg parser changes grammar : reject candidates in a loop, without a depth limit The depth limit in llama_grammar_reject_candidates_for_stack counted the code points of a vocab token, so any token of 256 chars or more was always rejected under a grammar, such as the 512-space token of GLM-4.7-Flash or the long space tokens of Laguna-S-2.1. The rejection now walks the code points with its own stack of levels instead of recursing: there is no limit and no stack risk, whatever the length of a token from the GGUF, and the masks match master. grammar : track rejected candidates as indices into the input At a given code point a candidate only differs from its input by the position of its code point pointer, so the levels now carry indices into the input candidates instead of copies. The first level needs no special case and the rejects map back to the input directly. Grammar sampling gets faster than master on GLM-4.7, Laguna, Qwen3.6 and gemma-4 with the json, list and spaces grammars, same masks. nit : shorten the comment of llama_grammar_reject_step common : add depth_guard for schema walks grammar : move GRAMMAR_RECURSIVE_LIMIT into the .cpp common : reduce recursion limit for peg parser improve Co-authored-by: Alde Rojas [email protected] Co-authored-by: Pascal [email protected] Website: https://llama.app Attestations: https://github.com/ggml-org/llama.cpp/attestations/59723426 macOS/iOS: macOS Apple Silicon (arm64) macOS Apple Silicon (arm64, KleidiAI enabled) 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 libraries Ubuntu x64 (CUDA 13) - CUDA 13.4 libraries Ubuntu arm64 (CUDA 13) - CUDA 13.4 libraries Ubuntu x64 (ROCm 10.0) Ubuntu x64 (OpenVINO) Ubuntu x64 (SYCL FP32) Ubuntu x64 (SYCL FP16) Linux arm64 (Snapdragon: CPU, Adreno GPU, Hexagon NPU) - setup guide Android: Android arm64 (CPU) Android arm64 (Snapdragon: CPU, Adreno GPU, Hexagon NPU) - setup guide Windows: Windows x64 (CPU) Windows arm64 (CPU) Windows arm64 (OpenCL Adreno) Windows x64 (CUDA 12) - CUDA 12.4 DLLs Windows x64 (CUDA 13) - CUDA 13.4 DLLs Windows arm64 (CUDA 13) - CUDA 13.4 DLLs 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● 精選AI 評分69

llama.cpp 為草稿模型與 MTP 加入機率取樣

llama.cpp 合併 PR #27694,為 simple draft 與 MTP 推測解碼引入機率取樣:草稿端按機率取樣,目標模型用拒絕取樣驗證,並修復草稿取樣器與目標模型共用 RNG 流等問題。新增開關控制機率草稿取樣,預設仍為貪心;語法約束請求回退到 argmax,同時支援在拒絕取樣中處理語法約束。改動由 NVIDIA 工程師參與提交,隨各平台建置一同發布。

llama.cpp releasesAI 評分53

llama.cpp 修復特殊 token 轉義導致的 server 崩潰

llama.cpp 修復了 llama-server 在轉義特殊 token 時會被單個請求打崩的棧溢位問題。此前 d1-omni 與 kev 兩個 prompt 用 std::regex_replace 處理請求文字里的 "<|name|>",libstdc++ 會按名字的每個字元遞迴,輸入 "<|" 加 30000 個字母即可撐爆 HTTP 執行緒棧,程序以 SIGSEGV 退出。