# 调度器 - 飞桨大语言模型推理部署工具包

跳转至

English

# 调度器

FastDeploy 目前支持两种调度器: 本地调度器 和 全局调度器 。 全局调度器专为大规模集群设计，能够基于实时工作负载指标在节点间实现二级负载均衡。

## 调度策略

### 本地调度器

本地调度器可以等效于内存管理器，根据 任务队列长度 和 TTL 的配置进行内存淘汰。

### 全局调度器

全局调度器基于 Redis 实现，各个节点根据自身 GPU 负载情况，空闲时主动从其他节点窃取任务，然后将任务的执行结果推送回原节点。

### PD分离调度器

基于全局调度器，FastDeploy 引入了专为大语言模型推理场景优化的 PD 分离调度策略。该策略将推理流程解耦为两个独立阶段： - Prefill 阶段 ：构建 KV 缓存，该过程计算密集度高、显存占用大，但延迟低；

- Decode 阶段：进行自回归解码，该过程串行执行、时延高，但显存占用低。

通过角色分离（prefill 节点负责接收并处理请求，decode节点完成后续生成），可以更细粒度地控制资源分配、提高吞吐量与 GPU 利用率。

## 配置参数

字段名 | 字段类型 | 是否必填 | 默认值 | 生效范围 | 说明
--- | --- | --- | --- | --- | ---
scheduler_name | str | 否 | local | local,global,splitwise | 调度器名：`local`，`global`，`splitwise`
scheduler_max_size | int | 否 | -1 | local | 任务最大队列长度
scheduler_ttl | int | 否 | 900 | local,global,splitwise | 任务最大存活时间(秒)
scheduler_host | str | 否 | 127.0.0.1 | global,splitwise | redis服务地址
scheduler_port | int | 否 | 6379 | global,splitwise | redis服务端口
scheduler_db | int | 否 | 0 | global,splitwise | redis数据库序号
scheduler_password | str | 否 | "" | global,splitwise | redis访问密码
scheduler_topic | str | 否 | default | global,splitwise | 在同一个主题下的节点之间才会发生任务调度
scheduler_min_load_score | float | 否 | 3 | global | 当节点的负载大于最小阈值时，若其他节点空闲则可以窃取该节点的任务
scheduler_load_shards_num | int | 否 | 1 | global | 集群负载信息表的分片数
scheduler_sync_period | int | 否 | 5 | splitwise | 节点负载同步周期(秒)
scheduler_expire_period | int | 否 | 3000 | splitwise | 节点信息失效时间(秒)，用于心跳机制
scheduler_release_load_expire_period | int | 否 | 600 | splitwise | 请求失效释放负载时间(秒)
scheduler_reader_parallel | int | 否 | 4 | splitwise | 输出读取线程数
scheduler_writer_parallel | int | 否 | 4 | splitwise | 写入线程数
scheduler_reader_batch_size | int | 否 | 200 | splitwise | 每次从 Redis 获取结果的 batch 大小
scheduler_writer_batch_size | int | 否 | 200 | splitwise | 每次向 Redis 写入结果的 batch 大小