传统模型分布式推理框架
- Tensorflow serving:仍然是搜索广告推理系统的主流推理框架
- Pytorch Serving:随着pytorch 的流行,慢慢从算法的开发到部署都采用pytorch,但目前大模型包括传统模型还比较少见到直接采用pytorch serving进行业务上线部署的情况
大语言模型的推理框架
- 其中, VLLM 后端接入了Ray 框架, 作为调度请求的分发处理;
- 到目前为止,使用 vLLM 进行推理是最快的可用选项;
- 高吞吐量服务——各种解码算法,包括并行采样、beam搜索等
- OpenAI 兼容的 API 服务器 — 如果使用 OpenAI API,则只需替换端点的 URL
- 除此之外,还包括Nvidia 最新推出的TensorRT-LLM, 增加了对LLM 的支持
目前应用比较多的是VLLM 和DeepSpeed, 关于二者的比较:
Fast-Transformer
- 与 NVIDIA TensorRT 等其他编译器相比,FT 的显着特点是它支持以分布式方式推断大型Transformer模型。
- 上图显示了如何使用张量并行 (TP) 和流水线并行 (PP) 技术将具有多个经典transformer/attention的神经网络拆分到多个 GPU 和节点上。
= 在底层,启用节点间/节点内通信依赖于 MPI 和 NVIDIA NCCL。使用此软件堆栈,您可以在多个 GPU 上以张量并行模式运行大型Transformer,以减少计算延迟
同时,TP 和 PP 可以结合在一起,在多 GPU 和多节点环境中运行具有数十亿和数万亿个参数(相当于 TB 级权重)的大型 Transformer 模型。 - 使用 MPI 和 NCCL 实现节点间/节点内通信并支持模型并行性在 GPT 模型中
- FasterTransormer 同时提供张量并行和流水线并行。 对于张量并行性,
对于自注意力块和前馈网络块,FT 按行拆分第一个矩阵的权重,并按列拆分第二个矩阵的权重。 - 通过优化,FT 可以将每个 Transformer 块的归约操作减少到两倍。对于流程并行性,FasterTransformer 将整批请求拆分为多个微批,隐藏了通信的bubble。 FasterTransformer 会针对不同情况自动调整微批量大小。
TensorRT-LLM
Reference
- https://medium.com/@plthiyagu/comparing-llm-serving-frameworks-llmops-f02505864754
- https://blog.vllm.ai/2023/11/14/notes-vllm-vs-deepspeed.html
- https://github.com/NVIDIA/FasterTransformer/
- https://developer.nvidia.com/zh-cn/blog/accelerated-inference-for-large-transformer-models-using-nvidia-fastertransformer-and-nvidia-triton-inference-server/
- Benchmarking LLM Inference Backends: vLLM, LMDeploy, MLC-LLM, TensorRT-LLM, and TGI
- LLM推理后端性能大比拼,来自BentoML团队的深度评估:https://cloud.tencent.com/developer/article/2428575