专家负载均衡 (EPLB)#

概述#

在LLM(大语言模型)服务中,MoE(混合专家)模型的专家均衡对于实现最佳性能至关重要。推理过程中动态改变专家会因全局暂停操作而对TTFT(首词元时间)和TPOT(每输出词元时间)产生负面影响。SwiftBalancer支持异步专家负载均衡,实现零开销的专家迁移,确保服务无缝连续。

EPLB效果#

  • 降低延迟:动态均衡专家负载,通过在各专家间均匀分配工作负载,最小化TTFT和TPOT。

  • 提升吞吐量:优化GPU利用率,在高并发场景下提高词元生成速度。

  • 零开销迁移:专家重分布异步进行,不会中断正在进行的推理请求。

  • 自适应扩展:自动适应工作负载波动,同时保持性能稳定。

  • 容错性:冗余的专家放置确保在硬件故障期间系统的韧性。

支持场景#

模型#

DeepSeekV3/V3.1/R1, Qwen3-MoE

MOE量化类型#

W8A8-Dynamic

如何使用EPLB#

动态EPLB#

我们需要添加环境变量 export DYNAMIC_EPLB="true" 来启用vLLM EPLB。启用具有自动调优参数的动态均衡。根据工作负载模式调整 expert_heat_collection_interval 和 algorithm_execution_interval。在当前版本中,我们建议使用以下策略:swift balancer(2)。

vllm serve Qwen/Qwen3-235B-A22 \
  --tensor-parallel-size 16 \
  --enable-expert-parallel \
  --additional-config '{ "eplb_config": {
    "dynamic_eplb": true,
    "expert_heat_collection_interval": 600,
    "algorithm_execution_interval": 50,
    "eplb_policy_type": 2,
    "num_redundant_experts": {ep_size},
    }}'

静态EPLB#

初始设置(记录专家映射)#

我们需要添加环境变量 export EXPERT_MAP_RECORD="true" 来记录专家映射。使用 expert_map_record_path 生成初始专家分布映射。这将为未来的部署创建一个基线配置。

vllm serve Qwen/Qwen3-235B-A22 \
  --tensor-parallel-size 16 \
  --enable-expert-parallel \
  --additional-config '{ "eplb_config": {
    "expert_map_record_path": "/path/to/eplb.json",
    "num_redundant_experts": 16,
    "expert_heat_collection_interval": 400,
    "algorithm_execution_interval": 30
  }}'

后续部署(使用记录的映射)#

加载预记录的专家映射以获得一致的性能。这避免了在运行时重新计算分布。

vllm serve Qwen/Qwen3-235B-A22 \
  --tensor-parallel-size 16 \
  --enable-expert-parallel \
  --additional-config '{
    "eplb_config": {"expert_map_path": "/path/to/eplb.json"}
  }'

关键注意事项#

  1. 参数调优:

    • expert_heat_collection_interval:对于稳定的工作负载使用较高值(例如400+);对于波动流量使用较低值(例如100-200)。

    • algorithm_execution_interval:应≥30,以避免在启动期间过早进行均衡。

    • num_redundant_experts:必须与张量并行大小匹配(例如,16个GPU对应16),以确保足够的冗余。

  2. 硬件要求:

    • 确保所有GPU具有相同的内存容量和计算能力。

    • 网络带宽必须支持专家重分布流量(建议≥10 Gbps)。

  3. 模型兼容性:

    • 仅支持显式专家并行的MoE模型(例如Qwen3 MoE模型)是兼容的。

    • 验证模型架构是否通过 --enable-expert-parallel 支持动态专家路由。

  4. 监控与验证:

    • 跟踪指标:expert_load_balance_ratio, ttft_p99, tpot_avg 和 gpu_utilization。

    • 使用vLLM监控器在运行时检测不均衡。

    • 在加载前始终验证专家映射的JSON结构(使用jq或类似工具验证)。

  5. 启动行为:

    • 初始请求在第一个均衡周期(通常1-2分钟)内可能会经历较高的延迟。

    • 避免在预热阶段出现突发的流量高峰。

  6. 常见陷阱:

    • 张量并行大小与实际GPU数量不匹配 → 导致资源利用不足。

    • 未先生成映射就使用 expert_map_path → 运行时错误。

    • 设置 num_redundant_experts > 可用GPU数量 → 系统故障。