Formatron 允许用户以最小的开销控制语言模型的输出格式。它轻量、用户友好,并且能够无缝集成到现有的代码库和框架中。
特性
- 🔗 流行的库集成: 支持 transformers、exllamav2、vllm 和 RWKV。
- 🔌 插件,而非包装器: 与将第三方库包装在大型、笨重的类中不同,Formatron 为不同的库提供了方便、干净的插件。
- 💡 库,而非框架: 不是将所有内容统一到一个笨重的框架中,Formatron 是一个灵活的库,可以嵌入到任何地方。
- ✍️ 流畅的格式化: 描述你的格式就像写自然语言一样简单。
- 📜 正则表达式和CFG支持: 轻松地在格式中交错使用正则表达式和上下文无关文法(CFG)。
- ⚙️ 高效的JSON生成: 基于Pydantic模型或json模式的完整功能的JSON生成。
- 📤 批量推理: 自由地为批次中的每个序列指定不同的格式!
- 🚀 最小的运行时开销: 通过Leo优化、专门的压缩算法和跨代CFG缓存,用Rust实现的Earley算法在渐进性和实际应用中都是最快的算法。
- 🔧 可定制: 所有内容都是可配置的,包括模式生成、文法生成和生成后处理(如函数调用)。
与其他库的比较
能力 | Formatron | LM格式强制器 | Guidance | Outlines |
---|---|---|---|---|
正则表达式 | ✅ | ✅ | ✅ | ✅ |
高效的正则表达式约束生成 | ✅ | 🟡( 性能问题仍然存在) | ❌ | 🟡( 可扩展性目前受限) |
上下文无关文法(CFG) | ✅ | ❌ | ✅ | 🟡( 存在一些错误) |
高效的CFG约束生成 | ✅ | ❌ | ❌ | ❌ |
自定义格式提取器 | 🟡(存在一些限制 ) | ❌ | ✅ | ✅ |
JSON模式 | ✅(间接 ) | ✅ | ✅ | ✅ |
从可调用对象调用函数 | ✅ | ❌ | ✅ | ✅ |
在生成中交错Python控制流 | ❌ | ❌ | ✅ | ❌ |
批量生成 | ✅ | ✅ | ❌ | ✅ |
束搜索 | ❌ | ✅ | ❌ | ✅ |
集成到现有管道中 | ✅ | ✅ | ❌ | ✅ |
可选的JSON字段 | ✅ | ✅ | ❌ | ❌ |
LLM控制JSON字段空白 | ✅ | ✅ | ❌ | ❌ |
LLM控制JSON字段顺序 | ❌ | ✅ | ❌ | ❌ |
具有递归类的JSON模式 | ✅ | ✅ | ❌ | ❌ |
讨论总结
Reddit用户对Formatron这一高性能约束解码库进行了积极的讨论,主要关注其功能、性能及与其他库的比较。用户们对Formatron的轻量级、用户友好以及与现有代码库和框架的无缝集成表示赞赏。讨论中涉及了性能问题、库选择、技术问题等多个方面,用户们对Formatron的未来发展表示期待。
主要观点
- 👍 Formatron是一个高性能的约束解码库
- 支持理由:用户赞赏其轻量级和用户友好的特点,以及与现有代码库和框架的无缝集成。
- 反对声音:暂无明显反对声音。
- 🔥 用户对当前使用的库的性能不满意
- 正方观点:用户认为当前使用的库性能损失至少两倍,期待Formatron这样的新库。
- 反方观点:暂无明显反方观点。
- 💡 Formatron支持可选JSON字段生成,但不支持字段顺序控制
- 用户期待未来Formatron能实现LLM控制JSON字段顺序的功能。
- 👍 用户对Formatron库支持exllama表示赞赏
- 支持理由:用户认为Formatron库支持exllama是一个积极的特性。
- 反对声音:暂无明显反对声音。
- 🔥 开发者计划通过编写专门的JSON状态机来实现字段顺序控制
- 正方观点:用户期待这一功能的实现。
- 反方观点:暂无明显反方观点。
金句与有趣评论
- “😂 kryptkpr:I’m using aphrodite-engine with Outlines currently for my EXL2 pydantic json schema extractors but performance is a bit lacking it seems I give up at least 2x”
- 亮点:评论者对当前库的性能不满意,期待Formatron这样的新库。
- “🤔 notsosleepy:what would be needed to enforce something like this with web LLM?”
- 亮点:用户询问如何使用Web LLM实现类似Formatron的功能,引发技术讨论。
- “👀 a_slay_nub:Outlines has been very buggy for me and this looks like a promising alternative.”
- 亮点:评论者认为Outlines存在问题,Formatron是一个有潜力的替代方案。
- “😂 Such_Advantage_6949:it is so awesome to see something new in this space”
- 亮点:用户对Formatron在语言模型输出格式控制领域的新进展表示赞赏。
- “🤔 Such_Advantage_6949:do you plan to include this ability in the future? LLM Controls JSON field orderings.”
- 亮点:用户询问未来Formatron是否能实现LLM控制JSON字段顺序的功能。
情感分析
讨论的总体情感倾向是积极的,用户们对Formatron的功能和性能表示赞赏,并期待其未来发展。主要分歧点在于对现有库的性能不满意,以及对Formatron未来功能的期待。可能的原因是用户对高性能、用户友好的库有强烈需求,而Formatron恰好满足了这些需求。
趋势与预测
- 新兴话题:Formatron的未来功能,如LLM控制JSON字段顺序。
- 潜在影响:Formatron可能会成为语言模型输出格式控制领域的主流库,对相关领域或社会产生积极影响。
详细内容:
标题:Formatron:高性能约束解码库引发热议
近日,Reddit 上一篇关于 Formatron 的帖子引发了众多关注。该帖子介绍了Formatron这一约束解码库,称其允许用户以最小的开销控制语言模型的输出格式,具有轻量、用户友好以及能无缝集成到现有代码库和框架等特点。帖子获得了大量的点赞和众多评论。
主要讨论方向集中在 Formatron 与其他类似库的性能比较、功能特点以及应用场景等方面。
讨论焦点与观点分析: 有人提到正在使用 aphrodite-engine 与 Outlines 结合,但其性能似乎有所欠缺。有人询问如何在网络 LLM 中实施类似的约束,有人认为技术上通过可修改的每令牌对数偏差的流 API 就足够了,但考虑到 API 调用的工作方式,怀疑唯一可行的方法是使用约束解码库。有用户希望提供 CFG 的示例,并询问能否集成到 vllm 的 API 中,还指出 Outlines 存在很多漏洞,Formatron 看起来是一个很有前途的替代方案。有人称赞这是该领域的新事物,还有人询问未来是否会包含某些特定能力,比如 LLM 控制 JSON 字段排序。
总的来说,大家对 Formatron 的出现表现出了浓厚的兴趣,同时也对其性能和功能进行了深入的探讨。
感谢您的耐心阅读!来选个表情,或者留个评论吧!