Files
obsidian/projects/moe-autoscaling/Bailian Arch.md

131 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

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.

# 名词解释
- **CPFS**: Cloud Parallel File Storage. CPFS provides a unified namespace and supports concurrent access of hundreds of machines. CPFS also provides an I/O throughput of tens of GB/s and millions of IOPS to ensure a sub-millisecond latency.
- **ODPS (MaxCompute)**: MaxCompute (previously known as ODPS) is a general purpose, fully managed, multi-tenancy data processing platform for large-scale data warehousing. MaxCompute supports various data importing solutions and distributed computing models, enabling users to effectively query massive datasets, reduce production costs, and ensure data security.
- **CEN**: Cloud Enterprise Network. CEN uses transit routers deployed in different regions to build a full-mesh network on top of the Alibaba Cloud global transmission network.
- **BladeLLM**: BladeLLM is an inference engine tailored for large language model (LLM) optimization and high-performance model deployment. BladeLLM has an advanced technical architecture and provides a user-friendly interface and outstanding performance to address new opportunities and challenges in LLM fields. This makes BladeLLM a suitable choice for enterprises that want to deploy LLMs and use the LLMs to perform inference.
# Arch
![[250716-011140.png]]
百炼的资源池的计算任务有 4 层:
- 实时推理任务
- Batch 推理任务
- 闲时训练任务
- 闲时数据处理任务
## 网关
接口协议层面提供了标准的 HTTPHTTP SSE 和 Websocket 的接入
用户 API 的接入、鉴权、路由、限流、协议转换、计量、计费(部分)、内容安全和所有与之配套的业务逻辑
网关层同时作为平台的基础服务层,提供 Apikey、文件、用户空间、资源权限等基础服务能力
## model serving
重构前:每个 model 部署一个 allinone简单理解为一个 model 带着所有的 agent/plugin 作为一个最小单元进行部署。
![[250715-192813.png]]
重构后:每个 agent/plugin 单独部署(必然趋势),那么确实会存在 gateway -> agent1 -> gateway -> agent2 -> ... 这种不断通信的模式。尤其在 model 的 output 越来越长、模态种类越来越多(图片、视频)的场景下,通信开销确实不可忽视。
Q: 不同 agent 之间的数据如何传递?都需要经过网关再发给另一端吗?是否存在一个 global storage 存放不同 agent 的 output实现共享那么也需要考虑 global storage 内的隔离)
![[250715-135101.png]]
## VL model
通过一系列一体化工作来减少图片/视频的传输,否则所有的图片/视频数据在经过每个节点时都需要传输,带来大量的开销。
![[250715-202224.png]]
![[250715-202246.png]]
![[250715-202304.png]]
## global batching
方案:
> 在Global Dynamic Batching的设计上我们选择使用拉模式来进行调度一句话概括为API Server先将请求发送至Redis全局队列推理节点Model Serving从全局队列中拉取请求。
Claim:
> RR模式负载不均衡
> RR模式所有请求在调度层的视角下是相同的LLM请求的差异性会导致负载不均衡
>
> 模型服务的容量难以评估:
> 每个LLM请求的生成长度是未知数无法准确评估下一时刻模型服务的容量
>
> 长尾延迟:
> 在集群整体水位较低的情况下也会出现非预期的长尾延迟请求Prefill聚集
> 低时延迟API Server和Turbo对Redis的操作耗时在毫秒级别
但是每个推理节点主动从全局队列拉时,如何选择拉哪个请求?确实主动拉取的方案能够保证负载均衡和可靠性,但 KVCache 亲和性如何考虑?
$n$ 个请求时,$k$ 个 instance$k < n$$O(nk) \to O(n^2)$若每个节点都需要独立判断 KVCache 亲和性
只拉指定位置的请求
![[250716-012653.png]]
且每个节点不知道其它节点的状态容易陷入非全局最优的局面
## batch
> 财年batch api日调用占比商业化模型大盘20%带动资源利用率提升10
技术面临两大挑战
1. 如何高速稳定的处理用户任务
长请求qps要大于2.5万+
有状态考虑ACID不能丢不能重复状态一致失败重试
2. 不增加额外成本不影响在线api的SLO
不能为batch准备GPU资源在线闲时的资源有多少如何给batch使用
- 用户任务并发改为用户模型任务并发解决用户多模型任务排队问题
调度策略升级requestId排队改为batchId排队
- 解决查request表慢sql问题提升整体qps从1000qps提升至6000+qps
- 多个batch同时调度长短请求混合减少模型服务突发扩缩容次数
- 灵活调度策略方便设置高优先级用户
解决查request表慢sql问题提升整体qps从1000qps提升至6000+qps无法理解是否说明查 sql 表成为了比 batch 推理更大的 bottleneck
Q: ToB 场景中 online batch 的需求分别占多少
## serverless
TBD
## 无影 AgentBay
TBD
---
## 杂
>「目前百炼上架、更新、下架一个基础模型服务需要很多团队配合完成」,每个模型上线需要:商业化研发:设置模型计量、计费配置;测试:模型出账、配置验证
这件事听起来非常麻烦,是否有统一的设置方案
> PAI为百炼提供模块功能例如拓扑感知的POD分配策略。合作的团队不止有PAI例如模型启动加速的工作也会有更底层的阿里云团队参与。
# Thinking
batch 任务和 online 任务处理时的区别,对 MoE 有什么不同的需求