一文弄懂 LLM 结构化数据生成原理

AI最新资讯2个月前发布 tree
18 0 0

今日应用


今日话题


一文弄懂 LLM 结构化数据生成原理
一文弄懂 LLM 结构化数据生成原理
 

重点标签 LLMJSON格式结构化数据lm-format-enforcertokenizer前缀树

文章摘要


详细摘要:

大型语言模型(LLM)在文本补全和内容创作方面展现出了强大的生成能力,但生成符合JSON格式结构化数据仍然是一个挑战。本文通过`lm-format-enforcer`库,探讨了如何让LLM输出符合JSON格式的数据。

结构化生成原理:
– 结构化数据生成要求模型输出符合特定语法规则,并确保数据的正确性和一致性。
– `lm-format-enforcer`库通过人工设定的规则,在每个step中只允许采样特定的token集合,从而实现指定的结构化数据生成。

构造tokenizer前缀树
– 利用tokenizer词表中的字符串和对应的token id映射,构造一个字符级别的前缀树。
– 树的每个节点对应词表中某个字符串的一个字符,子节点是连着的下一个字符,遍历完字符串后填入对应的token id。

约束每个step可允许采样token范围:
– `lm-format-enforcer`中的字符级别解析器根据用户指定的JSON schema,在每一步生成过程中,根据之前生成的内容判断当前状态,并给出限定的字符集合。
– 通过递归方式,结合前缀树和解析器,获取每个step的限定token集合。

具体例子:
– 文章通过一个JSON schema示例,展示了如何结合前缀树和解析器获取每个step的限定token集合。
– 通过递归过程,逐步确定特定token集合,如在生成JSON对象时,根据当前状态确定生成`city`属性的字符集合。

压制特定token:
– 在采样过程中,通过给不允许采样的token加上负无穷偏置,实现对特定token的压制。

总结:
– 除了`lm-format-enforcer`,还有其他人工规则的结构化生成库,如`outlines`库,读者可以进一步比较两者的实现差异。

参考资料:
– 文章提供了`lm-format-enforcer`、`vllm-project`和`outlines-dev`的GitHub链接,以及相关技术专栏和资源整理,供读者学习和探索。

文章来源


原文地址: 点我阅读全文
原文作者: 极市平台

© 版权声明

相关文章

暂无评论

暂无评论...