Uh oh!
There was an error while loading. Please reload this page.
Add FP16/BF16 fused_attention support with max_seqlen=512 - #175
Conversation
Signed-off-by: Reese Wang <rewang@nvidia.com>
Signed-off-by: Reese Wang <rewang@nvidia.com>
Signed-off-by: Reese Wang <rewang@nvidia.com>
Signed-off-by: Reese Wang <rewang@nvidia.com>
Signed-off-by: Reese Wang <rewang@nvidia.com>
Signed-off-by: Reese Wang <rewang@nvidia.com>
Signed-off-by: Reese Wang <rewang@nvidia.com>
Signed-off-by: Reese Wang <rewang@nvidia.com>
Signed-off-by: Reese Wang <rewang@nvidia.com>
Signed-off-by: Reese Wang <rewang@nvidia.com>
Signed-off-by: Reese Wang <rewang@nvidia.com>
bd1c763 to
b375bd8Comparezlsh80826
commented
Apr 27, 2023
/te-ci |
Signed-off-by: Reese Wang <rewang@nvidia.com>
Signed-off-by: Reese Wang <rewang@nvidia.com>
Signed-off-by: Reese Wang <rewang@nvidia.com>
…ormerengine/transformerengine into rewang/fused_attention_max_512
Signed-off-by: Reese Wang <rewang@nvidia.com>
Signed-off-by: Reese Wang <rewang@nvidia.com>
Signed-off-by: Reese Wang <rewang@nvidia.com>
Signed-off-by: Reese Wang <rewang@nvidia.com>
* Merge q_cu_seqlen and kv_cu_seqlen * Remove is_causal_masking * Replace seed with rng_state * Add is_training argument Signed-off-by: Reese Wang <rewang@nvidia.com>
d1adeaa to
5dfd4feCompareSigned-off-by: Reese Wang <rewang@nvidia.com>
Signed-off-by: Reese Wang <rewang@nvidia.com>
Signed-off-by: Reese Wang <rewang@nvidia.com>
…ion impl Signed-off-by: Reese Wang <rewang@nvidia.com>
Signed-off-by: Reese Wang <rewang@nvidia.com>
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
* Replace reference code with flax.linen * Remove unnecessary comments * Use AttnMaskType Signed-off-by: Reese Wang <rewang@nvidia.com>
Signed-off-by: Reese Wang <rewang@nvidia.com>
Signed-off-by: Reese Wang <rewang@nvidia.com>
Signed-off-by: Reese Wang <rewang@nvidia.com>
b5aec2c to
df18c29CompareUh oh!
There was an error while loading. Please reload this page.
timmoon10
left a comment
There was a problem hiding this comment.
Overall LGTM. The pending suggestions are mostly stylistic.
Signed-off-by: Reese Wang <rewang@nvidia.com>
Signed-off-by: Reese Wang <rewang@nvidia.com>
… line report Signed-off-by: Reese Wang <rewang@nvidia.com>
Signed-off-by: Reese Wang <rewang@nvidia.com>
Signed-off-by: Reese Wang <rewang@nvidia.com>
zlsh80826
commented
May 8, 2023
/te-ci |
| import transformer_engine_jax | ||
| from transformer_engine_jax import DType as TEDType | ||
| from transformer_engine_jax import NVTE_Bias_Type |
There was a problem hiding this comment.
Note: This file is partially annotated
Uh oh!
There was an error while loading. Please reload this page.
Signed-off-by: Reese Wang <rewang@nvidia.com>
zlsh80826
commented
May 9, 2023
/te-ci |
* Add fused attention unit tests Signed-off-by: Reese Wang <rewang@nvidia.com> * Use NVTE_* enums Signed-off-by: Reese Wang <rewang@nvidia.com> * Use NVTE_Mask_Type and remove FMHADescriptor Signed-off-by: Reese Wang <rewang@nvidia.com> * Move common functions to utils Signed-off-by: Reese Wang <rewang@nvidia.com> * Change namespace to fused_attn Signed-off-by: Reese Wang <rewang@nvidia.com> * Move fused_attn_max_512_fwd_qkvpacked under the general APIs Signed-off-by: Reese Wang <rewang@nvidia.com> * Add fused_attn_max_512_bwd_qkvpacked Signed-off-by: Reese Wang <rewang@nvidia.com> * Move fused_attn_max_512_bwd_qkvpacked under the general APIs Signed-off-by: Reese Wang <rewang@nvidia.com> * Remove redundant blank line Signed-off-by: Reese Wang <rewang@nvidia.com> * Fix a potential bug for cu_seqlen converter Signed-off-by: Reese Wang <rewang@nvidia.com> * Reformat fused_attn_max_512 Signed-off-by: Reese Wang <rewang@nvidia.com> * Refine the unfused attention warning message Signed-off-by: Reese Wang <rewang@nvidia.com> * Rename to fused_attn_max_512 Signed-off-by: Reese Wang <rewang@nvidia.com> * Remove the deprecated header Signed-off-by: Reese Wang <rewang@nvidia.com> * Fix flax import Signed-off-by: Reese Wang <rewang@nvidia.com> * Rename to fused attn Signed-off-by: Reese Wang <rewang@nvidia.com> * Add attention related mask Signed-off-by: Reese Wang <rewang@nvidia.com> * Add attn_mask_type and attn_bias_type Signed-off-by: Reese Wang <rewang@nvidia.com> * Refactor jax primitive API * Merge q_cu_seqlen and kv_cu_seqlen * Remove is_causal_masking * Replace seed with rng_state * Add is_training argument Signed-off-by: Reese Wang <rewang@nvidia.com> * Remove dsoftmax from the customcall Signed-off-by: Reese Wang <rewang@nvidia.com> * Add None guard for bias and dropout_rng Signed-off-by: Reese Wang <rewang@nvidia.com> * Add version guard Signed-off-by: Reese Wang <rewang@nvidia.com> * Add is_fused_attn_kernel_available() to correctly dispatch the attention impl Signed-off-by: Reese Wang <rewang@nvidia.com> * Fix the merge conflict Signed-off-by: Reese Wang <rewang@nvidia.com> * Adjust the code style Signed-off-by: Reese Wang <rewang@nvidia.com> * Add the missing blank lines Signed-off-by: Reese Wang <rewang@nvidia.com> * Change the order of FADescriptor members Signed-off-by: Reese Wang <rewang@nvidia.com> * Enhance the readability of fused_attn_max_512.cu Signed-off-by: Reese Wang <rewang@nvidia.com> * Generalize the input dimension unpacking Signed-off-by: Reese Wang <rewang@nvidia.com> * 16 bits fused attention requires 8.9.1 Signed-off-by: Reese Wang <rewang@nvidia.com> * Update fused attention support matrix Signed-off-by: Reese Wang <rewang@nvidia.com> * Handle None type when sharding Signed-off-by: Reese Wang <rewang@nvidia.com> * Change to the padding ratio Signed-off-by: Reese Wang <rewang@nvidia.com> * Performance optimization for non-bias cases Signed-off-by: Reese Wang <rewang@nvidia.com> * Revert the cudnn-frontend PRIVATE keyword which was used for debugging Signed-off-by: Reese Wang <rewang@nvidia.com> * Revert "Update fused attention support matrix" This reverts commit 4effe67. Signed-off-by: Reese Wang <rewang@nvidia.com> * Treat b * s as total_seqs to align ragged cases Signed-off-by: Reese Wang <rewang@nvidia.com> * Add FP16/BF16 max_seqlen <= 512 fused attention to the support matrix Signed-off-by: Reese Wang <rewang@nvidia.com> * Refine test_fused_attn.py * Replace reference code with flax.linen * Remove unnecessary comments * Use AttnMaskType Signed-off-by: Reese Wang <rewang@nvidia.com> * Unify the cuDNN compile version Signed-off-by: Reese Wang <rewang@nvidia.com> * Add dropout to the support matrix Signed-off-by: Reese Wang <rewang@nvidia.com> * Slightly adjust the headers Signed-off-by: Reese Wang <rewang@nvidia.com> * Typo fix: remove redundant either Signed-off-by: Reese Wang <rewang@nvidia.com> * Consolidating fused attention requirements Signed-off-by: Reese Wang <rewang@nvidia.com> * Replace cudnn_frontend::throw_if with NVTE_CHECK for the better error line report Signed-off-by: Reese Wang <rewang@nvidia.com> * Rename to fused_attn_fp16_bf16_max_seqlen_512 for the better readability Signed-off-by: Reese Wang <rewang@nvidia.com> * Remove CUDNN_FRONTEND_UNUSED Signed-off-by: Reese Wang <rewang@nvidia.com> * Add more annotations to the custom calls Signed-off-by: Reese Wang <rewang@nvidia.com> --------- Signed-off-by: Reese Wang <rewang@nvidia.com>
This PR extends the support matrices of the following APIs:
nvte_fused_attn_fwd_qkvpacked,nvte_fused_attn_bwd_qkvpacked,nvte_fused_attn_fwd_kvpacked,nvte_fused_attn_bwd_kvpackedto have the 16 bits fused attention with max sequence length = 512. Besides, this PR also adds the JAX sides custom_calls (used internally in TE) for self/cross fused attention. TheTransformerLayerandMultiHeadAttentionmodule now will automatically enable the fused attention if available.Tasks:
nvte_fused_attn_{fwd,bwd}_{qkv,kv}packed. (Limitation: padded shape and max sequence length = 512). cuDNN 8.9.1 is required.generateMatrixStridesand move*_op_createto thefused_attn_utils.cuSelfFusedAttnMax512FwdPrimitive,SelfFusedAttnMax512BwdPrimitive,CrossFusedAttnMax512FwdPrimitive,CrossFusedAttnMax512BwdPrimitiveand the related custom vjpFuture works: