Xenova's picture
Xenova HF Staff
sync 2e7068faf55e
2da2397 verified
Raw
History Blame
7.38 kB
{
"op": "com.microsoft.PagedAttention",
"tunableSpace": {
"WORKGROUP_SIZE": [32, 64, 128],
"SCATTER_WORKGROUP_SIZE": [64, 128, 256],
"SPLIT_TARGET_WORKGROUPS": [512, 1024, 2048, 4096],
"SPLIT_MIN_KEYS": [64, 128, 256],
"MAX_SPLITS": [8, 16, 32]
},
"cases": [
{
"name": "paged-decode-b8-past1024-h32kv8-d128",
"preset": "smoke",
"vars": { "dtype": "float16", "batch": 8, "past": 1024, "heads": 32, "kvHeads": 8, "headDim": 128 },
"attrs": { "num_heads": 32, "kv_num_heads": 8 },
"inputs": {
"queryT": { "shape": [8, 4096], "dtype": "float16", "dist": "normal", "seed": 9201, "scale": 1 },
"keyT": { "shape": [8, 1024], "dtype": "float16", "dist": "normal", "seed": 9202, "scale": 1 },
"valueT": { "shape": [8, 1024], "dtype": "float16", "dist": "normal", "seed": 9203, "scale": 1 },
"keyCacheT": { "shape": [512, 16, 8, 128], "dtype": "float16", "dist": "normal", "seed": 9204, "scale": 1 },
"valueCacheT": { "shape": [512, 16, 8, 128], "dtype": "float16", "dist": "normal", "seed": 9205, "scale": 1 },
"cumulativeSequenceLengthT": {
"shape": [9],
"dtype": "int32",
"data": { "kind": "values", "values": [0, 1, 2, 3, 4, 5, 6, 7, 8] }
},
"pastSeqlensT": { "shape": [8], "dtype": "int32", "dist": "constant", "value": 1023 },
"blockTableT": { "shape": [8, 64], "dtype": "int32", "dist": "linearMod", "seed": 9208, "step": 1, "mod": 512 }
},
"outputs": { "outputT": { "shape": [8, 4096], "dtype": "float16" } },
"bench": {
"metrics": [{ "type": "bandwidth", "value": "2 * args.batch * args.kvHeads * args.past * args.headDim * 2" }]
},
"provenance": {
"notes": "The KV bytes are counted off named vars like the model cases, not hardcoded: the literal this replaced used the QUERY head count for a grouped-query shape and four bytes for a float16 cache, so it over-stated the traffic eightfold and the case reported an impossible rate."
}
},
{
"name": "paged-decode-llama-b16-past2048-h32kv32-d128",
"preset": "model",
"provenance": {
"notes": "Llama class defaults (32 query heads, no GQA, head_dim 128) decoding 16 concurrent sequences with 2048 tokens of paged KV each."
},
"vars": { "dtype": "float16", "batch": 16, "past": 2048, "heads": 32, "kvHeads": 32, "headDim": 128 },
"attrs": { "num_heads": 32, "kv_num_heads": 32 },
"inputs": {
"queryT": { "shape": [16, 4096], "dtype": "float16", "dist": "normal", "seed": 7600, "scale": 0.3 },
"keyT": { "shape": [16, 4096], "dtype": "float16", "dist": "normal", "seed": 7601, "scale": 0.3 },
"valueT": { "shape": [16, 4096], "dtype": "float16", "dist": "normal", "seed": 7602, "scale": 0.3 },
"keyCacheT": { "shape": [2048, 16, 32, 128], "dtype": "float16", "dist": "normal", "seed": 7603, "scale": 0.3 },
"valueCacheT": {
"shape": [2048, 16, 32, 128],
"dtype": "float16",
"dist": "normal",
"seed": 7604,
"scale": 0.3
},
"cumulativeSequenceLengthT": {
"shape": [17],
"dtype": "int32",
"dist": "linearMod",
"seed": 7605,
"step": 1,
"mod": 17
},
"pastSeqlensT": { "shape": [16], "dtype": "int32", "dist": "constant", "value": 2048 },
"blockTableT": {
"shape": [16, 128],
"dtype": "int32",
"dist": "linearMod",
"seed": 7606,
"step": 1,
"mod": 2048
}
},
"outputs": { "outputT": { "shape": [16, 4096], "dtype": "float16" } },
"bench": {
"metrics": [{ "type": "bandwidth", "value": "2 * args.batch * args.kvHeads * args.past * args.headDim * 2" }]
}
},
{
"name": "paged-decode-mistral-b16-past4096-h32kv8-d128",
"preset": "model",
"provenance": {
"notes": "Mistral class defaults (32 query heads, 8 key/value heads, head_dim 128) at 4096 tokens of history -- the GQA case, where the cache is a quarter the size for the same context."
},
"vars": { "dtype": "float16", "batch": 16, "past": 4096, "heads": 32, "kvHeads": 8, "headDim": 128 },
"attrs": { "num_heads": 32, "kv_num_heads": 8 },
"inputs": {
"queryT": { "shape": [16, 4096], "dtype": "float16", "dist": "normal", "seed": 7700, "scale": 0.3 },
"keyT": { "shape": [16, 1024], "dtype": "float16", "dist": "normal", "seed": 7701, "scale": 0.3 },
"valueT": { "shape": [16, 1024], "dtype": "float16", "dist": "normal", "seed": 7702, "scale": 0.3 },
"keyCacheT": { "shape": [4096, 16, 8, 128], "dtype": "float16", "dist": "normal", "seed": 7703, "scale": 0.3 },
"valueCacheT": { "shape": [4096, 16, 8, 128], "dtype": "float16", "dist": "normal", "seed": 7704, "scale": 0.3 },
"cumulativeSequenceLengthT": {
"shape": [17],
"dtype": "int32",
"dist": "linearMod",
"seed": 7705,
"step": 1,
"mod": 17
},
"pastSeqlensT": { "shape": [16], "dtype": "int32", "dist": "constant", "value": 4096 },
"blockTableT": {
"shape": [16, 256],
"dtype": "int32",
"dist": "linearMod",
"seed": 7706,
"step": 1,
"mod": 4096
}
},
"outputs": { "outputT": { "shape": [16, 4096], "dtype": "float16" } },
"bench": {
"metrics": [{ "type": "bandwidth", "value": "2 * args.batch * args.kvHeads * args.past * args.headDim * 2" }]
}
},
{
"name": "paged-decode-gemma3-b8-past2048-h8kv4-d256",
"preset": "model",
"provenance": {
"notes": "Gemma3 class defaults (8 query heads, 4 key/value heads, head_dim 256) -- few heads but the widest head dimension in this set."
},
"vars": { "dtype": "float16", "batch": 8, "past": 2048, "heads": 8, "kvHeads": 4, "headDim": 256 },
"attrs": { "num_heads": 8, "kv_num_heads": 4 },
"inputs": {
"queryT": { "shape": [8, 2048], "dtype": "float16", "dist": "normal", "seed": 7800, "scale": 0.3 },
"keyT": { "shape": [8, 1024], "dtype": "float16", "dist": "normal", "seed": 7801, "scale": 0.3 },
"valueT": { "shape": [8, 1024], "dtype": "float16", "dist": "normal", "seed": 7802, "scale": 0.3 },
"keyCacheT": { "shape": [1024, 16, 4, 256], "dtype": "float16", "dist": "normal", "seed": 7803, "scale": 0.3 },
"valueCacheT": { "shape": [1024, 16, 4, 256], "dtype": "float16", "dist": "normal", "seed": 7804, "scale": 0.3 },
"cumulativeSequenceLengthT": {
"shape": [9],
"dtype": "int32",
"dist": "linearMod",
"seed": 7805,
"step": 1,
"mod": 9
},
"pastSeqlensT": { "shape": [8], "dtype": "int32", "dist": "constant", "value": 2048 },
"blockTableT": {
"shape": [8, 128],
"dtype": "int32",
"dist": "linearMod",
"seed": 7806,
"step": 1,
"mod": 1024
}
},
"outputs": { "outputT": { "shape": [8, 2048], "dtype": "float16" } },
"bench": {
"metrics": [{ "type": "bandwidth", "value": "2 * args.batch * args.kvHeads * args.past * args.headDim * 2" }]
}
}
]
}