我有一些应用,其系统提示相对较大,用于处理请求,很多都使用非常严格的JSON格式。我为它们编写了基准测试脚本,通过一系列真实用例的输入和输出进行测试,以下是我的发现。测试场景是地下城主场景。大语言模型首先扮演地下城主的角色,被输入状态和库存信息,然后需要采取用户行动/决策并报告输出。然后大语言模型负责阅读自己的响应,并根据故事内容更新状态和库存JSON、数量、位置、注释、描述等。这里涉及很多规则,当然包括成功与结构化数据进行交互。成功的模型将能够在给定长输入/响应脚本的情况下以非常合理的方式推进故事(我之后会进行审查),并以期望的格式跟踪状态和库存。规则:320亿参数或更少;不考虑仅API的模型;所有量化为Q6(测试过Q8,结果相同);测试的上下文窗口适合较小的模型,超出的测试将被舍弃;温度在模型作者推荐的范围内,稍微倾向于缺乏创意的输出;除非另有说明,否则为指令版本。结果(从最好到最差):Phi4 14b,到目前为止最好,虽然不如列表中的其他一些模型智能,但100%符合响应格式指令和规则,140亿参数自然速度非常快;Mistral Small 2 22b,平衡性最佳,在任务的解释和解决问题部分极其聪明且出色,偶尔会在JSON输出上失败但很少;Qwen 32b Instruct,可能是所有模型中最智能的,如果遇到复杂场景,会想出我认为最好的逻辑解决方案,但在JSON和遵循规则方面相当差;Mistral Small 3 24b,令我失望,很聪明,但与较旧的Mistral Small 2相比,遵循指令的能力要弱得多,在短时间内只能跟踪状态,之后就会开始删除或忘记项目和事件,但擅长JSON格式;Qwen - R1 - Distill 32b,比Qwen 32b Instruct更智能,但每2 - 3个序列就会完全在遵循指令方面失败,在解释状态和故事方面很棒,但在指令和JSON方面表现不佳;Mistral - Nemo 12b,我很喜欢这个模型,它的表现一直优于其基准测试,能顺利完成多个序列,但最终会产生幻觉,返回无意义的JSON、违反规则或失去对状态的跟踪;Falcon 3 10b,速度极快,令人惊讶的聪明,但每隔几个序列就会可靠地产生完全幻觉的输出和内容;Llama 3.1 8b,能很好地遵循指令,但JSON格式和内容的幻觉太频繁以至于无法使用;Codestral 22b,一个编码模型?用于这个测试?是的,它实际上100%符合JSON,但故事/内容生成以及对行动及其对状态影响的理解很糟糕,还不可避免地会进入无意义输出的循环;Qwen - Coder 32b,和Codestral完全一样,只是写作更差;Nous - Hermes 3 8b,比普通的Llama3.1 8b稍差,在允许的部分生成的文本更有趣(写得更好?);(额外的)Llama 3.2 3b,运行如闪电般快,我希望这是本地大语言模型的未来,但对这个小模型来说这不公平,它会偏离轨道或无法遵循指令。结论:Phi4 14b是目前最好的,它能很好地遵循指令,但在写作上不如基于Llama的模型有创意或自然,也不如Qwen或Mistral智能或聪明。它在这个测试中是最好的,这无可否认,但与其他测试模型的风格和智能相比,我不太喜欢它的内容。Mistral - Nemo 12b接近遵循指令并且在努力。如果你有任何其他模型想要用于这个测试,请告诉我!
讨论总结
原帖作者对11个本地LLM针对指令繁重的游戏/应用进行测试并分享结果。评论者们的讨论围绕测试结果展开,包括对结果的认可、参考价值、对特定模型的看法、提出改进建议、补充未测试的模型等,整体氛围积极,大家各抒己见,交流有序。
主要观点
- 👍 原帖测试结果对不同使用场景有参考价值
- 支持理由:不同评论者表示在自己的使用场景下测试结果有帮助,如SomeOddCodeGuy称尽管使用场景不同,但结果正是自己所需。
- 反对声音:无
- 🔥 Phi4在复杂指令遵循场景下表现突出
- 正方观点:ForsookComparison表示在复杂且对指令遵循要求高的情况下,Phi4表现突出。
- 反方观点:无
- 💡 遮蔽logits可减少模型在JSON语法上的失败
- 解释:Croned提出遮蔽logits可强化JSON语法,减少模型失败。
- 🌟 对gemma2 - 9b - it在特定测试中的表现感兴趣
- 解释:synexo想知道该模型在这种测试中的表现。
- 🤔 原帖实验有趣且数据有用
- 解释:有评论者表示自己也曾有类似想法,原帖数据有用。
金句与有趣评论
- “😂 SomeOddCodeGuy:Thank you so much for doing this. While my use case is very different, these results are exactly what I needed for something I’m doing right this second lol.”
- 亮点:表达出原帖测试结果对自己当下需求的意外契合,体现测试结果的参考价值。
- “🤔 ForsookComparison:The lesson here is that if you have a unique - ish application, TRY THEM ALL.”
- 亮点:强调针对独特应用场景应尝试多种模型的观点。
- “👀 Croned: If you mask your logits to enforce the JSON grammar, models will rarely fail (only scenario is if they get stuck in an infinite string or something).”
- 亮点:提出一种技术建议,有助于解决模型在JSON语法上的失败问题。
- “💡 -Ellary-: gemma2 - 27b - it should be even better.”
- 亮点:对特定模型的性能进行推测,为后续测试提供参考。
- “😎 ForsookComparison: Outside of the models themselves my biggest takeaway is that prompt - tuning can be frustrating but also a whole lot of fun”
- 亮点:分享出除模型之外,提示调整的感受,是独特的观点。
情感分析
总体情感倾向为积极正面。主要分歧点较少,大部分评论者认可原帖的测试并在其基础上展开讨论,偶尔有对某些模型表现的不同看法,但没有形成明显的对立。可能的原因是原帖的测试比较详细且结果丰富,大家更多是基于这些结果进行补充、提问或者分享自己的相关经验。
趋势与预测
- 新兴话题:使用双半球处理设置、不同模型分别处理故事和json部分、采用YAML替代JSON进行测试等新观点可能引发后续讨论。
- 潜在影响:对于本地LLM的优化和应用场景的选择有更多的参考依据,有助于推动LLM在游戏/应用方面的发展。
详细内容:
标题:热门本地 LLM 在特定游戏应用中的测试结果引发热烈讨论
在 Reddit 上,一篇关于对 11 种流行本地 LLM 在复杂指令游戏应用中的测试帖子引起了广泛关注。该帖子详细介绍了测试过程和规则,包括模型的参数限制、量化方式、上下文窗口等,并给出了从最佳到最差的测试结果。此帖获得了众多点赞和大量评论。
讨论的主要方向集中在不同模型的性能表现、优劣特点以及适用场景。核心问题在于如何在满足特定需求的情况下选择最合适的 LLM 模型。
在讨论焦点与观点分析方面: 有人认为 Phi4 14b 表现最佳,尽管在创造力和自然写作方面不如某些模型,但在响应格式指令和规则遵循方面表现出色。 有人指出 Mistral Small 2 22b 平衡最佳,兼具智慧和出色的任务解读及问题解决能力,只是偶尔在 JSON 输出上有失误。 还有用户分享道:“Qwen 32b Instruct 模型可能是最聪明的,但在 JSON 和规则遵循方面表现较差。” 也有人提到:“Mistral Small 3 24b 令人失望,与 Mistral Small 2 相比,指令遵循能力较弱。”
讨论中的共识是不同模型各有优缺点,需要根据具体应用场景进行选择。特别有见地的观点如有人提出若对模型进行掩码处理以强制遵循 JSON 语法,模型失败率会降低,但可能存在性能下降等问题。
总之,这次测试结果为大家在选择 LLM 模型时提供了有价值的参考,但选择仍需根据具体需求权衡利弊。
感谢您的耐心阅读!来选个表情,或者留个评论吧!