InternLM/lmdeploy项目中的TurboMind推理引擎配置详解
概述
在InternLM/lmdeploy项目中,TurboMind作为核心推理引擎之一,其性能表现与配置文件密切相关。本文将深入解析TurboMind的配置参数,帮助开发者更好地理解和优化模型推理过程。
TurboMind 2.x配置解析
TurboMind 2.x版本引入了多项创新特性,其配置文件结构也进行了重大调整。我们以llama-2-7b-chat模型为例进行说明。
模型固有属性
这些参数由模型架构决定,不可修改:
model_name = llama2
head_num = 32 # 注意力头数量
kv_head_num = 32 # KV头数量
vocab_size = 32000 # 词表大小
num_layer = 32 # 模型层数
inter_size = 11008 # FFN中间层维度
norm_eps = 1e-06 # LayerNorm的epsilon值
attn_bias = 0 # 是否使用注意力偏置
start_id = 1 # 起始token ID
end_id = 2 # 结束token ID
rotary_embedding = 128 # RoPE嵌入维度
rope_theta = 10000.0 # RoPE的theta参数
size_per_head = 128 # 每个注意力头的维度
关键推理参数
1. 数据类型配置
weight_type = fp16 # 支持fp16/int4
group_size = 0 # 量化分组大小
weight_type
决定权重数据类型,fp16表示半精度浮点,int4表示4位整型量化group_size
仅当使用AWQ量化时有效,表示量化分组大小
2. 批处理配置
max_batch_size = 64 # 最大批处理大小
TurboMind 2.x默认批处理大小提升至64,与KV缓存管理解耦。
3. KV缓存管理
TurboMind 2.x采用分页注意力机制(Paged Attention),KV缓存以块为单位管理:
cache_block_seq_len = 128 # 每个KV块的序列长度
cache_max_entry_count = 0.5 # KV块内存占比
cache_chunk_size = 1 # KV块分配粒度
KV块内存计算公式:
内存 = cache_block_seq_len * num_layer * kv_head_num * size_per_head * 2 * sizeof(kv_data_type)
cache_max_entry_count
的三种含义:
- (0,1)小数:表示GPU显存使用比例
-
0整数:表示KV块总数
- 在v0.2.1+版本中:表示空闲显存使用比例
4. 前缀缓存
enable_prefix_caching = False
启用后,相同的前缀prompt可以复用KV缓存,显著提升多轮对话性能。
5. 长文本支持
rope_scaling_factor = 0.0 # 启用Dynamic NTK
use_logn_attn = 0 # 启用LogN注意力缩放
这两个参数可增强模型处理长文本的能力。
TurboMind 1.0配置解析
TurboMind 1.0的配置结构与2.x版本有显著差异,主要区别在于KV缓存管理方式。
关键差异点
-
KV缓存管理:
- 基于
session_len
(会话长度)和cache_max_entry_count
(缓存条目数) - 没有分块概念,整体分配
- 基于
-
批处理限制:
max_batch_size = 32
必须满足
max_batch_size <= cache_max_entry_count
-
长文本支持:
use_dynamic_ntk = 1 # 启用Dynamic NTK use_logn_attn = 1 # 启用LogN注意力缩放
配置最佳实践
-
显存优化:
- 根据GPU显存调整
cache_max_entry_count
- 长文本场景适当降低比例
- 根据GPU显存调整
-
性能调优:
- 增大
max_batch_size
提升吞吐量 - 启用前缀缓存优化多轮对话
- 增大
-
精度选择:
- 显存紧张时考虑int4量化
- 精度敏感场景使用fp16
版本迁移建议
从TurboMind 1.0迁移到2.x时需注意:
- KV缓存管理机制完全不同
- 批处理限制解除
- 新增前缀缓存等优化特性
建议新项目直接使用TurboMind 2.x版本,以获得更好的性能和功能支持。
通过合理配置这些参数,开发者可以在不同硬件条件下实现最佳的推理性能平衡。理解每个参数的含义和作用,是优化LLM推理性能的关键一步。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考