Download build/webgpu/test.json from webgpu-kernels/com.microsoft.GatherBlockQuantized: direct link, hf CLI and curl.
- Browser
- Download file 13.1 kB
-
https://huggingface.co/kernels/webgpu-kernels/com.microsoft.GatherBlockQuantized/resolve/v1/build/webgpu/test.json
- Command line
-
hf download hf://webgpu-kernels/com.microsoft.GatherBlockQuantized@v1/build/webgpu/test.json
-
curl -L -o test.json https://huggingface.co/kernels/webgpu-kernels/com.microsoft.GatherBlockQuantized/resolve/v1/build/webgpu/test.json
13.1 kB
| { | |
| "fixtureArrays": { | |
| "ort_q8_no_zero_input_dataT": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63], | |
| "q8_no_zero_multiblock_vec4_cols32_input_dataT": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127] | |
| }, | |
| "cases": [ | |
| { | |
| "name": "ort_q8_no_zero", | |
| "provenance": { | |
| "source": "onnxruntime/test/python/transformers/test_cuda_plugin_ep.py", | |
| "test": "TestCudaPluginEP.test_op_gather_block_quantized" | |
| }, | |
| "attrs": { "bits": 8, "block_size": 16 }, | |
| "inputs": { | |
| "dataT": { | |
| "dtype": "uint8", | |
| "shape": [4, 16], | |
| "data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/ort_q8_no_zero_input_dataT" } } | |
| }, | |
| "indicesT": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [0, 2] } }, | |
| "scalesT": { | |
| "dtype": "float32", | |
| "shape": [4, 1], | |
| "data": { "kind": "values", "values": [0.01, 0.02, 0.03, 0.04] } | |
| } | |
| }, | |
| "outputs": { "outputT": { "dtype": "float32", "shape": [2, 16], "tolerance": 0.000001 } } | |
| }, | |
| { | |
| "name": "ort_q8_no_zero_points_default_midpoint", | |
| "provenance": { | |
| "source": "onnxruntime/test/python/transformers/test_cuda_plugin_ep.py", | |
| "test": "TestCudaPluginEP.test_op_gather_block_quantized", | |
| "notes": "With zero_points omitted, the default is 2^(bits-1) = 128 at 8 bits: unsigned storage represents signed values offset by the midpoint. Expected values are exact in float32; different row scales make an incorrect zero point shift the two rows by different amounts." | |
| }, | |
| "attrs": { "bits": 8, "block_size": 16 }, | |
| "inputs": { | |
| "dataT": { | |
| "dtype": "uint8", | |
| "shape": [2, 16], | |
| "data": { | |
| "kind": "values", | |
| "values": [120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158] | |
| } | |
| }, | |
| "indicesT": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [0, 1] } }, | |
| "scalesT": { "dtype": "float32", "shape": [2, 1], "data": { "kind": "values", "values": [0.5, 0.25] } } | |
| }, | |
| "outputs": { | |
| "outputT": { | |
| "dtype": "float32", | |
| "shape": [2, 16], | |
| "tolerance": 0.000001, | |
| "data": { | |
| "kind": "values", | |
| "values": [-4.0, -3.5, -3.0, -2.5, -2.0, -1.5, -1.0, -0.5, 0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0, 7.5] | |
| } | |
| } | |
| } | |
| }, | |
| { | |
| "name": "ort_projection_q4_zero_points_block16_tail_rows", | |
| "provenance": { | |
| "source": "onnxruntime/test/contrib_ops/gather_block_quantized_op_test.cc", | |
| "test": "GatherBlockQuantizedOpTest.GatherAxis0WithZeroPoints_4Bits", | |
| "notes": "Rank-2 projection of ORT's uint8 q4 gather-axis-0 case with block_size=16, packed tail block, and three gathered rows." | |
| }, | |
| "attrs": { "bits": 4, "block_size": 16 }, | |
| "inputs": { | |
| "dataT": { | |
| "dtype": "uint8", | |
| "shape": [6, 9], | |
| "data": { | |
| "kind": "values", | |
| "values": [16, 50, 16, 50, 16, 50, 16, 50, 128, 84, 118, 84, 118, 84, 118, 84, 118, 132, 152, 186, 152, 186, 152, 186, 152, 186, 136, 220, 254, 220, 254, 220, 254, 220, 254, 140, 220, 254, 220, 254, 220, 254, 220, 254, 140, 84, 118, 84, 118, 84, 118, 84, 118, 132] | |
| } | |
| }, | |
| "indicesT": { "dtype": "uint32", "shape": [3], "data": { "kind": "values", "values": [3, 4, 5] } }, | |
| "scalesT": { | |
| "dtype": "float32", | |
| "shape": [6, 2], | |
| "data": { "kind": "values", "values": [1.0, 2.0, 1.0, 2.0, 1.0, 2.0, 2.0, 2.0, 1.0, 1.0, 2.0, 1.0] } | |
| }, | |
| "zeroPointsT": { | |
| "dtype": "uint8", | |
| "shape": [6, 1], | |
| "data": { "kind": "values", "values": [151, 136, 121, 121, 137, 151] } | |
| } | |
| }, | |
| "outputs": { | |
| "outputT": { | |
| "dtype": "float32", | |
| "shape": [3, 18], | |
| "tolerance": 0.000001, | |
| "data": { | |
| "kind": "values", | |
| "values": [6.0, 8.0, 10.0, 12.0, 6.0, 8.0, 10.0, 12.0, 6.0, 8.0, 10.0, 12.0, 6.0, 8.0, 10.0, 12.0, 10.0, 2.0, 3.0, 4.0, 5.0, 6.0, 3.0, 4.0, 5.0, 6.0, 3.0, 4.0, 5.0, 6.0, 3.0, 4.0, 5.0, 6.0, 4.0, 0.0, -6.0, -4.0, -2.0, 0.0, -6.0, -4.0, -2.0, 0.0, -6.0, -4.0, -2.0, 0.0, -6.0, -4.0, -2.0, 0.0, -5.0, -1.0] | |
| } | |
| } | |
| } | |
| }, | |
| { | |
| "name": "q8_no_zero_multiblock_vec4_cols32", | |
| "attrs": { "bits": 8, "block_size": 16 }, | |
| "inputs": { | |
| "dataT": { | |
| "dtype": "uint8", | |
| "shape": [4, 32], | |
| "data": { | |
| "kind": "values", | |
| "values": { "$ref": "#/fixtureArrays/q8_no_zero_multiblock_vec4_cols32_input_dataT" } | |
| } | |
| }, | |
| "indicesT": { "dtype": "uint32", "shape": [3], "data": { "kind": "values", "values": [0, 3, 1] } }, | |
| "scalesT": { | |
| "dtype": "float32", | |
| "shape": [4, 2], | |
| "data": { "kind": "values", "values": [0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08] } | |
| } | |
| }, | |
| "outputs": { "outputT": { "dtype": "float32", "shape": [3, 32], "tolerance": 0.000001 } } | |
| }, | |
| { | |
| "name": "q8_no_zero_wide_vec4_cols256_idx64", | |
| "provenance": { | |
| "notes": "A compact q8 gather uses block size 32, the default zero point, four-wide aligned columns, many gathered rows, and multiple scale blocks per source row." | |
| }, | |
| "attrs": { "bits": 8, "block_size": 32 }, | |
| "inputs": { | |
| "dataT": { | |
| "dtype": "uint8", | |
| "shape": [256, 256], | |
| "data": { "kind": "cycle", "values": [0, 1, 2, 3, 4, 5, 31, 63, 127, 191, 255] } | |
| }, | |
| "indicesT": { | |
| "dtype": "uint32", | |
| "shape": [64], | |
| "data": { "kind": "cycle", "values": [0, 17, 63, 128, 255, 3, 42, 191] } | |
| }, | |
| "scalesT": { | |
| "dtype": "float32", | |
| "shape": [256, 8], | |
| "data": { "kind": "cycle", "values": [0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08] } | |
| } | |
| }, | |
| "outputs": { "outputT": { "dtype": "float32", "shape": [64, 256], "tolerance": 0.000001 } } | |
| }, | |
| { | |
| "name": "q4_zero_points_block16_ort_valid", | |
| "attrs": { "bits": 4, "block_size": 16 }, | |
| "inputs": { | |
| "dataT": { | |
| "dtype": "uint8", | |
| "shape": [4, 16], | |
| "data": { | |
| "kind": "values", | |
| "values": [16, 50, 84, 118, 152, 186, 220, 254, 16, 33, 136, 119, 102, 85, 17, 34, 200, 152, 104, 56, 8, 216, 168, 120, 72, 24, 232, 184, 136, 88, 40, 248, 35, 70, 105, 140, 175, 210, 245, 21, 56, 91, 126, 161, 196, 231, 11, 46, 81, 116, 151, 186, 221, 0, 35, 70, 105, 140, 175, 210, 245, 21, 56, 91] | |
| } | |
| }, | |
| "indicesT": { "dtype": "uint32", "shape": [3], "data": { "kind": "values", "values": [3, 0, 2] } }, | |
| "scalesT": { | |
| "dtype": "float32", | |
| "shape": [4, 2], | |
| "data": { "kind": "values", "values": [0.1, 0.2, 0.05, 0.125, 0.25, 0.15, 0.075, 0.3] } | |
| }, | |
| "zeroPointsT": { | |
| "dtype": "uint8", | |
| "shape": [4, 1], | |
| "data": { "kind": "values", "values": [120, 105, 135, 149] } | |
| } | |
| }, | |
| "outputs": { "outputT": { "dtype": "float32", "shape": [3, 32], "tolerance": 0.000001 } } | |
| }, | |
| { | |
| "name": "q8_with_zero_points_vec4_cols32", | |
| "attrs": { "bits": 8, "block_size": 16 }, | |
| "inputs": { | |
| "dataT": { | |
| "dtype": "uint8", | |
| "shape": [4, 32], | |
| "data": { | |
| "kind": "values", | |
| "values": { "$ref": "#/fixtureArrays/q8_no_zero_multiblock_vec4_cols32_input_dataT" } | |
| } | |
| }, | |
| "indicesT": { "dtype": "uint32", "shape": [3], "data": { "kind": "values", "values": [0, 3, 1] } }, | |
| "scalesT": { | |
| "dtype": "float32", | |
| "shape": [4, 2], | |
| "data": { "kind": "values", "values": [0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08] } | |
| }, | |
| "zeroPointsT": { | |
| "dtype": "uint8", | |
| "shape": [4, 2], | |
| "data": { "kind": "values", "values": [128, 100, 64, 90, 110, 130, 70, 120] } | |
| } | |
| }, | |
| "outputs": { "outputT": { "dtype": "float32", "shape": [3, 32], "tolerance": 0.000001 } } | |
| }, | |
| { | |
| "name": "empty_input_zero_dim", | |
| "attrs": { "bits": 8, "block_size": 16 }, | |
| "inputs": { | |
| "dataT": { "dtype": "uint8", "shape": [0, 16], "data": { "kind": "values", "values": [] } }, | |
| "indicesT": { "dtype": "uint32", "shape": [0], "data": { "kind": "values", "values": [] } }, | |
| "scalesT": { "dtype": "float32", "shape": [0, 1], "data": { "kind": "values", "values": [] } } | |
| }, | |
| "outputs": { "outputT": { "dtype": "float32", "shape": [0, 16], "tolerance": 0 } } | |
| }, | |
| { | |
| "name": "q8_empty_indices_populated_data", | |
| "attrs": { "bits": 8, "block_size": 16 }, | |
| "inputs": { | |
| "dataT": { | |
| "dtype": "uint8", | |
| "shape": [4, 16], | |
| "data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/ort_q8_no_zero_input_dataT" } } | |
| }, | |
| "indicesT": { "dtype": "uint32", "shape": [0], "data": { "kind": "values", "values": [] } }, | |
| "scalesT": { | |
| "dtype": "float32", | |
| "shape": [4, 1], | |
| "data": { "kind": "values", "values": [0.01, 0.02, 0.03, 0.04] } | |
| } | |
| }, | |
| "outputs": { "outputT": { "dtype": "float32", "shape": [0, 16], "tolerance": 0 } } | |
| }, | |
| { | |
| "name": "q8_max_valid_index_and_duplicates_vec4", | |
| "attrs": { "bits": 8, "block_size": 16 }, | |
| "inputs": { | |
| "dataT": { | |
| "dtype": "uint8", | |
| "shape": [4, 8], | |
| "data": { | |
| "kind": "values", | |
| "values": [0, 1, 2, 3, 4, 5, 6, 7, 10, 20, 30, 40, 50, 60, 70, 80, 255, 128, 64, 32, 16, 8, 4, 2, 90, 100, 110, 120, 130, 140, 150, 160] | |
| } | |
| }, | |
| "indicesT": { "dtype": "uint32", "shape": [5], "data": { "kind": "values", "values": [3, 3, 0, 3, 1] } }, | |
| "scalesT": { | |
| "dtype": "float32", | |
| "shape": [4, 1], | |
| "data": { "kind": "values", "values": [0.01, 0.02, 0.03, 0.04] } | |
| } | |
| }, | |
| "outputs": { "outputT": { "dtype": "float32", "shape": [5, 8], "tolerance": 0.000001 } } | |
| }, | |
| { | |
| "name": "ort_default_bits_and_block_size_q4", | |
| "provenance": { | |
| "source": "onnxruntime/core/graph/contrib_ops/contrib_defs.cc", | |
| "test": "GatherBlockQuantized schema attribute defaults", | |
| "notes": "Omitting `bits` and `block_size` exercises their standard defaults of 4 and 128." | |
| }, | |
| "inputs": { | |
| "dataT": { | |
| "dtype": "uint8", | |
| "shape": [4, 8], | |
| "data": { "kind": "cycle", "values": [7, 12, 3, 9, 14, 1, 5, 11] } | |
| }, | |
| "scalesT": { | |
| "dtype": "float32", | |
| "shape": [4, 1], | |
| "data": { "kind": "values", "values": [0.5, 0.25, 1.5, 2.0] } | |
| }, | |
| "indicesT": { "dtype": "uint32", "shape": [2], "data": { "kind": "values", "values": [3, 0] } } | |
| }, | |
| "outputs": { "outputT": { "dtype": "float32", "shape": [2, 16], "tolerance": 0.0001 } } | |
| }, | |
| { | |
| "name": "q8_zero_points_tail_cols18", | |
| "provenance": { | |
| "notes": "Explicit q8 zero points with 18 output columns exercise the scalar tail after four complete vec4 groups; the final quantization block is partial and uses its own scale and zero point." | |
| }, | |
| "attrs": { "bits": 8, "block_size": 16 }, | |
| "inputs": { | |
| "dataT": { | |
| "dtype": "uint8", | |
| "shape": [3, 18], | |
| "data": { "kind": "cycle", "values": [0, 17, 64, 99, 128, 143, 191, 255, 37, 211] } | |
| }, | |
| "indicesT": { "dtype": "uint32", "shape": [3], "data": { "kind": "values", "values": [2, 0, 2] } }, | |
| "scalesT": { | |
| "dtype": "float32", | |
| "shape": [3, 2], | |
| "data": { "kind": "values", "values": [0.05, 0.2, 0.025, 0.125, 0.075, 0.3] } | |
| }, | |
| "zeroPointsT": { | |
| "dtype": "uint8", | |
| "shape": [3, 2], | |
| "data": { "kind": "values", "values": [120, 130, 100, 140, 110, 150] } | |
| } | |
| }, | |
| "outputs": { "outputT": { "dtype": "float32", "shape": [3, 18], "tolerance": 0.000001 } } | |
| } | |
| ] | |
| } | |