十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

高通跃龙IQ-9100工业平台的开发经验分享(4): llm-重复输出与prompt工程解决方案

高通跃龙IQ-9100工业平台的开发经验分享(4): llm-重复输出与prompt工程解决方案 设备: 高通跃龙IQ-9100 EVK (SA8775P, Hexagon v73)运行时: Qualcomm Genie 1.14.0模型: Qwen2.5-7B-Instruct (w4a16, 本地编译)应用: 农业边缘 AI 咨询系统本文将分享Genie 运行时不支持 repeat_penalty 时的 LLM 重复输出解决方案。一、问题现象Qwen2.5-7B-Instruct 在 Genie 运行时上生成回答时经常出现内容重复Q: 请介绍一下量子计算 A: 量子计算是一种利用量子力学原理进行计算的技术。量子计算利用量子比特qubit代替经典计算中的比特bit。 量子计算是一种利用量子力学原理进行计算的技术。量子计算利用量子比特qubit代替经典计算中的比特bit。 量子计算是一种利用量子力学原理进行...整段内容循环重复直到达到最大 token 数。这个问题在开放式问题“请介绍…”、“什么是…”上尤其明显而对于有明确答案的问题“23等于几”则不太会触发。二、分析为什么常规方案不适用2.1repeat-penalty不被支持大多数 LLM 推理框架如 llama.cpp、vLLM支持repeat-penalty重复惩罚采样参数用于降低已出现 token 的生成概率。这是抑制重复输出的标准方案。但Genie Runtime 1.14.0 不支持repeat-penalty。在genie_config.json的sampler配置中设置此参数会被直接忽略。Genie 的采样器仅支持以下参数参数支持状态seed✅ 支持temp✅ 支持top-k✅ 支持top-p✅ 支持repeat-penalty❌ 不支持2.2 单独调整采样参数效果有限降低temp、top-k、top-p可以在一定程度上减少重复但无法完全消除。例如配置重复频率temp0.8, top-k40, top-p0.95默认频繁重复temp0.6, top-k30, top-p0.85偶尔重复temp0.3, top-k10, top-p0.7减少但仍存在过于保守的采样参数会导致回答单调、缺乏多样性。需要一个不依赖采样器参数的解决方案。三、解决方案ChatML System PromptQwen2.5-7B-Instruct 使用 ChatML 格式的对话模板。通过在 system prompt 中加入明确的反重复指令可以在模型生成层面抑制重复。3.1 有效的 system prompt|im_start|system You are an agricultural AI assistant. Keep your answers concise. Do not repeat yourself.|im_end| |im_start|user 请介绍一下量子计算|im_end| |im_start|assistant其中“Do not repeat yourself”是最关键的一句。3.2 效果对比配置重复情况无 system prompt频繁重复system prompt 但无反重复指令仍然重复system prompt “Do not repeat yourself”不再重复system prompt “Do not repeat yourself” 调整采样参数不再重复回答质量进一步提升“Do not repeat yourself” 是单一最有效的措施。在此基础上配合适度的采样参数调整temp0.6, top-k30, top-p0.85效果最佳。四、在农业 AI 应用中的实际配置我们的应用场景是在 IQ-9100 边缘设备上运行农业咨询系统接入温湿度传感器数据通过 LLM 提供种植建议。4.1 完整的 prompt 构造应用在每次用户提问时动态注入当前传感器数据到 system prompt|im_start|system You are an agricultural AI assistant. Current sensor readings: Temperature 23.6°C, Humidity 56.2%. Keep your answers concise and to the point. Do not repeat yourself.|im_end| |im_start|user 现在适合浇水吗|im_end| |im_start|assistant4.2 genie_config.json 采样参数{sampler:{version:1,seed:42,temp:0.6,top-k:30,top-p:0.85}}4.3 实际效果中英文回答均无重复回答引用实际传感器数据“当前温度 23.6°C…”单次回答时间 3–13 秒取决于输出长度TTFT 约 176 mstoken 生成速率约 9.2 tok/s五、为什么 prompt 指令能替代 repeat_penaltyrepeat_penalty在采样阶段降低已出现 token 的 logits 概率——这是一个后处理机制。而 system prompt 中的 “Do not repeat yourself” 在模型生成阶段就起作用——它作为注意力机制的一部分影响模型内部的状态传播。对于经过 instruction tuning 的模型如 Qwen2.5-Instruct模型能够理解并遵循这类行为约束指令。两者的区别机制作用阶段原理repeat_penalty采样后处理降低已出现 token 的概率system prompt 指令模型生成通过注意力机制影响内部状态在没有repeat_penalty可用的情况下prompt 指令提供了一个有效的替代方案——前提是模型经过了充分的 instruction tuning。六、总结Genie Runtime 1.14.0 不支持repeat-penalty采样参数。在genie_config.json中设置该参数会被忽略。ChatML system prompt 中的 “Do not repeat yourself” 是最有效的替代方案。它在模型生成阶段抑制重复不依赖采样器功能。配合适度的采样参数调整temp0.6, top-k30, top-p0.85可以进一步提升回答质量。该方案适用于所有经过 instruction tuning 的模型。在应用中将反重复指令纳入标准的 system prompt 模板即可。
返回列表