text-generation-inference 允许客户端提供提示令牌ID,而不是字符串,

avkwfej4  于 2个月前  发布在  其他
关注(0)|答案(7)|浏览(78)

功能请求

请在 text_generation.Client.generate 方法中添加一个选项,以便将提示作为 token id 列表提供,而不是字符串。

动机

最近的 LLaMA-2-Chat 模型的官方实现在每个聊天对话的回合之前使用独立的分词器对 token 进行分词,然后再将 token id 连接起来。我也想在我的应用中这样做。但是,由于 TGI 只接受字符串作为提示,所以无法将结果中的 token 列表发送给 TGI。
我明白在这个特定的情况下,可以在客户端内连接字符串,包括特殊标记的字符串表示。但有时 tokenize(a + b) != tokenize(a) + tokenize(b) ,所以这可能不是完全正确的。而且我已经看到至少有一个其他模型在这方面有明确的说明,作者建议连接 token id 而不是字符串(尽管我现在找不到那个模型)。
在 huggingface transformers 和 vLLM 中,也已经支持提供 token id 列表而不是字符串。

你的贡献

很遗憾,我对 Rust 不熟悉,无法为此功能提供 PR。

2jcobegt

2jcobegt1#

这样做肯定有一些好处。

  1. 我们不需要猜测模型如何处理我们的字符串输入,而且我们还可以覆盖分词,生成一个无法通过原始分词创建的id列表(这在绕过特殊id等方面有应用)。
  2. 分词可以在客户端进行。
    缺点:
  • 它很可能给当前的代码库增加很多复杂性。
  • 用户确实需要在客户端进行分词,可能会发送无效的id,我们现在必须验证这些id。

我真的很担心这个功能的增加表面,所以我倾向于拒绝做出这样的改变,除非我们能找到一种非常简单的方法来实现它。
@OlivierDehaene Wdyt?

qhhrdooz

qhhrdooz2#

我同意这很好,而且分词重构早就该做了。
我们会在第四季度考虑这个问题。

zaq34kh6

zaq34kh63#

我的另一个功能请求相当有争议,但这至少可以使在客户端上进行分词成为可能,而无需在中间进行有损的往返。现在已经是第四季度了,所以很好奇目前这个功能的状况如何。

ybzsozfc

ybzsozfc4#

这个问题已经过期,因为它已经打开了30天,没有活动。请移除过期标签或评论,否则将在5天内关闭。

shyt4zoc

shyt4zoc5#

这个问题永远不会过时,除非添加了这个功能。我不明白为什么这个机器人是必要的-有一些问题可能会随着时间的推移而过期,但这个已经基本上完成了所需的信息。

wgx48brx

wgx48brx6#

这个问题已经过期,因为它已经打开了30天,没有活动。请移除过期标签或评论,否则将在5天内关闭。

kx1ctssn

kx1ctssn7#

shut up stale bot i fucking hate you

相关问题