From 7c3caf5f8da87ab8e2aa53d94936e36f185cc60f Mon Sep 17 00:00:00 2001 From: "Gu, Yonghao" Date: Thu, 25 Jul 2024 09:43:42 +0800 Subject: [PATCH 1/5] rfcs: graph: propose to support Grouped-query Attention --- rfcs/20240722-group-query-attention/GQA.png | Bin 0 -> 86244 bytes rfcs/20240722-group-query-attention/README.md | 206 ++++++++++++++++++ .../attention.png | Bin 0 -> 105155 bytes .../option2.png | Bin 0 -> 66933 bytes .../unsqueeze_and_expand.md | 133 +++++++++++ 5 files changed, 339 insertions(+) create mode 100644 rfcs/20240722-group-query-attention/GQA.png create mode 100644 rfcs/20240722-group-query-attention/README.md create mode 100644 rfcs/20240722-group-query-attention/attention.png create mode 100644 rfcs/20240722-group-query-attention/option2.png create mode 100644 rfcs/20240722-group-query-attention/unsqueeze_and_expand.md diff --git a/rfcs/20240722-group-query-attention/GQA.png b/rfcs/20240722-group-query-attention/GQA.png new file mode 100644 index 0000000000000000000000000000000000000000..05d7f91f864a1ad8af728e367db433392207f304 GIT binary patch literal 86244 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 literal 0 HcmV?d00001 diff --git a/rfcs/20240722-group-query-attention/README.md b/rfcs/20240722-group-query-attention/README.md new file mode 100644 index 00000000000..77b603a5858 --- /dev/null +++ b/rfcs/20240722-group-query-attention/README.md @@ -0,0 +1,206 @@ +# Support Grouped-query Attention in Graph API + +## Introduction & Motivation + +In typical Multi-Head Attention (MHA), Query, Key, and Value tensors usually +have the same head number (eg., all Query, Key, and Value have shape (N, H, S, +D) where N is mini-batch size, S is sequence length, H is head number, and D is +head size). It becomes the performance bottleneck to load the Key and Value +tensors in each generation step especially when the sentence length becomes +longer. + +To reduce the memory bandwidth of loading the Key and Value tensors, Multi-Query +Attention (MQA) is invented by reducing the head number of Key and Value to 1 +which means multiple Queries will map the same single Key and Value (the shape +of Key and Value become (N, 1, S, D)). + +However, MQA can lead to model quality degradation and training instability. +Grouped-Query Attention (GQA), an interpolation between typical MHA and MQA, is +proposed with single Key and Value head per subgroup of Query heads (the shape +of Key and Value become (N, G, S, D) where H > G and H % G = 0). GQA is widely +adopted in llama2-70B, llama3 family, llama3.1 family [[#1]][1], Mistral, and +StarCoder2 [[#2]][2]. + +The following figure is from the paper [[#3]][3] and shows the comparison of +MHA, MQA, and GQA. + +![attention](attention.png) + +oneDNN already supports Scaled Dot-Product Attention (SDPA) through Graph API +([document](https://oneapi-src.github.io/oneDNN/dev_guide_graph_sdpa.html#doxid-dev-guide-graph-sdpa) +and +[examples](https://github.com/oneapi-src/oneDNN/blob/main/examples/graph/sdpa.cpp)). +This proposal aims to extend the support from SDPA to cover GQA. + +## GQA in PyTorch + +Unlike SDPA, PyTorch does not support GQA as a fused operations. In Huggingface +Transformers [[#4]][4], GQA is implemented in the following way. + +1. Firstly, as the Query (in shape (N, H, S, D)) and Key/Value (in shape (N, G, + S, D)) have different head number dimension and cannot perform dot-product + directly, Key and Value tensors are repeated along the head number dimension. + + ```python + def repeat_kv(hidden_states: torch.Tensor, n_rep: int) -> torch.Tensor: + """ + This is the equivalent of torch.repeat_interleave(x, dim=1, repeats=n_rep). The hidden states go from (batch,num_key_value_heads, seqlen, head_dim) to (batch, num_attention_heads, seqlen, head_dim) + """ + batch, num_key_value_heads, slen, head_dim = hidden_states.shape + if n_rep == 1: + return hidden_states + hidden_states = hidden_states[:, :, None, :, :].expand(batch, num_key_value_heads, n_rep, slen, head_dim) + return hidden_states.reshape(batch, num_key_value_heads * n_rep, slen, head_dim) + ``` + +2. Then the repeated Key and Values can be passed to the typical SDPA block. + + ```python + key_states = repeat_kv(key_states, self.num_key_value_groups) + value_states = repeat_kv(value_states, self.num_key_value_groups) + + # typical SDPA block + attn_weights = torch.matmul(query_states, key_states.transpose(2, 3)) / math.sqrt(self.head_dim) + + if attention_mask is not None: # no matter the length, we just slice it + causal_mask = attention_mask[:, :, :, : key_states.shape[-2]] + attn_weights = attn_weights + causal_mask + + # upcast attention to fp32 + attn_weights = nn.functional.softmax(attn_weights, dim=-1, dtype=torch.float32).to(query_states.dtype) + attn_weights = nn.functional.dropout(attn_weights, p=self.attention_dropout, training=self.training) + attn_output = torch.matmul(attn_weights, value_states) + ``` + +The overall workflow can be visualized as the following diagram: + +![GQA](GQA.png) + +## Proposals + +oneDNN's MatMul operation is used to construct the dot-product operations in +SDPA. But the MatMul operation requires the two inputs should have the same +batch dimension or the batch dimensions can be simply broadcasted. MQA can be +implemented directly using typical SDPA and the broadcasting rule. But in GQA, +the head number of Key and Value is different from the head number of Query. We +propose two options to pre-process the Query, Key and Value tensors before +passing them into the MatMul operations. + +### Option 1 + +We can pre-process the Key and Value tensors following how they are +pre-processed in the Huggingface Transformer code above. To achieve that, below +two new operations need to be supported by oneDNN graph operation set: + +- Unsqueeze (see [sub-rfc document](./unsqueeze_and_expand.md)) +- Expand (see [sub-rfc document](./unsqueeze_and_expand.md)) + +Pros: + +1. It makes the pattern graph to be consistent with the popular implementation + in the community. Frameworks can still map the framework graph directly to + oneDNN graph and get the fused partition. + +Cons: + +1. Need to add more operations to oneDNN graph operation set. +2. The implementation in the community may change. Even in the Huggingface code, + another alternative implementation is explicitly mentioned (via + `torch.repeat_interleave`). Once the implementation changes, the above pros + will become invalid. + +### Option 2 + +We can reshape Query, Key and Values tensors from 4D to 5D and leverage the +broadcasting semantics of MatMul operation to perform the dot-products. + +1. Reshape Query from 4D shape (N, H, S, D) to 5D shape (N, G, H / G, S, D). +2. Reshape Key from 4D shape (H, G, S, D) to 5D shape (N, G, 1, S, D). +3. Performance 5D matmul between (N, G, H / G, S, D) and (N, G, 1, S, D). The + third dimension will be broadcasted from 1 to `H / G` automatically per the + broadcasting rule of MatMul operation. +4. Similar reshape and broadcasting can also be applied to the dot-product of + Value. + +Here is the diagram: +![option2](option2.png) + +Pros: + +1. No change to API. +2. The pattern looks simpler than the pattern in option 1. + +Cons: + +1. The pattern is less intuitive from GQA definition. +2. The pattern cannot be used to optimize a framework graph directly. Frameworks + will have to implement GQA fusion by themselves and leverage this option to + optimized the fused GQA. + +### Option 3 + +We can extend the MatMul broadcasting rules to support group broadcast. +Currently, MatMul operation supports below broadcasting rules. + +For single 2D matrix multiplication: + +| Matrix A | Matrix B | Matrix C = A x B | +| -- | -- | -- | +| M x K | K x N | M x N | + +For batched matrix multiplications: + +| Matrix A | Matrix B | Matrix C = A x B | +| -- | -- | -- | +| B x M x K | B x K x N | B x M x N | +| B x M x K | 1 x K x N | B x M x N | +| 1 x M x K | B x K x N | B x M x N | + +This can be extended to multiple batch dimensions matrix multiplications: + +| Matrix A | Matrix B | Matrix C = A x B | +| -- | -- | -- | +| B1 x 1 x B3 x M x K | B1 x B2 x 1 x M x K | B1 x B2 x B3 x M x N | + +This RFC proposes to further extend it to support group broadcast: + +| Matrix A | Matrix B | Matrix C = A x B | +| -- | -- | -- | +| B1 x 1 x B3 x M x K | 1 x B2 x (B3/c) x K x N | B1 x B2 x B3 x M x N | + +where, c is a factor of B3. + +This rule looks uncommon and is not supported by the typical broadcasting rules +(see broadcasting in +[ONNX](https://github.com/onnx/onnx/blob/main/docs/Broadcasting.md) and +[NumPy](https://numpy.org/doc/stable/user/basics.broadcasting.html#general-broadcasting-rules).), +but actually it's added to the MatMul operation of cuDNN in order to support +GQA. + +Pros. + +1. We will have the most unified and simple pattern for SDPA, GQA, and MQA. +2. The same support methodology with cuDNN API. + +Cons. + +1. It complicates the semantics of MatMul operation. Previously incompatible + batch dimension will be treated as an error. But now we need to further check + if they can be properly group broadcasted. Even cuDNN explicitly document + that the new broadcasting rule is only supported by the fused attention. +2. Same as option 2, still the pattern cannot be used to optimize a framework + graph directly. Frameworks will have to implement GQA fusion by themselves + and leverage this option to optimized the fused GQA. + +## References + +1. [https://github.com/meta-llama/llama-models][1] +2. [https://huggingface.co/models][2] +3. [GQA: Training Generalized Multi-Query Transformer Models from Multi-Head + Checkpoints][3] +4. [https://github.com/huggingface/transformers/blob/2782aadae2b0b0c313eac3ee70f84f0335577635/src/transformers/models/llama/modeling_llama.py#L203C1-L212C85][4] + +[1]: https://github.com/meta-llama/llama-models +[2]: https://huggingface.co/models +[3]: https://arxiv.org/pdf/2305.13245 +[4]: https://github.com/huggingface/transformers/blob/2782aadae2b0b0c313eac3ee70f84f0335577635/src/transformers/models/llama/modeling_llama.py#L203C1-L212C85 diff --git a/rfcs/20240722-group-query-attention/attention.png b/rfcs/20240722-group-query-attention/attention.png new file mode 100644 index 0000000000000000000000000000000000000000..1733d3fb56d38160f3defe6e59047e668ea4042e GIT binary patch literal 105155 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 W(N$J1L0=fHR97t@gz< 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 CFiU&@ literal 0 HcmV?d00001 diff --git a/rfcs/20240722-group-query-attention/option2.png b/rfcs/20240722-group-query-attention/option2.png new file mode 100644 index 0000000000000000000000000000000000000000..70ca1fde7f6a8195fa4642a25241e5fdf0bd3e63 GIT binary patch literal 66933 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 literal 0 HcmV?d00001 diff --git a/rfcs/20240722-group-query-attention/unsqueeze_and_expand.md b/rfcs/20240722-group-query-attention/unsqueeze_and_expand.md new file mode 100644 index 00000000000..96b21c2d108 --- /dev/null +++ b/rfcs/20240722-group-query-attention/unsqueeze_and_expand.md @@ -0,0 +1,133 @@ +# Support Unsqueeze and Expand in Graph API + +## Introduction & Motivation + +As mentioned in the GQA RFC, if we choose to support option1, we need support +StaticUnsqueeze and StaticExpand operation in Graph API. + +## Proposal + +### StaticUnsqueeze +In the frameworks, there is `unsqueeze` used to add dimensions of size 1 to the +input tensor. We propose to define `StaticUnsqueeze` to map the similar +`unsqueeze` in the frameworks.[[#1]][1] [[#2]][2] [[#3]][3] [[#4]][4] + +| Framework | TensorFlow | PyTorch | ONNX | OpenVINO | +|----------------|------------|-----------|----------|------------| +| op | expand_dims| unsqueeze |Unsqueeze |Unsqueeze | +| input | src | src | data | src | +| input | axis | dim | axes(a tensor of int) | dim| +| output | dst | dst | dst | dst | + +These ops in the framework are the same with only a slight difference. Only for +the ONNX `Unsuqeeze`, the second input is a tensor of int. It supports a list of +dimensions to be inserted. Both these `axis` and `dim` are in the range +[-input.dim() - 1, input.dim()]. + +Based on the definitions of these frameworks, we define the following operation +`StaticUnsqueeze` to map these ops. + +| StaticUnsqueeze | Argument Name | Required or Optional | Data Type | +|-----------|------------------|-----------------------------|---------------| +| input | `src` | Required | f32,f16,bf16* | +| attribute | `dim` | Required | s64 | +| output | `dst` | Required | f32,f16,bf16* | + +**Detailed description**: + +It return the output with a dimension of size one inserted at the specified +`dim` position. Unsqueeze operation can return a view or copy of `src`. + +`dim`: the index at which to insert the singleton dimension, which should also be in +the range `[-src.dim() - 1, src.dim()]` + +For example: +when `src`'s shape is \[4\], +1. `dim` = 0, the `dst`'s shape is [1,4] +2. `dim` = 1, the `dst`'s shape is [4,1] + +### StaticExpand + +In the frameworks, there are some operations similar to expand semantics. For +example, `expand, expand_as, repeat, repeat_interleave` in PyTorch, `broadcast1, +broadcast3` in openvino, `Expand-13, Expand-8` in ONNX and +etc.[[#5]][5] [[#6]][6] [[#7]][7] [[#8]][8] These OP definitions are not quite the +same, but they can all implement similar expand functions. + +However, there is no operation in Graph API corresponding to the semantics in +the framework. So we can add an operation `StaticExpand` to map the similar op +from framework. It replicates data on the input to fit a given shape. + +#### option1 + +| StaticExpand | Argument Name | Required or Optional | Data Type | +|-----------|------------------|-----------------------------|---------------| +| input | `src` | Required | f32,f16,bf16* | +| attribute | `target_shape` | Required | s64 | +| output | `dst` | Required | f32,f16,bf16* | + +**Detailed description**: + +`Expand` takes the first tensor `src` builds a new tensor with shape matching the +attribute `target_shape`. `target_shape` is a 1D integer tensor that represents +required shape of the output. It requires thar the rank of input and output are +equal. + +Pros: + +1. This definition is simple and easy to understand. It is convenient to map + pytorch `unsqueeze`. + +Cons: + +1. It require the input's rank is equal output's rank. Don't support some op + function. + +#### option2 +Add an attribute `axes_mapping` based on the option1. + +| StaticExpand | Argument Name | Required or Optional | Data Type | +|-----------|------------------|-----------------------------|---------------| +| input | `src` | Required | f32,f16,bf16* | +| attribute | `target_shape` | Required | s64 | +| attribute | `axes_mapping` | Optional* | s64 | +| output | `dst` | Required | f32,f16,bf16* | + +**Detailed description**: + +The attribute `axes_mapping` is a tensor of int. If this attribute is not set, +it is the same as option 1. If the attribute is set, the size of `axis_mapping` +should match the rank of input data tensor, so all axes from data tensor should +be mapped to axes of the output. For example, `axes_mapping = [1]`enables +broadcasting of a tensor with shape `[C]` to shape `[N,C,H,W]` by replication of +initial tensor along dimensions 0, 2 and 3. Another example is broadcasting of +tensor with shape `[H,W]` to shape `[N,H,W,C]` with `axes_mapping = [1, 2]`. + +Pros: + +1. It solve the option1's cons. + +Cons: + +1. Need add an attribute, which increases the difficulty of understanding. Not + very useful in practice, the option1's cons can be solved by `unsqueeze` op. + +## References + +1. https://www.tensorflow.org/api_docs/python/tf/expand_dims +2. https://pytorch.org/docs/stable/generated/torch.unsqueeze.html +3. https://onnx.ai/onnx/operators/onnx__Unsqueeze.html#l-onnx-doc-unsqueeze +4. https://docs.openvino.ai/2022.3/openvino_docs_ops_shape_Unsqueeze_1.html +5. https://pytorch.org/docs/stable/generated/torch.Tensor.expand.html +6. https://docs.openvino.ai/2022.3/openvino_docs_ops_movement_Broadcast_3.html +7. https://onnx.ai/onnx/operators/onnx__Expand.html +8. https://www.tensorflow.org/api_docs/python/tf/broadcast_to + +[1]: https://www.tensorflow.org/api_docs/python/tf/expand_dims +[2]: https://pytorch.org/docs/stable/generated/torch.unsqueeze.html +[3]: https://onnx.ai/onnx/operators/onnx__Unsqueeze.html#l-onnx-doc-unsqueeze +[4]: https://docs.openvino.ai/2022.3/openvino_docs_ops_shape_Unsqueeze_1.html +[5]: https://pytorch.org/docs/stable/generated/torch.Tensor.expand.html +[6]: https://docs.openvino.ai/2022.3/openvino_docs_ops_movement_Broadcast_3.html +[7]: https://onnx.ai/onnx/operators/onnx__Expand.html +[8]: https://www.tensorflow.org/api_docs/python/tf/broadcast_to From 48aedf7899a1ed7f449260a158fe842478dc2d48 Mon Sep 17 00:00:00 2001 From: "Gu, Yonghao" Date: Mon, 5 Aug 2024 15:58:35 +0800 Subject: [PATCH 2/5] rfcs: graph: add recommended option --- rfcs/20240722-group-query-attention/README.md | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/rfcs/20240722-group-query-attention/README.md b/rfcs/20240722-group-query-attention/README.md index 77b603a5858..7c2837f468f 100644 --- a/rfcs/20240722-group-query-attention/README.md +++ b/rfcs/20240722-group-query-attention/README.md @@ -88,13 +88,15 @@ passing them into the MatMul operations. ### Option 1 -We can pre-process the Key and Value tensors following how they are -pre-processed in the Huggingface Transformer code above. To achieve that, below -two new operations need to be supported by oneDNN graph operation set: +Add new ops and patterns. We can pre-process the Key and Value tensors following +how they are pre-processed in the Huggingface Transformer code above. To achieve +that, below two new operations need to be supported by oneDNN graph operation set: - Unsqueeze (see [sub-rfc document](./unsqueeze_and_expand.md)) - Expand (see [sub-rfc document](./unsqueeze_and_expand.md)) +Then we would to support patterns like the above diagram. + Pros: 1. It makes the pattern graph to be consistent with the popular implementation @@ -109,10 +111,10 @@ Cons: `torch.repeat_interleave`). Once the implementation changes, the above pros will become invalid. -### Option 2 +### Option 2 (recommended) -We can reshape Query, Key and Values tensors from 4D to 5D and leverage the -broadcasting semantics of MatMul operation to perform the dot-products. +Add new patterns. We can reshape Query, Key and Values tensors from 4D to 5D and +leverage the broadcasting semantics of MatMul operation to perform the dot-products. 1. Reshape Query from 4D shape (N, H, S, D) to 5D shape (N, G, H / G, S, D). 2. Reshape Key from 4D shape (H, G, S, D) to 5D shape (N, G, 1, S, D). @@ -192,6 +194,13 @@ Cons. graph directly. Frameworks will have to implement GQA fusion by themselves and leverage this option to optimized the fused GQA. +## Summary +We would recommend to go with option 2, as it don't need to change the API and +minimal changes to the library. It is simple enough for understanding. For the +cons, it is releted to the integration in the framework. Actually framework have +to implement GQA fusion by themselves for both option2 and option3, also option +1 when the implementation in the community changes. + ## References 1. [https://github.com/meta-llama/llama-models][1] From 90992871bbc2b6f7edb76a9fa6d25d6bafd958e2 Mon Sep 17 00:00:00 2001 From: "Gu, Yonghao" Date: Thu, 8 Aug 2024 14:00:39 +0800 Subject: [PATCH 3/5] rfcs: graph: add more descriptions for the option 3 --- rfcs/20240722-group-query-attention/README.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/rfcs/20240722-group-query-attention/README.md b/rfcs/20240722-group-query-attention/README.md index 7c2837f468f..e20bb63fdc5 100644 --- a/rfcs/20240722-group-query-attention/README.md +++ b/rfcs/20240722-group-query-attention/README.md @@ -177,7 +177,7 @@ This rule looks uncommon and is not supported by the typical broadcasting rules [ONNX](https://github.com/onnx/onnx/blob/main/docs/Broadcasting.md) and [NumPy](https://numpy.org/doc/stable/user/basics.broadcasting.html#general-broadcasting-rules).), but actually it's added to the MatMul operation of cuDNN in order to support -GQA. +GQA. [[#5]][5] Pros. @@ -193,6 +193,10 @@ Cons. 2. Same as option 2, still the pattern cannot be used to optimize a framework graph directly. Frameworks will have to implement GQA fusion by themselves and leverage this option to optimized the fused GQA. +3. We rely on oneDNN matmul primitive kernels for reference implementation and + testing in benchdnn which do not support the new broadcasting rule. Extending + the broadcast semantics on graph side will also request additional effort for + reference implementation and testing. ## Summary We would recommend to go with option 2, as it don't need to change the API and @@ -208,8 +212,11 @@ to implement GQA fusion by themselves for both option2 and option3, also option 3. [GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints][3] 4. [https://github.com/huggingface/transformers/blob/2782aadae2b0b0c313eac3ee70f84f0335577635/src/transformers/models/llama/modeling_llama.py#L203C1-L212C85][4] +5. [https://docs.nvidia.com/deeplearning/cudnn/latest/api/cudnn-graph-library.html#cudnn-backend-operation-matmul-descriptor][5] [1]: https://github.com/meta-llama/llama-models [2]: https://huggingface.co/models [3]: https://arxiv.org/pdf/2305.13245 -[4]: https://github.com/huggingface/transformers/blob/2782aadae2b0b0c313eac3ee70f84f0335577635/src/transformers/models/llama/modeling_llama.py#L203C1-L212C85 +[4]: + https://github.com/huggingface/transformers/blob/2782aadae2b0b0c313eac3ee70f84f0335577635/src/transformers/models/llama/modeling_llama.py#L203C1-L212C85 +[5]: https://docs.nvidia.com/deeplearning/cudnn/latest/api/cudnn-graph-library.html#cudnn-backend-operation-matmul-descriptor From 509d1b0592f0cbbefd71abf053a6373c71a1ee3e Mon Sep 17 00:00:00 2001 From: "Gu, Yonghao" Date: Wed, 14 Aug 2024 09:58:41 +0800 Subject: [PATCH 4/5] rfcs: graph: fix the pytorch GQA implementation description --- rfcs/20240722-group-query-attention/README.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/rfcs/20240722-group-query-attention/README.md b/rfcs/20240722-group-query-attention/README.md index e20bb63fdc5..aae12b9f60c 100644 --- a/rfcs/20240722-group-query-attention/README.md +++ b/rfcs/20240722-group-query-attention/README.md @@ -34,8 +34,9 @@ This proposal aims to extend the support from SDPA to cover GQA. ## GQA in PyTorch -Unlike SDPA, PyTorch does not support GQA as a fused operations. In Huggingface -Transformers [[#4]][4], GQA is implemented in the following way. +Pytorch support GQA as a fused operations like SDPA in the recent PR [[#4]][4]. +Before this PR, GQA is implemented in the following way in Huggingface +Transformers[[#5]][5]. 1. Firstly, as the Query (in shape (N, H, S, D)) and Key/Value (in shape (N, G, S, D)) have different head number dimension and cannot perform dot-product @@ -117,7 +118,7 @@ Add new patterns. We can reshape Query, Key and Values tensors from 4D to 5D and leverage the broadcasting semantics of MatMul operation to perform the dot-products. 1. Reshape Query from 4D shape (N, H, S, D) to 5D shape (N, G, H / G, S, D). -2. Reshape Key from 4D shape (H, G, S, D) to 5D shape (N, G, 1, S, D). +2. Reshape Key from 4D shape (N, G, S, D) to 5D shape (N, G, 1, S, D). 3. Performance 5D matmul between (N, G, H / G, S, D) and (N, G, 1, S, D). The third dimension will be broadcasted from 1 to `H / G` automatically per the broadcasting rule of MatMul operation. @@ -177,7 +178,7 @@ This rule looks uncommon and is not supported by the typical broadcasting rules [ONNX](https://github.com/onnx/onnx/blob/main/docs/Broadcasting.md) and [NumPy](https://numpy.org/doc/stable/user/basics.broadcasting.html#general-broadcasting-rules).), but actually it's added to the MatMul operation of cuDNN in order to support -GQA. [[#5]][5] +GQA. [[#6]][6] Pros. @@ -211,12 +212,14 @@ to implement GQA fusion by themselves for both option2 and option3, also option 2. [https://huggingface.co/models][2] 3. [GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints][3] -4. [https://github.com/huggingface/transformers/blob/2782aadae2b0b0c313eac3ee70f84f0335577635/src/transformers/models/llama/modeling_llama.py#L203C1-L212C85][4] -5. [https://docs.nvidia.com/deeplearning/cudnn/latest/api/cudnn-graph-library.html#cudnn-backend-operation-matmul-descriptor][5] +4. [https://github.com/pytorch/pytorch/pull/132689][4] +5. [https://github.com/huggingface/transformers/blob/2782aadae2b0b0c313eac3ee70f84f0335577635/src/transformers/models/llama/modeling_llama.py#L203C1-L212C85][5] +6. [https://docs.nvidia.com/deeplearning/cudnn/latest/api/cudnn-graph-library.html#cudnn-backend-operation-matmul-descriptor][6] [1]: https://github.com/meta-llama/llama-models [2]: https://huggingface.co/models [3]: https://arxiv.org/pdf/2305.13245 -[4]: +[4]: https://github.com/pytorch/pytorch/pull/132689 +[5]: https://github.com/huggingface/transformers/blob/2782aadae2b0b0c313eac3ee70f84f0335577635/src/transformers/models/llama/modeling_llama.py#L203C1-L212C85 -[5]: https://docs.nvidia.com/deeplearning/cudnn/latest/api/cudnn-graph-library.html#cudnn-backend-operation-matmul-descriptor +[6]: https://docs.nvidia.com/deeplearning/cudnn/latest/api/cudnn-graph-library.html#cudnn-backend-operation-matmul-descriptor From 5b57d709e1c2c5759af425d73cf2a200e46f274c Mon Sep 17 00:00:00 2001 From: "Gu, Yonghao" Date: Tue, 3 Sep 2024 12:47:25 +0800 Subject: [PATCH 5/5] rfcs: graph: fix the shape in the description --- rfcs/20240722-group-query-attention/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20240722-group-query-attention/README.md b/rfcs/20240722-group-query-attention/README.md index aae12b9f60c..53ec10c01f1 100644 --- a/rfcs/20240722-group-query-attention/README.md +++ b/rfcs/20240722-group-query-attention/README.md @@ -163,7 +163,7 @@ This can be extended to multiple batch dimensions matrix multiplications: | Matrix A | Matrix B | Matrix C = A x B | | -- | -- | -- | -| B1 x 1 x B3 x M x K | B1 x B2 x 1 x M x K | B1 x B2 x B3 x M x N | +| B1 x 1 x B3 x M x K | B1 x B2 x 1 x K x N | B1 x B2 x B3 x M x N | This RFC proposes to further extend it to support group broadcast: