
文章目录一、总体架构1架构图和线程关系2模型加载流程3模拟启动过程4scheduler主循环一、总体架构1架构图和线程关系主进程一个 PID ├── 对象HTTP ServerFastAPI app ├── 对象TokenizerManager ├── 用 Engine 的启动逻辑 fork/spawn 出下面这些 │ ├── 子进程Scheduler #1里面有 ModelRunner加载权重、跑前向 ├── 子进程Scheduler #2 ← tp_size / pp_size 大了才会有多个 ├── ... └── 子进程DetokenizerManager一个2模型加载流程当服务启动时用户可以通过 python -m sglang.launch_server 启动服务。该命令调用 prepare_server_args 解析命令行参数构造 ServerArgs其中包括 model_path、tp_size、dtype 等配置。随后服务启动 Scheduler 子进程。Scheduler 初始化时创建 ModelConfig 和模型 worker模型 worker 再创建 ModelRunner。ModelRunner 根据 ModelConfig 确定模型架构与相关配置准备模型加载器实例化模型并加载权重。模型加载完成后服务继续完成 DetokenizerManager、TokenizerManager 和 HTTP Server 的初始化进入可接收请求的状态。3模拟启动过程1.如果dp_size大于1PP 2TP 2DP 1因此会创建PP × TP 2 × 2 4 个 Scheduler 进程 Scheduler(pp0,tp0) Scheduler(pp0,tp1) Scheduler(pp1,tp0) Scheduler(pp1,tp1)2.如果dp_size大于1DP Controller 根据轮询、当前请求数或 Token 数把每个请求交给负载较低的模型副本。客户端请求 ↓ DP Controller ├── DP副本04个SchedulerPP2 × TP2 ├── DP副本14个SchedulerPP2 × TP2 └── DP副本N4个SchedulerPP2 × TP2执行流程就是4scheduler主循环接收请求 ↓ 更新 waiting / running 队列 ↓ 选择当前 Prefill 或 Decode Batch ↓ 提交当前 Batch 到 GPU ↓ 结果暂存 result_queue ↓ CPU 处理上一 Batch 的结果 ↓ 更新 Token、完成状态与 KV Cache ↓ 进入下一轮具体ModelRunner流程- _initialize_model - get_model_architecture - get_packed_modules_mapping - get_quant_config - model_class(config, quant_config, ...) - _get_all_weights - load_weights_and_postprocess - model.load_weights - quant_method.process_weights_after_loading量化方法路线图