什么是GLLM?
Global Balanced Pipeline Parallelism System for Distributed LLM Serving with Token Throttling
Github Repo: https://github.com/gty111/GLLM
如何实现pipeline并行
worker是什么?
每个物理设备,负责推理的具体行为
worker之间如何分工?
首先需要了解worker的rank是如何确定的:
- 总数rank : PP_size x TP_size = rank
- 每个worker的有三个rank值(这里以pp_size = 4 , tp_size = 2举例):
- rank: [0,1,2,3,4,5,6,7]
- pp_rank = rank // tp_size : [0, 0, 1, 1, 2, 2, 3, 3]
- tp_rank = rank % tp_size : [0, 1, 0, 1, 0, 1, 0, 1]
1 | def run_worker(worker: Worker): |
worker职责
- rank=0的worker作为驱动节点,负责很多工作:
- 系统初始化
- 整体pipeline控制
- check_abort_seqs # 1. 检查中止请求
- recv_ipc_package # 2. 接收新请求
- recv_next_tokens # 3. 接收生成的tokens
- schedule_forward # 4. 调度和前向推理
- process_output # 5. 处理输出结果
- pp_rank=0 的worker