动态批处理#
动态批处理是一种技术,它根据资源和SLO目标,在分块预填充策略的每次推理迭代中动态调整块大小,从而提高有效吞吐量并降低TBT。
动态批处理由 --SLO_limits_for_dynamic_batch 参数的值控制。值得注意的是,目前仅支持910 B3,且解码token数量规模需低于2048。特别是在Qwen、Llama模型上,改进效果相当明显。我们正在进行进一步的改进,该功能未来将支持更多XPU。
快速开始#
先决条件#
动态批处理目前依赖于一个保存在查找表中的离线成本模型来优化token预算。该查找表保存在一个'.csv'文件中,需要先从A2-B3-BLK128.csv下载,重命名后保存到路径
vllm_ascend/core/profile_table.csv。需要
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或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