https://github.com/microsoft/DeepSpeed/blob/master/blogs/deepspeed-fastgen/README.md
pip install deepspeed-mii
这篇博客介绍了DeepSpeed-FastGen,一个用于大型语言模型(LLM)的高吞吐量文本生成系统。它通过结合DeepSpeed-MII和DeepSpeed-Inference来提供易于使用的服务系统。文章主要关注了以下几个方面:
- 大型语言模型在实际应用中需要高效地处理推理任务,但现有系统在长提示工作负载下无法提供一致的服务质量。
- 为了解决这些问题,文章提出了一种名为Dynamic SplitFuse的新颖提示和生成组合策略。
算法原理:Dynamic SplitFuse通过以下两个关键行为来实现高效的文本生成:
- 将长提示分解成更小的块,并在多个前向传递(迭代)中进行调度,只在最后一次传递中执行生成。
- 将短提示组合以填充目标令牌预算。即使是短提示也可能被分解,以确保精确满足预算并使前向传递大小对齐。
结论:
- DeepSpeed-FastGen相较于其他现有技术如vLLM,在吞吐量和延迟方面表现更优。
- 在有效吞吐量分析中,DeepSpeed-FastGen的性能比vLLM高出2.3倍。
- 使用Dynamic SplitFuse策略,DeepSpeed-FastGen在响应性、效率和一致性方面都有显著改进。
- DeepSpeed-FastGen还提供了副本级负载均衡,可以轻松地扩展应用程序。
from mii import pipeline
pipe = pipeline("mistralai/Mistral-7B-v0.1")
output = pipe(["Hello, my name is", "DeepSpeed is"], max_new_tokens=128)
print(output)
# 部署
import mii
mii.serve("mistralai/Mistral-7B-v0.1")
client = mii.client("mistralai/Mistral-7B-v0.1")
output = client.generate("Deepspeed is", max_new_tokens=128)
print(output)