Skip to content

Commit 1dee77f

Browse files
alexzmsSolitaryThinkerloaydatrainH1yori233mergify[bot]
authored
[feat] QAD 5090: Wire the Attn-QAT training attention backend (10/12) (#1459)
Co-authored-by: William Lin <SolitaryThinker@users.noreply.github.com> Co-authored-by: Loay Rashid <42599591+loaydatrain@users.noreply.github.com> Co-authored-by: Kaiqin Kong <k1kong@ucsd.edu> Co-authored-by: SolitaryThinker <wlsaidhi@gmail.com> Co-authored-by: alexzms <26690162+alexzms@users.noreply.github.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
1 parent b801488 commit 1dee77f

4 files changed

Lines changed: 17 additions & 1 deletion

File tree

fastvideo/attention/backends/attn_qat_train.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@ def _get_attn_qat_train_attention() -> Callable[..., torch.Tensor] | None:
4949
return _attn_qat_train_attention
5050

5151

52+
def is_attn_qat_train_available() -> bool:
53+
return _get_attn_qat_train_attention() is not None
54+
55+
5256
def attn_qat_train(q_BLHD: torch.Tensor,
5357
k_BLHD: torch.Tensor,
5458
v_BLHD: torch.Tensor,

fastvideo/configs/models/dits/base.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ class DiTArchConfig(ArchConfig):
2424
AttentionBackendEnum.TORCH_SDPA,
2525
AttentionBackendEnum.VIDEO_SPARSE_ATTN,
2626
AttentionBackendEnum.VMOBA_ATTN, AttentionBackendEnum.SAGE_ATTN_THREE,
27-
AttentionBackendEnum.ATTN_QAT_INFER, AttentionBackendEnum.SLA_ATTN,
27+
AttentionBackendEnum.ATTN_QAT_INFER,
28+
AttentionBackendEnum.ATTN_QAT_TRAIN, AttentionBackendEnum.SLA_ATTN,
2829
AttentionBackendEnum.SAGE_SLA_ATTN)
2930

3031
hidden_size: int = 0

fastvideo/platforms/cuda.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,16 @@ def get_attn_backend_cls(cls, selected_backend: AttentionBackendEnum | None, hea
147147
logger.info("Using Attn-QAT inference (modified SageAttention3 FP4) backend.")
148148
return "fastvideo.attention.backends.attn_qat_infer.AttnQatInferBackend"
149149
logger.info("Attn-QAT inference kernel is not built. Fall back to Flash Attention.")
150+
elif selected_backend == AttentionBackendEnum.ATTN_QAT_TRAIN:
151+
from fastvideo.attention.backends.attn_qat_train import ( # noqa: F401
152+
AttnQatTrainBackend, is_attn_qat_train_available)
153+
if is_attn_qat_train_available():
154+
logger.info("Using Attn-QAT training (fake-quantized attention) backend.")
155+
return "fastvideo.attention.backends.attn_qat_train.AttnQatTrainBackend"
156+
raise ImportError(
157+
"ATTN_QAT_TRAIN selected but fastvideo_kernel.triton_kernels.attn_qat_train is not built. "
158+
"Silent fallback would produce a non-QAT training run; refusing to proceed. "
159+
"Install the training kernel or pick a different FASTVIDEO_ATTENTION_BACKEND.")
150160
elif selected_backend == AttentionBackendEnum.VIDEO_SPARSE_ATTN:
151161
try:
152162
from fastvideo_kernel import video_sparse_attn # noqa: F401

fastvideo/platforms/interface.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ class AttentionBackendEnum(enum.Enum):
1616
SAGE_ATTN = enum.auto()
1717
SAGE_ATTN_THREE = enum.auto()
1818
ATTN_QAT_INFER = enum.auto()
19+
ATTN_QAT_TRAIN = enum.auto()
1920
VIDEO_SPARSE_ATTN = enum.auto()
2021
BSA_ATTN = enum.auto()
2122
VMOBA_ATTN = enum.auto()

0 commit comments

Comments
 (0)