最近,许多基准测试表明,与静态批处理相比,如果要在API后提供模型服务,连续批处理可以实现更高的吞吐量和更低的延迟。一些实现连续批处理的系统示例:
- 来自huggingface的text-generation-inference:https://github.com/huggingface/text-generation-inference
- 包含推理引擎的vLLM(也称为XLNet)https://github.com/vllm-project/vllm
- 下一个2.6版本中的Ray
为了实现连续批处理,需要具备以下能力:
- 如果有足够的资源来承担它(与静态批处理中需要一起提交请求的情况相比),将请求添加到现有运行的批处理中。
- 当请求达到停止标记时,从批处理中提前移除该请求(而不是同时返回所有请求)。
这个概念是否与CTranslate2架构兼容?我很想在CTranslate2上构建一个推理引擎,希望在深入研究之前听到一些关于这个的想法。
5条答案
按热度按时间eufgjt7s1#
#1317
tjrkku2a2#
@michaelfeil 这是相关的吗?是的,vLLM支持连续批处理,但我想了解Ctranslate是否可以扩展以支持这一点,而无需使用vLLM。
k5ifujac3#
callback
参数可以在生成令牌后立即获取它们,并且已完成的请求会从批处理中移除。p1iqtdky4#
是的,我的意思是通过缓冲化传入请求并将它们一起发送来实现静态批处理。
juzqafwq5#
CT2并未设计成具备这个功能,所以要实现它并非易事。但理论上当然是可行的。