# 调度器 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 大小 |