ModelServer:基于 SGLang 的前端分发系统

科技   2024-12-06 20:10   日本  



作者丨Chayenne Zhao
来源丨https://zhuanlan.zhihu.com/p/718015016
编辑丨GiantPandaCV


前段时间被 Alfword 折磨的够呛。当我在服务器上同时开跑上千个 Alfword 游戏后,LLM server 的效率显著下降,并且经常出现 connection time out。索性我手写了一个集成了 configuration 和 serving 的框架来解决这些问题。具体而言,我希望利用 SGLang 同时 serve 多个模型(比如 8 个 Llama3.1 8b),每个模型映射单独的端口;同时开启上千个 running task,每个 task 具有一个 ModelServer 用以选择所有端口中的某一个进行交互。

在此基础上:

  1. ModelServer 在单次 API 请求失败时,进行有限的重试;

  2. ModelServer 会在 init 以及单次 API 请求时间超长时,遍历当前的所有端口,选择最快的端口——尽可能使用同一个端口是为了充分利用 SGLang 后端的前缀树;


Chayenne Zhao:SGLang 后端原文解析https://zhuanlan.zhihu.com/p/716543182

需求听上去简单,但是实现起来还是有很多心思。这种简单的轮子,造起来嫌麻烦,但是自己又找不到现成的。自己写了两三周,不断调试优化,这里分享下结果。

https://github.com/zhaochenyang20/ModelServer

ModelServer 实现了如下的 feature:

  1. 多模型并行服务:同时管理多个模型,提高并发处理能力和资源利用率。

  2. 最速端口选择:确保在动态负载环境下始终保持不错的性能(如果当前的”最速服务器“被严重拖慢,则会重新选择”最速服务器“)。

  3. 有限容错。

  4. 可扩展性:设计上考虑了未来的扩展需求。无论是增加更多的模型、调整重试策略,还是引入新的负载均衡算法,都可以相对容易地集成到现有框架中。

  5. 性能监控:实时追踪各个端口的响应时间和成功率。

自己用的最上心,欢迎大家提意见。


- The End -


GiantPandaCV

长按二维码关注我们

本公众号专注:

1. 技术分享;

2. 学术交流

3. 资料共享

欢迎关注我们,一起成长!



GiantPandaCV
专注于大语言模型,CUDA,编译器,工程部署和优化等多个方向技术分享。我们不仅坚持原创,也规范转载知乎大佬们的高质量博文。希望在传播知识、分享知识的同时能够启发你,在人类通往AGI的道路上互相帮助(・ω\x26lt;)☆
 最新文章