[Hybrid Allocator] Better layer padding strategy for gpt-oss eagle (#29303)
Signed-off-by: Chen Zhang <zhangch99@outlook.com>
This commit is contained in:
@@ -971,7 +971,16 @@ def _get_kv_cache_groups_uniform_page_size(
|
||||
# is the minimum number of layers among all attention types. Need a better
|
||||
# strategy if we want to support more complex patterns (e.g., 20 full + 30
|
||||
# sw, where the group size should be 10).
|
||||
group_size = min([len(layers) for layers in same_type_layers.values()])
|
||||
min_num_layers = min([len(layers) for layers in same_type_layers.values()])
|
||||
group_size = min_num_layers
|
||||
max_num_layers = max([len(layers) for layers in same_type_layers.values()])
|
||||
if max_num_layers < min_num_layers * 1.25:
|
||||
# If the number of layers is not much larger than the minimum number of layers,
|
||||
# use the maximum number of layers as the group size to avoid too many padding
|
||||
# layers. A typical example is gpt-oss-20b + eagle, with 12 sw + 13 full. We
|
||||
# pad it to (13 sw, 13 full) instead of (12 sw, 24 full). 1.25 is just a
|
||||
# magic number to avoid too many padding layers.
|
||||
group_size = max_num_layers
|
||||
grouped_layers = []
|
||||
for layers in same_type_layers.values():
|
||||
num_padding_layers = group_size - len(layers) % group_size
|
||||
|
||||
Reference in New Issue
Block a user