Download build/webgpu/test.json from webgpu-kernels/com.microsoft.MatMulNBitsQkv: direct link, hf CLI and curl.
- Browser
- Download file 32.5 kB
-
https://huggingface.co/kernels/webgpu-kernels/com.microsoft.MatMulNBitsQkv/resolve/v1/build/webgpu/test.json
- Command line
-
hf download hf://webgpu-kernels/com.microsoft.MatMulNBitsQkv@v1/build/webgpu/test.json
-
curl -L -o test.json https://huggingface.co/kernels/webgpu-kernels/com.microsoft.MatMulNBitsQkv/resolve/v1/build/webgpu/test.json
32.5 kB
| { | |
| "fixtureArrays": { | |
| "norm_gqa_input_vBT": [90, 17, 203, 156, 64, 241, 112, 38, 175, 229, 83, 11, 198, 147, 52, 220, 105] | |
| }, | |
| "cases": [ | |
| { | |
| "name": "norm_gqa", | |
| "provenance": { | |
| "notes": "Grouped-query shape: Nq is twice Nkv, so the three projections have two different column counts." | |
| }, | |
| "attrs": { "K": 32, "Nq": 8, "Nkv": 4, "block_size": 32 }, | |
| "inputs": { | |
| "aT": { | |
| "dtype": "float32", | |
| "shape": [3, 32], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.29, "scale": 0.8 } | |
| }, | |
| "normScaleT": { | |
| "dtype": "float32", | |
| "shape": [32], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.23, "cosStep": 0.41, "scale": 0.4, "offset": 1.0 } | |
| }, | |
| "qBT": { | |
| "dtype": "uint8", | |
| "shape": [8, 1, 16], | |
| "data": { "kind": "cycle", "values": [27, 180, 75, 226, 33, 150, 201, 108, 57, 246, 129, 66, 195] } | |
| }, | |
| "qScalesT": { | |
| "dtype": "float32", | |
| "shape": [8, 1], | |
| "data": { "kind": "cycle", "values": [0.04, 0.055, 0.05, 0.065, 0.06, 0.075, 0.07] } | |
| }, | |
| "kBT": { | |
| "dtype": "uint8", | |
| "shape": [4, 1, 16], | |
| "data": { "kind": "cycle", "values": [211, 44, 137, 98, 165, 20, 233, 121, 78, 190, 15, 252, 87, 143, 61] } | |
| }, | |
| "kScalesT": { | |
| "dtype": "float32", | |
| "shape": [4, 1], | |
| "data": { "kind": "cycle", "values": [0.045, 0.03, 0.07, 0.05, 0.08, 0.035] } | |
| }, | |
| "vBT": { | |
| "dtype": "uint8", | |
| "shape": [4, 1, 16], | |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/norm_gqa_input_vBT" } } | |
| }, | |
| "vScalesT": { | |
| "dtype": "float32", | |
| "shape": [4, 1], | |
| "data": { "kind": "cycle", "values": [0.052, 0.038, 0.061, 0.029, 0.073] } | |
| } | |
| }, | |
| "outputs": { | |
| "qT": { "dtype": "float32", "shape": [3, 8], "tolerance": 0.0001, "relTolerance": 0.0001 }, | |
| "kT": { "dtype": "float32", "shape": [3, 4], "tolerance": 0.0001, "relTolerance": 0.0001 }, | |
| "vT": { "dtype": "float32", "shape": [3, 4], "tolerance": 0.0001, "relTolerance": 0.0001 } | |
| } | |
| }, | |
| { | |
| "name": "norm_rows_past_one_tile", | |
| "provenance": { | |
| "notes": "Ten activation rows against an eight-row projection tile: two row groups where the second carries only two real rows, so the store guard has to drop the six that clamped onto the last row." | |
| }, | |
| "attrs": { "K": 32, "Nq": 8, "Nkv": 4, "block_size": 32 }, | |
| "inputs": { | |
| "aT": { | |
| "dtype": "float32", | |
| "shape": [10, 32], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.31, "scale": 0.8 } | |
| }, | |
| "normScaleT": { | |
| "dtype": "float32", | |
| "shape": [32], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.23, "cosStep": 0.41, "scale": 0.4, "offset": 1.0 } | |
| }, | |
| "qBT": { | |
| "dtype": "uint8", | |
| "shape": [8, 1, 16], | |
| "data": { "kind": "cycle", "values": [27, 180, 75, 226, 33, 150, 201, 108, 57, 246, 129, 66, 195] } | |
| }, | |
| "qScalesT": { | |
| "dtype": "float32", | |
| "shape": [8, 1], | |
| "data": { "kind": "cycle", "values": [0.04, 0.055, 0.05, 0.065, 0.06, 0.075, 0.07] } | |
| }, | |
| "kBT": { | |
| "dtype": "uint8", | |
| "shape": [4, 1, 16], | |
| "data": { "kind": "cycle", "values": [211, 44, 137, 98, 165, 20, 233, 121, 78, 190, 15, 252, 87, 143, 61] } | |
| }, | |
| "kScalesT": { | |
| "dtype": "float32", | |
| "shape": [4, 1], | |
| "data": { "kind": "cycle", "values": [0.045, 0.03, 0.07, 0.05, 0.08, 0.035] } | |
| }, | |
| "vBT": { | |
| "dtype": "uint8", | |
| "shape": [4, 1, 16], | |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/norm_gqa_input_vBT" } } | |
| }, | |
| "vScalesT": { | |
| "dtype": "float32", | |
| "shape": [4, 1], | |
| "data": { "kind": "cycle", "values": [0.052, 0.038, 0.061, 0.029, 0.073] } | |
| } | |
| }, | |
| "outputs": { | |
| "qT": { "dtype": "float32", "shape": [10, 8], "tolerance": 0.0001, "relTolerance": 0.0001 }, | |
| "kT": { "dtype": "float32", "shape": [10, 4], "tolerance": 0.0001, "relTolerance": 0.0001 }, | |
| "vT": { "dtype": "float32", "shape": [10, 4], "tolerance": 0.0001, "relTolerance": 0.0001 } | |
| } | |
| }, | |
| { | |
| "name": "skip_gqa", | |
| "attrs": { "K": 32, "Nq": 8, "Nkv": 4, "block_size": 32, "epsilon": 0.00001 }, | |
| "inputs": { | |
| "aT": { | |
| "dtype": "float32", | |
| "shape": [3, 32], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.29, "scale": 0.8 } | |
| }, | |
| "skipT": { | |
| "dtype": "float32", | |
| "shape": [3, 32], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.37, "cosStep": 0.11, "scale": 0.5 } | |
| }, | |
| "normScaleT": { | |
| "dtype": "float32", | |
| "shape": [32], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.23, "cosStep": 0.41, "scale": 0.4, "offset": 1.0 } | |
| }, | |
| "qBT": { | |
| "dtype": "uint8", | |
| "shape": [8, 1, 16], | |
| "data": { "kind": "cycle", "values": [27, 180, 75, 226, 33, 150, 201, 108, 57, 246, 129, 66, 195] } | |
| }, | |
| "qScalesT": { | |
| "dtype": "float32", | |
| "shape": [8, 1], | |
| "data": { "kind": "cycle", "values": [0.04, 0.055, 0.05, 0.065, 0.06, 0.075, 0.07] } | |
| }, | |
| "kBT": { | |
| "dtype": "uint8", | |
| "shape": [4, 1, 16], | |
| "data": { "kind": "cycle", "values": [211, 44, 137, 98, 165, 20, 233, 121, 78, 190, 15, 252, 87, 143, 61] } | |
| }, | |
| "kScalesT": { | |
| "dtype": "float32", | |
| "shape": [4, 1], | |
| "data": { "kind": "cycle", "values": [0.045, 0.03, 0.07, 0.05, 0.08, 0.035] } | |
| }, | |
| "vBT": { | |
| "dtype": "uint8", | |
| "shape": [4, 1, 16], | |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/norm_gqa_input_vBT" } } | |
| }, | |
| "vScalesT": { | |
| "dtype": "float32", | |
| "shape": [4, 1], | |
| "data": { "kind": "cycle", "values": [0.052, 0.038, 0.061, 0.029, 0.073] } | |
| } | |
| }, | |
| "outputs": { | |
| "qT": { "dtype": "float32", "shape": [3, 8], "tolerance": 0.0001, "relTolerance": 0.0001 }, | |
| "kT": { "dtype": "float32", "shape": [3, 4], "tolerance": 0.0001, "relTolerance": 0.0001 }, | |
| "vT": { "dtype": "float32", "shape": [3, 4], "tolerance": 0.0001, "relTolerance": 0.0001 } | |
| } | |
| }, | |
| { | |
| "name": "skipsum_gqa", | |
| "attrs": { "K": 32, "Nq": 8, "Nkv": 4, "block_size": 32 }, | |
| "inputs": { | |
| "aT": { | |
| "dtype": "float32", | |
| "shape": [3, 32], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.29, "scale": 0.8 } | |
| }, | |
| "skipT": { | |
| "dtype": "float32", | |
| "shape": [3, 32], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.37, "cosStep": 0.11, "scale": 0.5 } | |
| }, | |
| "normScaleT": { | |
| "dtype": "float32", | |
| "shape": [32], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.23, "cosStep": 0.41, "scale": 0.4, "offset": 1.0 } | |
| }, | |
| "qBT": { | |
| "dtype": "uint8", | |
| "shape": [8, 1, 16], | |
| "data": { "kind": "cycle", "values": [27, 180, 75, 226, 33, 150, 201, 108, 57, 246, 129, 66, 195] } | |
| }, | |
| "qScalesT": { | |
| "dtype": "float32", | |
| "shape": [8, 1], | |
| "data": { "kind": "cycle", "values": [0.04, 0.055, 0.05, 0.065, 0.06, 0.075, 0.07] } | |
| }, | |
| "kBT": { | |
| "dtype": "uint8", | |
| "shape": [4, 1, 16], | |
| "data": { "kind": "cycle", "values": [211, 44, 137, 98, 165, 20, 233, 121, 78, 190, 15, 252, 87, 143, 61] } | |
| }, | |
| "kScalesT": { | |
| "dtype": "float32", | |
| "shape": [4, 1], | |
| "data": { "kind": "cycle", "values": [0.045, 0.03, 0.07, 0.05, 0.08, 0.035] } | |
| }, | |
| "vBT": { | |
| "dtype": "uint8", | |
| "shape": [4, 1, 16], | |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/norm_gqa_input_vBT" } } | |
| }, | |
| "vScalesT": { | |
| "dtype": "float32", | |
| "shape": [4, 1], | |
| "data": { "kind": "cycle", "values": [0.052, 0.038, 0.061, 0.029, 0.073] } | |
| } | |
| }, | |
| "outputs": { | |
| "qT": { "dtype": "float32", "shape": [3, 8], "tolerance": 0.0001, "relTolerance": 0.0001 }, | |
| "kT": { "dtype": "float32", "shape": [3, 4], "tolerance": 0.0001, "relTolerance": 0.0001 }, | |
| "vT": { "dtype": "float32", "shape": [3, 4], "tolerance": 0.0001, "relTolerance": 0.0001 }, | |
| "residualT": { "dtype": "float32", "shape": [3, 32], "tolerance": 0.000001, "relTolerance": 0.000001 } | |
| } | |
| }, | |
| { | |
| "name": "decode_single_row", | |
| "attrs": { "K": 32, "Nq": 8, "Nkv": 4, "block_size": 32 }, | |
| "inputs": { | |
| "aT": { | |
| "dtype": "float32", | |
| "shape": [1, 32], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.29, "scale": 0.8 } | |
| }, | |
| "skipT": { | |
| "dtype": "float32", | |
| "shape": [1, 32], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.37, "cosStep": 0.11, "scale": 0.5 } | |
| }, | |
| "normScaleT": { | |
| "dtype": "float32", | |
| "shape": [32], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.23, "cosStep": 0.41, "scale": 0.4, "offset": 1.0 } | |
| }, | |
| "qBT": { | |
| "dtype": "uint8", | |
| "shape": [8, 1, 16], | |
| "data": { "kind": "cycle", "values": [27, 180, 75, 226, 33, 150, 201, 108, 57, 246, 129, 66, 195] } | |
| }, | |
| "qScalesT": { | |
| "dtype": "float32", | |
| "shape": [8, 1], | |
| "data": { "kind": "cycle", "values": [0.04, 0.055, 0.05, 0.065, 0.06, 0.075, 0.07] } | |
| }, | |
| "kBT": { | |
| "dtype": "uint8", | |
| "shape": [4, 1, 16], | |
| "data": { "kind": "cycle", "values": [211, 44, 137, 98, 165, 20, 233, 121, 78, 190, 15, 252, 87, 143, 61] } | |
| }, | |
| "kScalesT": { | |
| "dtype": "float32", | |
| "shape": [4, 1], | |
| "data": { "kind": "cycle", "values": [0.045, 0.03, 0.07, 0.05, 0.08, 0.035] } | |
| }, | |
| "vBT": { | |
| "dtype": "uint8", | |
| "shape": [4, 1, 16], | |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/norm_gqa_input_vBT" } } | |
| }, | |
| "vScalesT": { | |
| "dtype": "float32", | |
| "shape": [4, 1], | |
| "data": { "kind": "cycle", "values": [0.052, 0.038, 0.061, 0.029, 0.073] } | |
| } | |
| }, | |
| "outputs": { | |
| "qT": { "dtype": "float32", "shape": [1, 8], "tolerance": 0.0001, "relTolerance": 0.0001 }, | |
| "kT": { "dtype": "float32", "shape": [1, 4], "tolerance": 0.0001, "relTolerance": 0.0001 }, | |
| "vT": { "dtype": "float32", "shape": [1, 4], "tolerance": 0.0001, "relTolerance": 0.0001 }, | |
| "residualT": { "dtype": "float32", "shape": [1, 32], "tolerance": 0.000001, "relTolerance": 0.000001 } | |
| } | |
| }, | |
| { | |
| "name": "equal_nq_nkv", | |
| "provenance": { | |
| "notes": "Multi-head shape where Nq equals Nkv; the tile grid still lays Q, K and V out in sequence." | |
| }, | |
| "attrs": { "K": 32, "Nq": 8, "Nkv": 8, "block_size": 32 }, | |
| "inputs": { | |
| "aT": { | |
| "dtype": "float32", | |
| "shape": [2, 32], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.29, "scale": 0.8 } | |
| }, | |
| "normScaleT": { | |
| "dtype": "float32", | |
| "shape": [32], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.23, "cosStep": 0.41, "scale": 0.4, "offset": 1.0 } | |
| }, | |
| "qBT": { | |
| "dtype": "uint8", | |
| "shape": [8, 1, 16], | |
| "data": { "kind": "cycle", "values": [27, 180, 75, 226, 33, 150, 201, 108, 57, 246, 129, 66, 195] } | |
| }, | |
| "qScalesT": { | |
| "dtype": "float32", | |
| "shape": [8, 1], | |
| "data": { "kind": "cycle", "values": [0.04, 0.055, 0.05, 0.065, 0.06, 0.075, 0.07] } | |
| }, | |
| "kBT": { | |
| "dtype": "uint8", | |
| "shape": [8, 1, 16], | |
| "data": { "kind": "cycle", "values": [211, 44, 137, 98, 165, 20, 233, 121, 78, 190, 15, 252, 87, 143, 61] } | |
| }, | |
| "kScalesT": { | |
| "dtype": "float32", | |
| "shape": [8, 1], | |
| "data": { "kind": "cycle", "values": [0.045, 0.03, 0.07, 0.05, 0.08, 0.035] } | |
| }, | |
| "vBT": { | |
| "dtype": "uint8", | |
| "shape": [8, 1, 16], | |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/norm_gqa_input_vBT" } } | |
| }, | |
| "vScalesT": { | |
| "dtype": "float32", | |
| "shape": [8, 1], | |
| "data": { "kind": "cycle", "values": [0.052, 0.038, 0.061, 0.029, 0.073] } | |
| } | |
| }, | |
| "outputs": { | |
| "qT": { "dtype": "float32", "shape": [2, 8], "tolerance": 0.0001, "relTolerance": 0.0001 }, | |
| "kT": { "dtype": "float32", "shape": [2, 8], "tolerance": 0.0001, "relTolerance": 0.0001 }, | |
| "vT": { "dtype": "float32", "shape": [2, 8], "tolerance": 0.0001, "relTolerance": 0.0001 } | |
| } | |
| }, | |
| { | |
| "name": "tiles_not_aligned", | |
| "provenance": { | |
| "notes": "Neither column count is a multiple of the column tile, so both projections have a partial last tile." | |
| }, | |
| "attrs": { "K": 32, "Nq": 5, "Nkv": 3, "block_size": 32 }, | |
| "inputs": { | |
| "aT": { | |
| "dtype": "float32", | |
| "shape": [2, 32], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.29, "scale": 0.8 } | |
| }, | |
| "normScaleT": { | |
| "dtype": "float32", | |
| "shape": [32], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.23, "cosStep": 0.41, "scale": 0.4, "offset": 1.0 } | |
| }, | |
| "qBT": { | |
| "dtype": "uint8", | |
| "shape": [5, 1, 16], | |
| "data": { "kind": "cycle", "values": [27, 180, 75, 226, 33, 150, 201, 108, 57, 246, 129, 66, 195] } | |
| }, | |
| "qScalesT": { | |
| "dtype": "float32", | |
| "shape": [5, 1], | |
| "data": { "kind": "cycle", "values": [0.04, 0.055, 0.05, 0.065, 0.06, 0.075, 0.07] } | |
| }, | |
| "kBT": { | |
| "dtype": "uint8", | |
| "shape": [3, 1, 16], | |
| "data": { "kind": "cycle", "values": [211, 44, 137, 98, 165, 20, 233, 121, 78, 190, 15, 252, 87, 143, 61] } | |
| }, | |
| "kScalesT": { | |
| "dtype": "float32", | |
| "shape": [3, 1], | |
| "data": { "kind": "cycle", "values": [0.045, 0.03, 0.07, 0.05, 0.08, 0.035] } | |
| }, | |
| "vBT": { | |
| "dtype": "uint8", | |
| "shape": [3, 1, 16], | |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/norm_gqa_input_vBT" } } | |
| }, | |
| "vScalesT": { | |
| "dtype": "float32", | |
| "shape": [3, 1], | |
| "data": { "kind": "cycle", "values": [0.052, 0.038, 0.061, 0.029, 0.073] } | |
| } | |
| }, | |
| "outputs": { | |
| "qT": { "dtype": "float32", "shape": [2, 5], "tolerance": 0.0001, "relTolerance": 0.0001 }, | |
| "kT": { "dtype": "float32", "shape": [2, 3], "tolerance": 0.0001, "relTolerance": 0.0001 }, | |
| "vT": { "dtype": "float32", "shape": [2, 3], "tolerance": 0.0001, "relTolerance": 0.0001 } | |
| } | |
| }, | |
| { | |
| "name": "tail_block_partial_k", | |
| "provenance": { "notes": "K is not a multiple of block_size, so the final block is partly out of range." }, | |
| "attrs": { "K": 20, "Nq": 8, "Nkv": 4, "block_size": 32 }, | |
| "inputs": { | |
| "aT": { | |
| "dtype": "float32", | |
| "shape": [2, 20], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.29, "scale": 0.8 } | |
| }, | |
| "normScaleT": { | |
| "dtype": "float32", | |
| "shape": [20], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.23, "cosStep": 0.41, "scale": 0.4, "offset": 1.0 } | |
| }, | |
| "qBT": { | |
| "dtype": "uint8", | |
| "shape": [8, 1, 16], | |
| "data": { "kind": "cycle", "values": [27, 180, 75, 226, 33, 150, 201, 108, 57, 246, 129, 66, 195] } | |
| }, | |
| "qScalesT": { | |
| "dtype": "float32", | |
| "shape": [8, 1], | |
| "data": { "kind": "cycle", "values": [0.04, 0.055, 0.05, 0.065, 0.06, 0.075, 0.07] } | |
| }, | |
| "kBT": { | |
| "dtype": "uint8", | |
| "shape": [4, 1, 16], | |
| "data": { "kind": "cycle", "values": [211, 44, 137, 98, 165, 20, 233, 121, 78, 190, 15, 252, 87, 143, 61] } | |
| }, | |
| "kScalesT": { | |
| "dtype": "float32", | |
| "shape": [4, 1], | |
| "data": { "kind": "cycle", "values": [0.045, 0.03, 0.07, 0.05, 0.08, 0.035] } | |
| }, | |
| "vBT": { | |
| "dtype": "uint8", | |
| "shape": [4, 1, 16], | |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/norm_gqa_input_vBT" } } | |
| }, | |
| "vScalesT": { | |
| "dtype": "float32", | |
| "shape": [4, 1], | |
| "data": { "kind": "cycle", "values": [0.052, 0.038, 0.061, 0.029, 0.073] } | |
| } | |
| }, | |
| "outputs": { | |
| "qT": { "dtype": "float32", "shape": [2, 8], "tolerance": 0.0001, "relTolerance": 0.0001 }, | |
| "kT": { "dtype": "float32", "shape": [2, 4], "tolerance": 0.0001, "relTolerance": 0.0001 }, | |
| "vT": { "dtype": "float32", "shape": [2, 4], "tolerance": 0.0001, "relTolerance": 0.0001 } | |
| } | |
| }, | |
| { | |
| "name": "rank3_activation", | |
| "attrs": { "K": 32, "Nq": 8, "Nkv": 4, "block_size": 32 }, | |
| "inputs": { | |
| "aT": { | |
| "dtype": "float32", | |
| "shape": [1, 4, 32], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.29, "scale": 0.8 } | |
| }, | |
| "normScaleT": { | |
| "dtype": "float32", | |
| "shape": [32], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.23, "cosStep": 0.41, "scale": 0.4, "offset": 1.0 } | |
| }, | |
| "qBT": { | |
| "dtype": "uint8", | |
| "shape": [8, 1, 16], | |
| "data": { "kind": "cycle", "values": [27, 180, 75, 226, 33, 150, 201, 108, 57, 246, 129, 66, 195] } | |
| }, | |
| "qScalesT": { | |
| "dtype": "float32", | |
| "shape": [8, 1], | |
| "data": { "kind": "cycle", "values": [0.04, 0.055, 0.05, 0.065, 0.06, 0.075, 0.07] } | |
| }, | |
| "kBT": { | |
| "dtype": "uint8", | |
| "shape": [4, 1, 16], | |
| "data": { "kind": "cycle", "values": [211, 44, 137, 98, 165, 20, 233, 121, 78, 190, 15, 252, 87, 143, 61] } | |
| }, | |
| "kScalesT": { | |
| "dtype": "float32", | |
| "shape": [4, 1], | |
| "data": { "kind": "cycle", "values": [0.045, 0.03, 0.07, 0.05, 0.08, 0.035] } | |
| }, | |
| "vBT": { | |
| "dtype": "uint8", | |
| "shape": [4, 1, 16], | |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/norm_gqa_input_vBT" } } | |
| }, | |
| "vScalesT": { | |
| "dtype": "float32", | |
| "shape": [4, 1], | |
| "data": { "kind": "cycle", "values": [0.052, 0.038, 0.061, 0.029, 0.073] } | |
| } | |
| }, | |
| "outputs": { | |
| "qT": { "dtype": "float32", "shape": [1, 4, 8], "tolerance": 0.0001, "relTolerance": 0.0001 }, | |
| "kT": { "dtype": "float32", "shape": [1, 4, 4], "tolerance": 0.0001, "relTolerance": 0.0001 }, | |
| "vT": { "dtype": "float32", "shape": [1, 4, 4], "tolerance": 0.0001, "relTolerance": 0.0001 } | |
| } | |
| }, | |
| { | |
| "name": "two_quant_blocks", | |
| "provenance": { "notes": "K=64 spans two 32-element quantization blocks." }, | |
| "attrs": { "K": 64, "Nq": 8, "Nkv": 4, "block_size": 32 }, | |
| "inputs": { | |
| "aT": { | |
| "dtype": "float32", | |
| "shape": [2, 64], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.29, "scale": 0.8 } | |
| }, | |
| "skipT": { | |
| "dtype": "float32", | |
| "shape": [2, 64], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.37, "cosStep": 0.11, "scale": 0.5 } | |
| }, | |
| "normScaleT": { | |
| "dtype": "float32", | |
| "shape": [64], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.23, "cosStep": 0.41, "scale": 0.4, "offset": 1.0 } | |
| }, | |
| "qBT": { | |
| "dtype": "uint8", | |
| "shape": [8, 2, 16], | |
| "data": { "kind": "cycle", "values": [27, 180, 75, 226, 33, 150, 201, 108, 57, 246, 129, 66, 195] } | |
| }, | |
| "qScalesT": { | |
| "dtype": "float32", | |
| "shape": [8, 2], | |
| "data": { "kind": "cycle", "values": [0.04, 0.055, 0.05, 0.065, 0.06, 0.075, 0.07] } | |
| }, | |
| "kBT": { | |
| "dtype": "uint8", | |
| "shape": [4, 2, 16], | |
| "data": { "kind": "cycle", "values": [211, 44, 137, 98, 165, 20, 233, 121, 78, 190, 15, 252, 87, 143, 61] } | |
| }, | |
| "kScalesT": { | |
| "dtype": "float32", | |
| "shape": [4, 2], | |
| "data": { "kind": "cycle", "values": [0.045, 0.03, 0.07, 0.05, 0.08, 0.035] } | |
| }, | |
| "vBT": { | |
| "dtype": "uint8", | |
| "shape": [4, 2, 16], | |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/norm_gqa_input_vBT" } } | |
| }, | |
| "vScalesT": { | |
| "dtype": "float32", | |
| "shape": [4, 2], | |
| "data": { "kind": "cycle", "values": [0.052, 0.038, 0.061, 0.029, 0.073] } | |
| } | |
| }, | |
| "outputs": { | |
| "qT": { "dtype": "float32", "shape": [2, 8], "tolerance": 0.0001, "relTolerance": 0.0001 }, | |
| "kT": { "dtype": "float32", "shape": [2, 4], "tolerance": 0.0001, "relTolerance": 0.0001 }, | |
| "vT": { "dtype": "float32", "shape": [2, 4], "tolerance": 0.0001, "relTolerance": 0.0001 }, | |
| "residualT": { "dtype": "float32", "shape": [2, 64], "tolerance": 0.000001, "relTolerance": 0.000001 } | |
| } | |
| }, | |
| { | |
| "name": "f16_skipsum", | |
| "attrs": { "K": 32, "Nq": 8, "Nkv": 4, "block_size": 32 }, | |
| "inputs": { | |
| "aT": { | |
| "dtype": "float16", | |
| "shape": [2, 32], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.29, "scale": 0.8 } | |
| }, | |
| "skipT": { | |
| "dtype": "float16", | |
| "shape": [2, 32], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.37, "cosStep": 0.11, "scale": 0.5 } | |
| }, | |
| "normScaleT": { | |
| "dtype": "float16", | |
| "shape": [32], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.23, "cosStep": 0.41, "scale": 0.4, "offset": 1.0 } | |
| }, | |
| "qBT": { | |
| "dtype": "uint8", | |
| "shape": [8, 1, 16], | |
| "data": { "kind": "cycle", "values": [27, 180, 75, 226, 33, 150, 201, 108, 57, 246, 129, 66, 195] } | |
| }, | |
| "qScalesT": { | |
| "dtype": "float16", | |
| "shape": [8, 1], | |
| "data": { "kind": "cycle", "values": [0.04, 0.055, 0.05, 0.065, 0.06, 0.075, 0.07] } | |
| }, | |
| "kBT": { | |
| "dtype": "uint8", | |
| "shape": [4, 1, 16], | |
| "data": { "kind": "cycle", "values": [211, 44, 137, 98, 165, 20, 233, 121, 78, 190, 15, 252, 87, 143, 61] } | |
| }, | |
| "kScalesT": { | |
| "dtype": "float16", | |
| "shape": [4, 1], | |
| "data": { "kind": "cycle", "values": [0.045, 0.03, 0.07, 0.05, 0.08, 0.035] } | |
| }, | |
| "vBT": { | |
| "dtype": "uint8", | |
| "shape": [4, 1, 16], | |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/norm_gqa_input_vBT" } } | |
| }, | |
| "vScalesT": { | |
| "dtype": "float16", | |
| "shape": [4, 1], | |
| "data": { "kind": "cycle", "values": [0.052, 0.038, 0.061, 0.029, 0.073] } | |
| } | |
| }, | |
| "outputs": { | |
| "qT": { "dtype": "float16", "shape": [2, 8], "tolerance": 0.002, "relTolerance": 0.01 }, | |
| "kT": { "dtype": "float16", "shape": [2, 4], "tolerance": 0.002, "relTolerance": 0.01 }, | |
| "vT": { "dtype": "float16", "shape": [2, 4], "tolerance": 0.002, "relTolerance": 0.01 }, | |
| "residualT": { "dtype": "float16", "shape": [2, 32], "tolerance": 0.002, "relTolerance": 0.002 } | |
| } | |
| }, | |
| { | |
| "name": "f16_norm", | |
| "attrs": { "K": 32, "Nq": 8, "Nkv": 4, "block_size": 32 }, | |
| "inputs": { | |
| "aT": { | |
| "dtype": "float16", | |
| "shape": [3, 32], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.29, "scale": 0.8 } | |
| }, | |
| "normScaleT": { | |
| "dtype": "float16", | |
| "shape": [32], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.23, "cosStep": 0.41, "scale": 0.4, "offset": 1.0 } | |
| }, | |
| "qBT": { | |
| "dtype": "uint8", | |
| "shape": [8, 1, 16], | |
| "data": { "kind": "cycle", "values": [27, 180, 75, 226, 33, 150, 201, 108, 57, 246, 129, 66, 195] } | |
| }, | |
| "qScalesT": { | |
| "dtype": "float16", | |
| "shape": [8, 1], | |
| "data": { "kind": "cycle", "values": [0.04, 0.055, 0.05, 0.065, 0.06, 0.075, 0.07] } | |
| }, | |
| "kBT": { | |
| "dtype": "uint8", | |
| "shape": [4, 1, 16], | |
| "data": { "kind": "cycle", "values": [211, 44, 137, 98, 165, 20, 233, 121, 78, 190, 15, 252, 87, 143, 61] } | |
| }, | |
| "kScalesT": { | |
| "dtype": "float16", | |
| "shape": [4, 1], | |
| "data": { "kind": "cycle", "values": [0.045, 0.03, 0.07, 0.05, 0.08, 0.035] } | |
| }, | |
| "vBT": { | |
| "dtype": "uint8", | |
| "shape": [4, 1, 16], | |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/norm_gqa_input_vBT" } } | |
| }, | |
| "vScalesT": { | |
| "dtype": "float16", | |
| "shape": [4, 1], | |
| "data": { "kind": "cycle", "values": [0.052, 0.038, 0.061, 0.029, 0.073] } | |
| } | |
| }, | |
| "outputs": { | |
| "qT": { "dtype": "float16", "shape": [3, 8], "tolerance": 0.002, "relTolerance": 0.01 }, | |
| "kT": { "dtype": "float16", "shape": [3, 4], "tolerance": 0.002, "relTolerance": 0.01 }, | |
| "vT": { "dtype": "float16", "shape": [3, 4], "tolerance": 0.002, "relTolerance": 0.01 } | |
| } | |
| }, | |
| { | |
| "name": "decode_multi_trip_tails", | |
| "provenance": { | |
| "notes": "Single row at K past two 128-code trips of the reduction-partitioned walk, with a partial final block and column counts not aligned to the decode column group." | |
| }, | |
| "attrs": { "K": 300, "Nq": 5, "Nkv": 3, "block_size": 32 }, | |
| "inputs": { | |
| "aT": { | |
| "dtype": "float32", | |
| "shape": [1, 300], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.29, "scale": 0.8 } | |
| }, | |
| "normScaleT": { | |
| "dtype": "float32", | |
| "shape": [300], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.23, "cosStep": 0.41, "scale": 0.4, "offset": 1.0 } | |
| }, | |
| "qBT": { | |
| "dtype": "uint8", | |
| "shape": [5, 10, 16], | |
| "data": { "kind": "cycle", "values": [27, 180, 75, 226, 33, 150, 201, 108, 57, 246, 129, 66, 195] } | |
| }, | |
| "qScalesT": { | |
| "dtype": "float32", | |
| "shape": [5, 10], | |
| "data": { "kind": "cycle", "values": [0.04, 0.055, 0.05, 0.065, 0.06, 0.075, 0.07] } | |
| }, | |
| "kBT": { | |
| "dtype": "uint8", | |
| "shape": [3, 10, 16], | |
| "data": { "kind": "cycle", "values": [211, 44, 137, 98, 165, 20, 233, 121, 78, 190, 15, 252, 87, 143, 61] } | |
| }, | |
| "kScalesT": { | |
| "dtype": "float32", | |
| "shape": [3, 10], | |
| "data": { "kind": "cycle", "values": [0.045, 0.03, 0.07, 0.05, 0.08, 0.035] } | |
| }, | |
| "vBT": { | |
| "dtype": "uint8", | |
| "shape": [3, 10, 16], | |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/norm_gqa_input_vBT" } } | |
| }, | |
| "vScalesT": { | |
| "dtype": "float32", | |
| "shape": [3, 10], | |
| "data": { "kind": "cycle", "values": [0.052, 0.038, 0.061, 0.029, 0.073] } | |
| } | |
| }, | |
| "outputs": { | |
| "qT": { "dtype": "float32", "shape": [1, 5], "tolerance": 0.0001, "relTolerance": 0.0001 }, | |
| "kT": { "dtype": "float32", "shape": [1, 3], "tolerance": 0.0001, "relTolerance": 0.0001 }, | |
| "vT": { "dtype": "float32", "shape": [1, 3], "tolerance": 0.0001, "relTolerance": 0.0001 } | |
| } | |
| }, | |
| { | |
| "name": "decode_odd_k", | |
| "provenance": { "notes": "Single row with an odd K, so the last reduction pair has one live code." }, | |
| "attrs": { "K": 21, "Nq": 5, "Nkv": 3, "block_size": 32 }, | |
| "inputs": { | |
| "aT": { | |
| "dtype": "float32", | |
| "shape": [1, 21], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.29, "scale": 0.8 } | |
| }, | |
| "normScaleT": { | |
| "dtype": "float32", | |
| "shape": [21], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.23, "cosStep": 0.41, "scale": 0.4, "offset": 1.0 } | |
| }, | |
| "qBT": { | |
| "dtype": "uint8", | |
| "shape": [5, 1, 16], | |
| "data": { "kind": "cycle", "values": [27, 180, 75, 226, 33, 150, 201, 108, 57, 246, 129, 66, 195] } | |
| }, | |
| "qScalesT": { | |
| "dtype": "float32", | |
| "shape": [5, 1], | |
| "data": { "kind": "cycle", "values": [0.04, 0.055, 0.05, 0.065, 0.06, 0.075, 0.07] } | |
| }, | |
| "kBT": { | |
| "dtype": "uint8", | |
| "shape": [3, 1, 16], | |
| "data": { "kind": "cycle", "values": [211, 44, 137, 98, 165, 20, 233, 121, 78, 190, 15, 252, 87, 143, 61] } | |
| }, | |
| "kScalesT": { | |
| "dtype": "float32", | |
| "shape": [3, 1], | |
| "data": { "kind": "cycle", "values": [0.045, 0.03, 0.07, 0.05, 0.08, 0.035] } | |
| }, | |
| "vBT": { | |
| "dtype": "uint8", | |
| "shape": [3, 1, 16], | |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/norm_gqa_input_vBT" } } | |
| }, | |
| "vScalesT": { | |
| "dtype": "float32", | |
| "shape": [3, 1], | |
| "data": { "kind": "cycle", "values": [0.052, 0.038, 0.061, 0.029, 0.073] } | |
| } | |
| }, | |
| "outputs": { | |
| "qT": { "dtype": "float32", "shape": [1, 5], "tolerance": 0.0001, "relTolerance": 0.0001 }, | |
| "kT": { "dtype": "float32", "shape": [1, 3], "tolerance": 0.0001, "relTolerance": 0.0001 }, | |
| "vT": { "dtype": "float32", "shape": [1, 3], "tolerance": 0.0001, "relTolerance": 0.0001 } | |
| } | |
| }, | |
| { | |
| "name": "decode_f16_two_trips", | |
| "provenance": { | |
| "notes": "Single float16 row over two trips of the reduction-partitioned walk with the skip input." | |
| }, | |
| "attrs": { "K": 160, "Nq": 8, "Nkv": 4, "block_size": 32 }, | |
| "inputs": { | |
| "aT": { | |
| "dtype": "float16", | |
| "shape": [1, 160], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.29, "scale": 0.8 } | |
| }, | |
| "normScaleT": { | |
| "dtype": "float16", | |
| "shape": [160], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.23, "cosStep": 0.41, "scale": 0.4, "offset": 1.0 } | |
| }, | |
| "qBT": { | |
| "dtype": "uint8", | |
| "shape": [8, 5, 16], | |
| "data": { "kind": "cycle", "values": [27, 180, 75, 226, 33, 150, 201, 108, 57, 246, 129, 66, 195] } | |
| }, | |
| "qScalesT": { | |
| "dtype": "float16", | |
| "shape": [8, 5], | |
| "data": { "kind": "cycle", "values": [0.04, 0.055, 0.05, 0.065, 0.06, 0.075, 0.07] } | |
| }, | |
| "kBT": { | |
| "dtype": "uint8", | |
| "shape": [4, 5, 16], | |
| "data": { "kind": "cycle", "values": [211, 44, 137, 98, 165, 20, 233, 121, 78, 190, 15, 252, 87, 143, 61] } | |
| }, | |
| "kScalesT": { | |
| "dtype": "float16", | |
| "shape": [4, 5], | |
| "data": { "kind": "cycle", "values": [0.045, 0.03, 0.07, 0.05, 0.08, 0.035] } | |
| }, | |
| "vBT": { | |
| "dtype": "uint8", | |
| "shape": [4, 5, 16], | |
| "data": { "kind": "cycle", "values": { "$ref": "#/fixtureArrays/norm_gqa_input_vBT" } } | |
| }, | |
| "vScalesT": { | |
| "dtype": "float16", | |
| "shape": [4, 5], | |
| "data": { "kind": "cycle", "values": [0.052, 0.038, 0.061, 0.029, 0.073] } | |
| }, | |
| "skipT": { | |
| "dtype": "float16", | |
| "shape": [1, 160], | |
| "data": { "kind": "fillFloat32", "sinStep": 0.37, "cosStep": 0.11, "scale": 0.5 } | |
| } | |
| }, | |
| "outputs": { | |
| "qT": { "dtype": "float16", "shape": [1, 8], "tolerance": 0.02, "relTolerance": 0.02 }, | |
| "kT": { "dtype": "float16", "shape": [1, 4], "tolerance": 0.02, "relTolerance": 0.02 }, | |
| "vT": { "dtype": "float16", "shape": [1, 4], "tolerance": 0.02, "relTolerance": 0.02 } | |
| } | |
| } | |
| ] | |
| } | |