diff --git a/js/web/test/data/ops/group-query-attention.jsonc b/js/web/test/data/ops/group-query-attention.jsonc index 83a5dc765280e..b095b8e227d09 100644 --- a/js/web/test/data/ops/group-query-attention.jsonc +++ b/js/web/test/data/ops/group-query-attention.jsonc @@ -42,7 +42,7 @@ }, // seqlens_k { - "data": [1], + "data": [0], "dims": [1], "type": "int32" }, @@ -197,7 +197,7 @@ }, // seqlens_k { - "data": [3], + "data": [2], "dims": [1], "type": "int32" }, @@ -276,7 +276,7 @@ }, // seqlens_k { - "data": [3], + "data": [2], "dims": [1], "type": "int32" }, @@ -363,7 +363,7 @@ }, // seqlens_k { - "data": [3], + "data": [2], "dims": [1], "type": "int32" }, @@ -450,7 +450,7 @@ }, // seqlens_k { - "data": [1], + "data": [0], "dims": [1], "type": "int32" }, @@ -526,7 +526,7 @@ }, // seqlens_k { - "data": [3], + "data": [2], "dims": [1], "type": "int32" }, @@ -690,7 +690,7 @@ }, // seqlens_k { - "data": [1], + "data": [0], "dims": [1], "type": "int32" }, @@ -769,7 +769,7 @@ }, // seqlens_k { - "data": [1], + "data": [0], "dims": [1], "type": "int32" }, @@ -845,7 +845,7 @@ }, // seqlens_k { - "data": [1], + "data": [0], "dims": [1], "type": "int32" }, @@ -921,7 +921,7 @@ }, // seqlens_k { - "data": [2], + "data": [1], "dims": [1], "type": "int32" }, @@ -1006,7 +1006,7 @@ }, // seqlens_k { - "data": [1], + "data": [0], "dims": [1], "type": "int32" }, @@ -1100,7 +1100,7 @@ }, // seqlens_k { - "data": [4], + "data": [3], "dims": [1], "type": "int32" }, @@ -1186,7 +1186,7 @@ }, // seqlens_k { - "data": [1], + "data": [0], "dims": [1], "type": "int32" }, @@ -1269,7 +1269,7 @@ // }, // // seqlens_k // { - // "data": [3], + // "data": [2], // "dims": [1], // "type": "int32" // }, @@ -1363,7 +1363,7 @@ }, // seqlens_k { - "data": [3], + "data": [2], "dims": [1], "type": "int32" }, @@ -1455,7 +1455,7 @@ }, // seqlens_k -- legacy [1, 1] shape instead of [1] { - "data": [1], + "data": [0], "dims": [1, 1], "type": "int32" }, diff --git a/onnxruntime/contrib_ops/webgpu/bert/flash_attention_decode_qkv.wgsl.template b/onnxruntime/contrib_ops/webgpu/bert/flash_attention_decode_qkv.wgsl.template index d5d2b89fcf29c..21029a25aa027 100644 --- a/onnxruntime/contrib_ops/webgpu/bert/flash_attention_decode_qkv.wgsl.template +++ b/onnxruntime/contrib_ops/webgpu/bert/flash_attention_decode_qkv.wgsl.template @@ -298,7 +298,7 @@ $MAIN { } workgroupBarrier(); - if (local_idx < tile_size_k_vec) { + if (local_idx < tile_size_k_vec && k + local_idx < v_head_size_vec) { for (var m = 0u; m < m_tile && q_base + m < uniforms.new_sequence_length; m++) { for (var i = 0u; i < sub_tile_count; i++) { tile_output[m][k + local_idx] += qkv_values[m][i][local_idx]; @@ -326,7 +326,7 @@ $MAIN { } workgroupBarrier(); - if (local_idx < tile_size_k_vec) { + if (local_idx < tile_size_k_vec && k + local_idx < v_head_size_vec) { for (var m = 0u; m < m_tile && q_base + m < uniforms.new_sequence_length; m++) { for (var i = 0u; i < sub_tile_count; i++) { tile_output[m][k + local_idx] += qkv_values[m][i][local_idx];