text-generation-inference 支持no_repeat_ngram_size生成参数

qv7cva1a  于 6个月前  发布在  其他
关注(0)|答案(3)|浏览(60)

功能请求

Transformers库支持生成时的no_repeat_ngram_size参数。https://huggingface.co/docs/transformers/v4.18.0/en/main_classes/text_generation#transformers.generation_utils.GenerationMixin.generate.no_repeat_ngram_size
TGI库是否也支持这个参数?

动机

这个参数有助于减少重复,帮助生成更简洁的回复。

你的贡献

如果能得到一些关于需要调整哪些代码以适应更改的提示,我很乐意帮助实现这个功能。我还不清楚这个更改是否需要在Rust层或Python层中实现,或者两者都需要。
我希望这个参数能被Llama类型模型(Llama、Mistral、Phi等)支持。
谢谢!

mmvthczy

mmvthczy1#

你好 @njbrake 👋
我认为如果你有带宽的话,这将是一个受欢迎的贡献👍
首先是在 text-generation-launcher 中实现参数解析:
text-generation-inference/launcher/src/main.rs
第170行的 dbb23fb
| | structArgs{ |
这应该在启动 text-generation-server 时向下传播:
text-generation-inference/launcher/src/main.rs
第679行的 dbb23fb
| | letmut p = matchCommand::new("text-generation-server") |
然后在 text-generation-server(实际上是 Python)中实际实现:https://github.com/huggingface/text-generation-inference/blob/main/server/text_generation_server/utils/logits_process.py
这会帮助你开始吗?

ws51t4hk

ws51t4hk2#

感谢!是的,这对我有所帮助。你提到的前两步(在main.rs中)似乎是在启动服务器时传递的命令。no_repeat_ngram_size 是一个生成配置参数,客户端在运行推理请求时应该传递这个参数。关于这个参数,你有什么建议我应该在哪里查找吗?似乎text-generation-launcher的位置不对。例如,我本希望能做类似这样的事情:

from huggingface_hub import InferenceClient
client = InferenceClient()
output = client.chat_completion(
    messages="Finish this sentence....",
    max_tokens=512,
    temperature=0.1,
    no_repeat_ngram_size=7
)
w1e3prcc

w1e3prcc3#

当然,抱歉我之前说得太快了 👍

这里是服务器请求解析的地方(取决于端点):
text-generation-inference/router/src/server.rs
第557行
| | /// 生成令牌 |
其中结构例如这样:
text-generation-inference/router/src/lib.rs
第383行
| | pubstructCompletionRequest{ |
我想logits处理器中的Python部分仍然是有效的。然后,请求通过grpc层传递给Python服务器,并在这里定义protobuf:
text-generation-inference/proto/generate.proto
第60行
| | messageNextTokenChooserParameters { |

相关问题