Xenova's picture
Xenova HF Staff
sync 2e7068faf55e
48220c7 verified
Raw
History Blame
14 kB
{
"op": "ai.onnx.SimplifiedLayerNormalization",
"fixtureArrays": {
"f16_scalar_cast_x": [-1.1103515625, 2.982421875, 1.248046875, -1.8544921875],
"f16_scalar_cast_scale": [2.015625],
"f16_scalar_cast_y": [-1.1513671875, 3.091796875, 1.2939453125, -1.921875]
},
"cases": [
{
"name": "legacy_last_axis_vec4_no_stats_2x8",
"attrs": { "epsilon": 0.000001, "axis": -1 },
"inputs": {
"x": {
"dtype": "float32",
"shape": [2, 8],
"data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.07 }
},
"scale": {
"dtype": "float32",
"shape": [8],
"data": { "kind": "fillFloat32", "sinStep": 0.23, "cosStep": 0.19, "scale": 0.5 }
}
},
"outputs": { "y": { "dtype": "float32", "shape": [2, 8], "tolerance": 0.000002 } }
},
{
"name": "legacy_last_axis_scalar_no_stats_2x5",
"attrs": { "epsilon": 0.000001, "axis": -1 },
"inputs": {
"x": {
"dtype": "float32",
"shape": [2, 5],
"data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.07 }
},
"scale": {
"dtype": "float32",
"shape": [5],
"data": { "kind": "fillFloat32", "sinStep": 0.23, "cosStep": 0.19, "scale": 0.5 }
}
},
"outputs": { "y": { "dtype": "float32", "shape": [2, 5], "tolerance": 0.000002 } }
},
{
"name": "legacy_last_axis_vec4_stats_2x8",
"attrs": { "epsilon": 0.00001, "axis": -1 },
"inputs": {
"x": {
"dtype": "float32",
"shape": [2, 8],
"data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.21 }
},
"scale": {
"dtype": "float32",
"shape": [8],
"data": { "kind": "fillFloat32", "sinStep": 0.29, "cosStep": 0.11, "scale": 0.5 }
}
},
"outputs": {
"y": { "dtype": "float32", "shape": [2, 8], "tolerance": 0.000002 },
"invStdVar": { "dtype": "float32", "shape": [2, 1], "tolerance": 0.00001 }
}
},
{
"name": "legacy_last_axis_scalar_stats_2x33",
"attrs": { "epsilon": 0.00001, "axis": -1 },
"inputs": {
"x": {
"dtype": "float32",
"shape": [2, 33],
"data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.27 }
},
"scale": {
"dtype": "float32",
"shape": [33],
"data": { "kind": "fillFloat32", "sinStep": 0.21, "cosStep": 0.13, "scale": 0.5 }
}
},
"outputs": {
"y": { "dtype": "float32", "shape": [2, 33], "tolerance": 0.000002 },
"invStdVar": { "dtype": "float32", "shape": [2, 1], "tolerance": 0.00001 }
}
},
{
"name": "legacy_scalar_scale_generic_stats_2x8",
"attrs": { "epsilon": 0.00001, "axis": -1 },
"inputs": {
"x": {
"dtype": "float32",
"shape": [2, 8],
"data": { "kind": "fillFloat32", "sinStep": 0.31, "cosStep": 0.09 }
},
"scale": { "dtype": "float32", "shape": [], "data": { "kind": "values", "values": [0.75] } }
},
"outputs": {
"y": { "dtype": "float32", "shape": [2, 8], "tolerance": 0.000002 },
"invStdVar": { "dtype": "float32", "shape": [2, 1], "tolerance": 0.00001 }
}
},
{
"name": "legacy_suffix_axis1_stats_2x3x4",
"attrs": { "epsilon": 0.00001, "axis": 1 },
"inputs": {
"x": {
"dtype": "float32",
"shape": [2, 3, 4],
"data": { "kind": "fillFloat32", "sinStep": 0.19, "cosStep": 0.23 }
},
"scale": {
"dtype": "float32",
"shape": [3, 4],
"data": { "kind": "fillFloat32", "sinStep": 0.07, "cosStep": 0.29, "scale": 0.5 }
}
},
"outputs": {
"y": { "dtype": "float32", "shape": [2, 3, 4], "tolerance": 0.000002 },
"invStdVar": { "dtype": "float32", "shape": [2, 1, 1], "tolerance": 0.00001 }
}
},
{
"name": "legacy_mixed_f16_x_f32_scale_stats_2x4",
"attrs": { "epsilon": 0.00001, "axis": -1 },
"inputs": {
"x": {
"dtype": "float16",
"shape": [2, 4],
"data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.21 }
},
"scale": {
"dtype": "float32",
"shape": [4],
"data": { "kind": "fillFloat32", "sinStep": 0.29, "cosStep": 0.11, "scale": 0.5 }
}
},
"outputs": {
"y": { "dtype": "float32", "shape": [2, 4], "tolerance": 0.002 },
"invStdVar": { "dtype": "float32", "shape": [2, 1], "tolerance": 0.002 }
}
},
{
"name": "legacy_mixed_f32_x_f16_scale_2x4",
"attrs": { "epsilon": 0.00001, "axis": -1 },
"inputs": {
"x": {
"dtype": "float32",
"shape": [2, 4],
"data": { "kind": "fillFloat32", "sinStep": 0.15, "cosStep": 0.25 }
},
"scale": {
"dtype": "float16",
"shape": [4],
"data": { "kind": "fillFloat32", "sinStep": 0.27, "cosStep": 0.09, "scale": 0.5 }
}
},
"outputs": { "y": { "dtype": "float16", "shape": [2, 4], "tolerance": 0.003 } }
},
{
"name": "legacy_f16_vec4_stats_4x32",
"attrs": { "epsilon": 0.00001, "axis": -1 },
"inputs": {
"x": {
"dtype": "float16",
"shape": [4, 32],
"data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.27 }
},
"scale": {
"dtype": "float16",
"shape": [32],
"data": { "kind": "fillFloat32", "sinStep": 0.21, "cosStep": 0.13, "scale": 0.5 }
}
},
"outputs": {
"y": { "dtype": "float16", "shape": [4, 32], "tolerance": 0.005 },
"invStdVar": { "dtype": "float32", "shape": [4, 1], "tolerance": 0.002 }
}
},
{
"name": "legacy_suffix_splitk_stats_2x64x512",
"attrs": { "epsilon": 0.00001, "axis": 1 },
"inputs": {
"x": {
"dtype": "float32",
"shape": [2, 64, 512],
"data": { "kind": "fillFloat32", "sinStep": 0.013, "cosStep": 0.017 }
},
"scale": {
"dtype": "float32",
"shape": [64, 512],
"data": { "kind": "fillFloat32", "sinStep": 0.011, "cosStep": 0.007, "scale": 0.5 }
}
},
"outputs": {
"y": { "dtype": "float32", "shape": [2, 64, 512], "tolerance": 0.00001 },
"invStdVar": { "dtype": "float32", "shape": [2, 1, 1], "tolerance": 0.00001 }
}
},
{
"name": "legacy_suffix_splitk_no_stats_1x32x512",
"attrs": { "epsilon": 0.00001, "axis": 1 },
"inputs": {
"x": {
"dtype": "float32",
"shape": [1, 32, 512],
"data": { "kind": "fillFloat32", "sinStep": 0.017, "cosStep": 0.023 }
},
"scale": {
"dtype": "float32",
"shape": [32, 512],
"data": { "kind": "fillFloat32", "sinStep": 0.009, "cosStep": 0.019, "scale": 0.5 }
}
},
"outputs": { "y": { "dtype": "float32", "shape": [1, 32, 512], "tolerance": 0.00001 } }
},
{
"name": "legacy_suffix_splitk_scalar_scale_no_stats_1x32x512",
"attrs": { "epsilon": 0.00001, "axis": 1 },
"inputs": {
"x": {
"dtype": "float32",
"shape": [1, 32, 512],
"data": { "kind": "fillFloat32", "sinStep": 0.019, "cosStep": 0.013 }
},
"scale": { "dtype": "float32", "shape": [], "data": { "kind": "values", "values": [0.75] } }
},
"outputs": { "y": { "dtype": "float32", "shape": [1, 32, 512], "tolerance": 0.00001 } }
},
{
"name": "legacy_f16_scale_before_output_cast_vec4_exact",
"provenance": {
"source": "onnxruntime/core/providers/cpu/nn/layer_norm_impl.cc",
"test": "SimplifiedLayerNormalization legacy f16 cast boundary",
"notes": "The legacy op applies scale before its single output cast. The first value differs by one f16 ULP from standardized RMSNormalization, which casts the normalized stage before scale."
},
"requires": { "features": ["shader-f16"] },
"attrs": { "epsilon": 0.00001, "axis": -1 },
"inputs": {
"x": {
"dtype": "float16",
"shape": [1, 4],
"data": { "kind": "values", "values": [-1.4765625, -1.861328125, 1.4697265625, 1.0703125] }
},
"scale": {
"dtype": "float16",
"shape": [4],
"data": { "kind": "values", "values": [0.316162109375, -2.791015625, -0.0877685546875, 2.0859375] }
}
},
"outputs": {
"y": {
"dtype": "float16",
"shape": [1, 4],
"tolerance": 0,
"relTolerance": 0,
"data": { "kind": "values", "values": [-0.31201171875, 3.47265625, -0.08624267578125, 1.4921875] }
}
}
},
{
"name": "legacy_f16_scale_before_output_cast_generic_exact",
"provenance": {
"source": "onnxruntime/core/providers/cpu/nn/layer_norm_impl.cc",
"test": "SimplifiedLayerNormalization scalar-scale cast boundary",
"notes": "A scalar scale forces the generic shared template and pins the same legacy cast ordering independently of the optimized row path."
},
"requires": { "features": ["shader-f16"] },
"attrs": { "epsilon": 0.00001, "axis": -1 },
"inputs": {
"x": {
"dtype": "float16",
"shape": [1, 4],
"data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/f16_scalar_cast_x" } }
},
"scale": {
"dtype": "float16",
"shape": [],
"data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/f16_scalar_cast_scale" } }
}
},
"outputs": {
"y": {
"dtype": "float16",
"shape": [1, 4],
"tolerance": 0,
"relTolerance": 0,
"data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/f16_scalar_cast_y" } }
}
}
},
{
"name": "legacy_f16_scale_before_output_cast_splitk_exact",
"provenance": {
"source": "onnxruntime/core/providers/cpu/nn/layer_norm_impl.cc",
"test": "SimplifiedLayerNormalization split-K f16 cast boundary",
"notes": "Forces the split-K shared kernel on the exact scalar-scale boundary and pins the legacy scale-before-output-cast ordering."
},
"requires": { "features": ["shader-f16"] },
"tunables": { "SPLIT_MIN_HIDDEN": 1, "SPLIT_TARGET_ELEMENTS": 1 },
"attrs": { "epsilon": 0.00001, "axis": -1 },
"inputs": {
"x": {
"dtype": "float16",
"shape": [1, 4],
"data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/f16_scalar_cast_x" } }
},
"scale": {
"dtype": "float16",
"shape": [],
"data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/f16_scalar_cast_scale" } }
}
},
"outputs": {
"y": {
"dtype": "float16",
"shape": [1, 4],
"tolerance": 0,
"relTolerance": 0,
"data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/f16_scalar_cast_y" } }
}
}
},
{
"name": "legacy_rank1_default_attrs_8",
"attrs": {},
"inputs": {
"x": { "dtype": "float32", "shape": [8], "data": { "kind": "fillFloat32", "sinStep": 0.37, "cosStep": 0.03 } },
"scale": {
"dtype": "float32",
"shape": [8],
"data": { "kind": "fillFloat32", "sinStep": 0.05, "cosStep": 0.41, "scale": 0.5 }
}
},
"outputs": { "y": { "dtype": "float32", "shape": [8], "tolerance": 0.000002 } }
},
{
"name": "legacy_explicit_stash_type_float32",
"attrs": { "epsilon": 0.00001, "axis": -1, "stash_type": 1 },
"inputs": {
"x": {
"dtype": "float32",
"shape": [2, 8],
"data": { "kind": "fillFloat32", "sinStep": 0.29, "cosStep": 0.13 }
},
"scale": {
"dtype": "float32",
"shape": [8],
"data": { "kind": "fillFloat32", "sinStep": 0.07, "cosStep": 0.37, "scale": 0.5 }
}
},
"outputs": { "y": { "dtype": "float32", "shape": [2, 8], "tolerance": 0.000002 } }
},
{
"name": "legacy_keep_dims_compatibility_attribute",
"provenance": {
"source": "onnxruntime/test/contrib_ops/layer_norm_test.cc",
"test": "SimplifiedLayerNormalization keep_dims=1",
"notes": "ONNX Runtime's legacy schema permits unchecked attributes and its own compatibility test emits keep_dims=1. The kernel ignores the attribute and always retains reduced dimensions for optional statistics."
},
"attrs": { "epsilon": 0.00001, "axis": 1, "keep_dims": 1 },
"inputs": {
"x": {
"dtype": "float32",
"shape": [2, 3, 4],
"data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.31 }
},
"scale": {
"dtype": "float32",
"shape": [3, 4],
"data": { "kind": "fillFloat32", "sinStep": 0.23, "cosStep": 0.09, "scale": 0.5 }
}
},
"outputs": {
"y": { "dtype": "float32", "shape": [2, 3, 4], "tolerance": 0.000002 },
"invStdVar": { "dtype": "float32", "shape": [2, 1, 1], "tolerance": 0.00001 }
}
},
{
"name": "legacy_zero_outer_rows_stats",
"attrs": { "epsilon": 0.00001, "axis": -1 },
"inputs": {
"x": { "dtype": "float32", "shape": [0, 4], "data": { "kind": "values", "values": [] } },
"scale": { "dtype": "float32", "shape": [4], "data": { "kind": "constant", "value": 1.0 } }
},
"outputs": {
"y": { "dtype": "float32", "shape": [0, 4], "tolerance": 0.000002 },
"invStdVar": { "dtype": "float32", "shape": [0, 1], "tolerance": 0.00001 }
}
}
]
}