跳转至

动态批处理

动态批处理是一种在分块预填充策略中,根据资源和SLO目标,在每次推理迭代期间动态调整块大小的技术,从而提升有效吞吐量并降低TBT。

动态批处理由 --SLO_limits_for_dynamic_batch 的值控制。 值得注意的是,目前仅支持 Atlas A2 推理产品,且解码 token 数量规模需低于 2048。 特别是在 Qwen、Llama 模型上,性能提升非常明显。 我们正在持续改进,未来该功能将支持更多 XPU。

快速开始

前提条件

  1. 动态批处理目前依赖于保存在查找表中的离线成本模型来优化 token 预算。查找表保存在 '.csv' 文件中,需先从 A2-B3-BLK128.csv 下载,重命名后保存至路径 vllm_ascend/core/profile_table.csv

  2. 需要 Pandas 来加载查找表,以防未安装 pandas。

    pip install pandas 
    

调优参数

--SLO_limits_for_dynamic_batch 是动态批处理功能的调优参数(整数类型),值越大,延迟限制越宽松,有效吞吐量越高。可根据具体模型或服务需求选择该参数。

--SLO_limits_for_dynamic_batch = -1  # Default value; dynamic batching is disabled.
--SLO_limits_for_dynamic_batch = 0  # Baseline value for dynamic batching; dynamic batching is disabled. FCFS and decode-first chunked prefilling strategy is used.
--SLO_limits_for_dynamic_batch > 0  # User-defined positive value; dynamic batching is enabled. FCFS and decode-first chunked prefilling strategy is used.

支持的模型

目前,动态批处理在多个稠密模型上表现更佳,包括 Qwen 和 Llama(8B 至 32B),且 tensor_parallel_size=8。对于不同模型,需要设置合适的 SLO_limits_for_dynamic_batch 参数。该参数的经验值通常为 35, 50, or 75。因此,需要进行一些额外测试以选择最佳参数。

使用方法

动态批处理用于在线推理。一个完全可执行的示例如下:

SLO_LIMIT=50
vllm serve Qwen/Qwen2.5-14B-Instruct\
    --additional_config '{"SLO_limits_for_dynamic_batch":'${SLO_LIMIT}'}' \
    --max-num-seqs 256 \
    --block-size 128 \
    --tensor_parallel_size 8 \
    --load_format dummy \
    --max_num_batched_tokens 1024 \
    --max-model-len 9000 \
    --host localhost \
    --port 12091 \
    --gpu-memory-utilization 0.9 \
    --trust-remote-code