Eval bug: Muse Glimmer “The model produced output that does not match the expected peg-native format” when running tool calls

该报错是 llama-server 在使用 Muse Glimmer 模型进行工具调用(tool calls)时,模型偶尔生成不符合 peg-native 格式的输出导致的解析失败,约每 5 次工具调用出现 1 次,属于间歇性错误而非必然崩溃。优先排查工具名称的命名方式,因为 Issue 中用户通过

快速结论:该报错是 llama-server 在使用 Muse Glimmer 模型进行工具调用(tool calls)时,模型偶尔生成不符合 peg-native 格式的输出导致的解析失败,约每 5 次工具调用出现 1 次,属于间歇性错误而非必然崩溃。优先排查工具名称的命名方式,因为 Issue 中用户通过更改工具命名约定后问题意外消失。

适用环境:Windows x86_64、llama.cpp 0.1.0-dev(build 10405, commit e79e4bf66)、CUDA 13.3 后端、Ryzen 7600 + RTX 3090、Muse-Glimmer-30B-UD-Q5_K_M.gguf 模型。

最快修复方案:暂无确认的一步修复方案。Issue 中用户通过更改工具命名约定(tool naming convention)后问题意外解决,但原因不明,且该操作并非针对性修复,建议作为可优先尝试的权宜之计。

注意事项:该方案为偶然发现,未经过系统性验证,可能只是巧合或与模型行为有关。用户改动工具命名后不再触发报错,但无法确定是否为根本性修复。如果问题再次出现,需重新排查。

问题场景

在 Windows 系统上使用 llama-server 运行 Muse Glimmer 30B 模型(Q5_K_M 量化)时,通过 chat completion 接口执行工具调用(tool calls)触发错误。启动命令包含 --jinja--fit off--flash-attn on--cache-type-k q8_0--cache-type-v q8_0 等参数,上下文长度设置为 131072,GPU 层数为 999。报错以 HTTP 500 形式返回,内容为“The model produced output that does not match the expected peg-native format”,且错误具有间歇性,平均每 5 次工具调用出现 1 次。

报错原文

Eval bug: Muse Glimmer "The model produced output that does not match the expected peg-native format" when running tool calls

http error 500
"The model produced output that does not match the expected peg-native format"

common_chat_peg_parse: unparsed peg-native output: ...

原因分析

可能原因:llama-server 使用 peg-native 格式解析模型输出的工具调用 XML。当 Muse Glimmer 模型在生成工具调用内容时,偶尔会产生不符合预期格式的输出(例如 XML 结构不完整、标签不匹配或包含多余字符),导致解析器无法识别并返回错误。由于错误是间歇性的,且与工具命名方式存在潜在关联,推测模型对特定工具名称的生成稳定性可能不足,或者工具名称的命名方式影响了模型输出格式的一致性问题。值得注意的是,Issue 中用户通过更改工具命名约定后问题消失,但这属于偶然发现,尚未有明确的机制解释。

环境排查

  • llama.cpp 版本:0.1.0-dev(build 10405, commit e79e4bf66),确保与 CUDA 13.3 后端兼容。
  • 操作系统:Windows x86_64,确认系统环境变量和路径设置正确。
  • CUDA 版本:13.3,确认显卡驱动和 CUDA 运行时匹配。
  • GPU:RTX 3090,检查显存使用情况,避免上下文长度 131072 导致显存溢出。
  • 模型文件:Muse-Glimmer-30B-UD-Q5_K_M.gguf,确认文件完整性未损坏。
  • 启动参数:检查 --jinja--fit off--flash-attn on 等选项是否正确启用,以及 --cache-type-k/q8_0 是否正常加载。

解决步骤

  1. 复现问题并抓取日志:使用 -lv 5 参数启动 llama-server,尝试复现错误。日志会输出大量详细信息,重点关注 common_chat_peg_parse: unparsed peg-native output: 后面的原始 XML 输出。
  2. 检查工具命名:检查当前工具调用的命名方式。Issue 中用户通过更改工具命名约定后问题消失,可优先尝试修改工具名称(例如避免使用过于复杂、包含特殊字符或与模型训练分布偏差较大的命名),观察是否还会触发报错。
  3. 调整上下文化和批处理参数:如果问题持续存在,尝试降低 --ctx-size(例如 65536)或调整 --batch-size--ubatch-size,排除上下文过长导致模型生成质量下降的可能。
  4. 切换后端或量化方式:如果条件允许,尝试改用 CPU 后端(去掉 --n-gpu-layers 999)或更换其他量化的 GGUF 文件,判断是否为 GPU 推理或量化精度导致的输出格式异常。
  5. 回归到稳定版本:如果上述步骤均无效,尝试回退到较早的 llama.cpp 构建版本(如 build 10400 之前),确认是否为新版本引入的回归问题。

验证方法

完成上述调整后,重复执行多次工具调用(至少 20 次以上),确认不再出现 HTTP 500 错误。同时观察返回的工具调用 XML 是否结构完整、格式正确。若使用 -lv 5 日志,检查 common_chat_peg_parse 是否不再输出 unparsed 提示。如果问题已消失,则表明当前调整有效;否则,需要在 Issue 中提供新的日志片段以便进一步排查。

参考来源

ggml-org/llama.cpp #27025

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 18281

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注