Download build/webgpu/test.json from webgpu-kernels/com.microsoft.BiasSplitGelu: direct link, hf CLI and curl.
- Browser
- Download file 11 kB
-
https://huggingface.co/kernels/webgpu-kernels/com.microsoft.BiasSplitGelu/resolve/v1/build/webgpu/test.json
- Command line
-
hf download hf://webgpu-kernels/com.microsoft.BiasSplitGelu@v1/build/webgpu/test.json
-
curl -L -o test.json https://huggingface.co/kernels/webgpu-kernels/com.microsoft.BiasSplitGelu/resolve/v1/build/webgpu/test.json
11 kB
| { | |
| "cases": [ | |
| { | |
| "name": "dispatch_cliff_vec4_over_16M", | |
| "requires": { "limits": { "maxBufferSize": 536862752, "maxStorageBufferBindingSize": 536862752 } }, | |
| "provenance": { | |
| "notes": "Its largest tensor is 536862752 bytes, so the case needs an adapter whose maxBufferSize and maxStorageBufferBindingSize both reach it — declared, because the WebGPU guaranteed minimums (256 MiB / 128 MiB) do not, and a device at them must report the case inapplicable rather than fail allocating it." | |
| }, | |
| "inputs": { | |
| "X": { | |
| "dtype": "float32", | |
| "shape": [1, 16776961, 8], | |
| "data": { "kind": "linspace", "start": -1.0, "end": 1.0 } | |
| }, | |
| "bias": { "dtype": "float32", "shape": [8], "data": { "kind": "linspace", "start": -0.5, "end": 0.5 } } | |
| }, | |
| "outputs": { "Y": { "dtype": "float32", "shape": [1, 16776961, 4], "tolerance": 0.0001 } } | |
| }, | |
| { | |
| "name": "ort_split_last_dim_then_gelu_gate", | |
| "provenance": { | |
| "source": "onnxruntime/test/contrib_ops/bias_split_gelu_op_test.cc", | |
| "test": "BiasSplitGeluTest.BiasSplitGeluTest_HiddenSize_2560", | |
| "notes": "Small deterministic projection of ORT's fused bias+split+Gelu gate pattern." | |
| }, | |
| "inputs": { | |
| "X": { | |
| "dtype": "float32", | |
| "shape": [1, 2, 4], | |
| "data": { "kind": "values", "values": [1.0, 2.0, 0.0, 1.0, -1.0, 0.5, 2.0, -2.0] } | |
| }, | |
| "bias": { "dtype": "float32", "shape": [4], "data": { "kind": "values", "values": [0.5, -0.5, 1.0, -1.0] } } | |
| }, | |
| "outputs": { | |
| "Y": { | |
| "dtype": "float32", | |
| "shape": [1, 2, 2], | |
| "tolerance": 0.000001, | |
| "relTolerance": 0.000001, | |
| "data": { "kind": "values", "values": [1.262017119103, 0.0, -1.497975152953, 0.0] } | |
| } | |
| } | |
| }, | |
| { | |
| "name": "ort_projection_sequence_len1", | |
| "provenance": { | |
| "source": "onnxruntime/test/contrib_ops/bias_split_gelu_op_test.cc", | |
| "test": "BiasSplitGeluTest.BiasSplitGeluTest_HiddenSize_5120", | |
| "notes": "A compact deterministic ORT case with batch 2 and sequence length 1." | |
| }, | |
| "inputs": { | |
| "X": { | |
| "dtype": "float32", | |
| "shape": [2, 1, 6], | |
| "data": { "kind": "values", "values": [1.0, -1.0, 0.5, 2.0, -2.0, 0.0, -0.25, 0.75, -1.5, 1.5, 0.25, -0.5] } | |
| }, | |
| "bias": { | |
| "dtype": "float32", | |
| "shape": [6], | |
| "data": { "kind": "values", "values": [0.25, -0.5, 0.75, -1.0, 0.5, -0.25] } | |
| } | |
| }, | |
| "outputs": { | |
| "Y": { | |
| "dtype": "float32", | |
| "shape": [2, 1, 3], | |
| "tolerance": 0.000001, | |
| "relTolerance": 0.000001, | |
| "data": { | |
| "kind": "values", | |
| "values": [1.05168092, 0.1503162697, -0.1254042904, 0.0, 0.1450073842, 0.1274778475] | |
| } | |
| } | |
| } | |
| }, | |
| { | |
| "name": "ort_projection_batch1_sequence2", | |
| "provenance": { | |
| "source": "onnxruntime/test/contrib_ops/bias_split_gelu_op_test.cc", | |
| "test": "BiasSplitGeluTest.BiasSplitGeluTest_HiddenSize_10240", | |
| "notes": "A compact deterministic ORT case with batch 1 and sequence length 2." | |
| }, | |
| "inputs": { | |
| "X": { | |
| "dtype": "float32", | |
| "shape": [1, 2, 6], | |
| "data": { "kind": "values", "values": [1.0, 2.0, -1.0, 0.0, 0.5, -0.5, -2.0, 1.5, 0.25, 2.5, -1.0, 0.0] } | |
| }, | |
| "bias": { | |
| "dtype": "float32", | |
| "shape": [6], | |
| "data": { "kind": "values", "values": [0.25, -0.5, 0.75, -1.0, 0.5, -0.25] } | |
| } | |
| }, | |
| "outputs": { | |
| "Y": { | |
| "dtype": "float32", | |
| "shape": [1, 2, 3], | |
| "tolerance": 0.000001, | |
| "relTolerance": 0.000001, | |
| "data": { | |
| "kind": "values", | |
| "values": [-0.1983190798, 1.262017104, 0.04249261584, -2.449631019, -0.1542687686, -0.1003234323] | |
| } | |
| } | |
| } | |
| }, | |
| { | |
| "name": "ort_projection_batch2_sequence3_vec4", | |
| "provenance": { | |
| "source": "onnxruntime/test/contrib_ops/bias_split_gelu_op_test.cc", | |
| "test": "BiasSplitGeluTest.BiasSplitGeluTest_HiddenSize_6144", | |
| "notes": "A compact deterministic ORT case with batch 2, sequence length 3, and output width divisible by four." | |
| }, | |
| "inputs": { | |
| "X": { | |
| "dtype": "float32", | |
| "shape": [2, 3, 8], | |
| "data": { | |
| "kind": "values", | |
| "values": [1.0, -1.0, 0.5, -0.5, 2.0, -2.0, 0.25, -0.25, -1.5, 1.5, 0.0, -0.75, 0.75, -0.5, 1.25, -1.25, 3.0, -3.0, 0.5, -0.5, -2.0, 2.0, 1.0, -1.0, 0.0, 1.0, -1.0, 0.5, -0.5, 2.5, -2.5, 1.5, 0.125, -0.125, 4.0, -4.0, 0.75, -0.75, 1.5, -1.5, 2.25, -2.25, 0.333, -0.333, 5.0, -5.0, 1.25, -1.25] | |
| } | |
| }, | |
| "bias": { | |
| "dtype": "float32", | |
| "shape": [8], | |
| "data": { "kind": "values", "values": [0.25, -0.5, 0.75, -1.0, 0.5, -0.25, 1.5, -1.5] } | |
| } | |
| }, | |
| "outputs": { | |
| "Y": { | |
| "dtype": "float32", | |
| "shape": [2, 3, 4], | |
| "tolerance": 0.000001, | |
| "relTolerance": 0.000001, | |
| "data": { | |
| "kind": "values", | |
| "values": [3.1055946350097656, 0.04125746339559555, 2.0998706817626953, 0.10515517741441727, -1.3974220752716064, -0.16997046768665314, 2.05635404586792, 0.014340377412736416, -0.3256852626800537, -5.879637718200684, 3.1055946350097656, 0.023286299780011177, 0.0, 1.1112475395202637, 0.03966381773352623, 0.0, 0.41922664642333984, 0.09915953874588013, 14.23076343536377, 0.020249508321285248, 13.75, 0.0000011001571920132847, 2.9693753719329834, 0.010923270136117935] | |
| } | |
| } | |
| } | |
| }, | |
| { | |
| "name": "split_gelu_d4_vec4_path", | |
| "provenance": { | |
| "source": "onnxruntime/test/contrib_ops/bias_split_gelu_op_test.cc", | |
| "notes": "D=4 (input hidden 8) gives a four-aligned output hidden axis. Expected values from the same erf-form GEGLU gate computed at f64 then f32-rounded." | |
| }, | |
| "inputs": { | |
| "X": { | |
| "dtype": "float32", | |
| "shape": [1, 1, 8], | |
| "data": { "kind": "values", "values": [0.5, -1.0, 2.0, -0.5, 1.5, 0.0, -2.0, 1.0] } | |
| }, | |
| "bias": { | |
| "dtype": "float32", | |
| "shape": [8], | |
| "data": { "kind": "values", "values": [0.25, 0.5, -0.5, 1.0, -1.0, 0.5, 2.0, -0.25] } | |
| } | |
| }, | |
| "outputs": { | |
| "Y": { | |
| "dtype": "float32", | |
| "shape": [1, 1, 4], | |
| "tolerance": 0.000001, | |
| "relTolerance": 0.000001, | |
| "data": { "kind": "values", "values": [0.2592984235214977, -0.17286561568099845, 0.0, 0.2900147683230033] } | |
| } | |
| } | |
| }, | |
| { | |
| "name": "empty_zero_dim", | |
| "provenance": { | |
| "notes": "Zero-length batch axis of X (empty input). ONNX treats empty tensors as first-class; output is the same broadcast shape with the 0 batch ⇒ EMPTY output. bias kept at its normal rank-1 non-zero shape." | |
| }, | |
| "inputs": { | |
| "X": { "dtype": "float32", "shape": [0, 2, 4], "data": { "kind": "values", "values": [] } }, | |
| "bias": { "dtype": "float32", "shape": [4], "data": { "kind": "values", "values": [0.5, -0.5, 1.0, -1.0] } } | |
| }, | |
| "outputs": { | |
| "Y": { "dtype": "float32", "shape": [0, 2, 2], "tolerance": 0, "data": { "kind": "values", "values": [] } } | |
| } | |
| }, | |
| { | |
| "name": "empty_zero_dim_f16", | |
| "provenance": { "notes": "f16 variant of the empty zero-batch-axis case." }, | |
| "inputs": { | |
| "X": { "dtype": "float16", "shape": [0, 2, 4], "data": { "kind": "values", "values": [] } }, | |
| "bias": { "dtype": "float16", "shape": [4], "data": { "kind": "values", "values": [0.5, -0.5, 1.0, -1.0] } } | |
| }, | |
| "outputs": { | |
| "Y": { "dtype": "float16", "shape": [0, 2, 2], "tolerance": 0, "data": { "kind": "values", "values": [] } } | |
| } | |
| }, | |
| { | |
| "name": "empty_zero_hidden", | |
| "provenance": { | |
| "notes": "Zero-length hidden axis: bias stays 2x the (zero) half-width, so both the bias vector and the split halves are empty and no kernel may size a binding from the hidden extent." | |
| }, | |
| "inputs": { | |
| "X": { "dtype": "float32", "shape": [1, 2, 0], "data": { "kind": "values", "values": [] } }, | |
| "bias": { "dtype": "float32", "shape": [0], "data": { "kind": "values", "values": [] } } | |
| }, | |
| "outputs": { | |
| "Y": { "dtype": "float32", "shape": [1, 2, 0], "tolerance": 0, "data": { "kind": "values", "values": [] } } | |
| } | |
| }, | |
| { | |
| "name": "f16_vec4_shader_validation", | |
| "provenance": { | |
| "notes": "A non-empty float16 input (channel size 8, output size 4) checks BiasSplitGelu end-to-end; this file's empty_zero_dim_f16 case has a zero-sized dimension and returns before touching data, so it can't validate the computation alone." | |
| }, | |
| "inputs": { | |
| "X": { | |
| "dtype": "float16", | |
| "shape": [1, 1, 8], | |
| "data": { "kind": "values", "values": [0.5, -1.0, 2.0, -0.5, 1.5, 0.0, -2.0, 1.0] } | |
| }, | |
| "bias": { | |
| "dtype": "float16", | |
| "shape": [8], | |
| "data": { "kind": "values", "values": [0.25, 0.5, -0.5, 1.0, -1.0, 0.5, 2.0, -0.25] } | |
| } | |
| }, | |
| "outputs": { "Y": { "dtype": "float16", "shape": [1, 1, 4], "tolerance": 0.01 } } | |
| }, | |
| { | |
| "name": "scalar_path_dispatch_fold_over_16M", | |
| "provenance": { | |
| "notes": "An output width of six and 16,776,966 elements exercise unaligned channels and reconstruction of a folded two-dimensional dispatch grid." | |
| }, | |
| "inputs": { | |
| "X": { | |
| "dtype": "float32", | |
| "shape": [1, 2796161, 12], | |
| "data": { "kind": "linspace", "start": -1.0, "end": 1.0 } | |
| }, | |
| "bias": { "dtype": "float32", "shape": [12], "data": { "kind": "linspace", "start": -0.5, "end": 0.5 } } | |
| }, | |
| "outputs": { "Y": { "dtype": "float32", "shape": [1, 2796161, 6], "tolerance": 0.0001 } } | |
| }, | |
| { | |
| "name": "scalar_path_odd_hidden_d6", | |
| "provenance": { | |
| "notes": "With input width 12 and output width 6, the unaligned output uses scalar indexing. Values [0:6] form the value half and [6:12] form the gate half." | |
| }, | |
| "inputs": { | |
| "X": { | |
| "dtype": "float32", | |
| "shape": [1, 2, 12], | |
| "data": { | |
| "kind": "values", | |
| "values": [1.0, -1.0, 0.5, -0.5, 2.0, -2.0, 0.25, -0.25, 1.5, -1.5, 0.75, -0.75, -2.0, 2.0, 1.0, -1.0, 0.5, -0.5, 3.0, -3.0, 0.125, -0.125, 0.0, 1.0] | |
| } | |
| }, | |
| "bias": { | |
| "dtype": "float32", | |
| "shape": [12], | |
| "data": { "kind": "values", "values": [0.25, -0.5, 0.75, -1.0, 0.5, -0.25, 1.5, -1.5, 0.1, -0.1, 0.6, -0.6] } | |
| } | |
| }, | |
| "outputs": { "Y": { "dtype": "float32", "shape": [1, 2, 6], "tolerance": 0.000001, "relTolerance": 0.000001 } } | |
| } | |
| ] | |
| } | |