Files

58 lines
4.1 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

现有的大模型推理框架都基于 Python 实现,这其中存在一些问题:
- Python 运行速度较慢,调度部分的开销不可忽视
- 通过 torch/nsys profile 证明
- 基于 PyTorch 的框架导致冷启动较慢
> Candle's core goal is to _make serverless inference possible_. Full machine learning frameworks like PyTorch are very large, which makes creating instances on a cluster slow. Candle allows deployment of lightweight binaries.
- 现有的 Python 架构没有一套好的抽象data plane 与 control plane 交叉,如果希望动态调整配置,基本上需要重启
- 调度层与推理 engine 层耦合
- etc...
现有的基于高效语言实现的推理框架存在的问题:
- 无法支持最新的加速器算子现有的许多性能最优的算子flash-infer, ...)都由作者直接向 vllm/sglang 等社区 push且针对 cpp/rust 的文档约等于没有,想要自己手动 port 使用上这些最新算子具有很大的工程挑战
- 基于高效语言实现的推理框架尚未建立完善的社区生态的现状下,支持新模型的速度很慢,从而陷入恶性循环
- 这些基于高效语言实现的推理框架未经过充分的验证,大家在推出新模型时都只在现有主流推理框架 vllm/... 上经过充分测试,保证能够稳定的正确吐词。现有的基于高效语言实现的推理框架相比 PyTorch/vllm/... 存在精度问题,长推理下会吐词崩溃
由于上述这些问题,我们认为如果想要克服 Python 推理框架引入的问题,从零开始工程实现一个新的 Rust 推理框架是不现实的(社区已经有很多这样的工作),我们希望以 vllm 作为能够正确推理的标准,定义一套 IR从而能够 vllm -> IR -> Rust framework从而零成本的支持所有 vllm 支持的模型,且能够保持与 vllm 相同的推理结果保证推理正确性
### Feedback
一个 IR 可以给不同的 backend 引擎,现有的 inference framework 有:
- [vLLM](https://github.com/vllm-project/vllm/tree/main)
- [sglang](https://github.com/sgl-project/sglang)
- [TensorRT-LLM](https://github.com/NVIDIA/TensorRT-LLM)
- [Text Generation Inference](https://github.com/huggingface/text-generation-inference)
- [lightLLM](https://github.com/ModelTC/lightllm)
- [lorax](https://github.com/predibase/lorax)
- [punica](https://github.com/punica-ai/punica)
- [MLC LLM](https://github.com/mlc-ai/mlc-llm)
与 MLC LLM / TVM 的生态位差异:
- TVM 擅长静态图,大模型推理的 shape 高度动态
- MLC LLM / TVM 的核心想法是一次编译处处运行,效率并不一定高
vLLM 的核心优势:
- 资源管理paged attention
- 动态调度
从某种角度来说,我们可以认为 vLLM 是一套大模型推理的前端调度、资源管理的分发决策器。
我们的核心目标是一套针对云服务提供场景的高效推理,与 TVM 的生态位不同,因此我们希望抽象的 IR 应该是:
- 针对**分布式系统**的大模型部署调优,因为单节点上算子在使用 cuBLAS, cuDNN 时已经达到了基本顶级的性能实现
inference 时高度动态的 shape 和 Alpa 这类工作做最优的计算切分(静态)的矛盾
---
以上为现阶段的工作,但是我个人的经验无法定义清楚上面这套工作的价值与贡献度,这一套 vllm -> IR -> Rust framework 需要通过实际工作发现其中的挑战,如果这个过程中没有足够的科研工作的挑战(而更多的是一些工程挑战的话),我认为我们定义的这套 IR也能够帮助我们做**自动化地大模型推理部署方案调优**。
现有的大模型推理部署方案自动调优的工作都局限于有限的 search spaceTP/PP/EP 的大小,可以归纳为简单的 profile+线性规划。我们希望能够 search 出一些更优的部署方案,而不是在有限的 space 内的调优,希望得到一些更偏向机制上的部署方案优化(而不仅是参数上)。
因此我会在当前考虑如何抽象这套 IR 时,考虑未来服务于这么一套自动化推理部署方案调优的工作,目前认为一套计算图抽象是相对可能的一个方案。