|
63 | 63 | is_rocm_aiter_fuse_routed_scaling_factor, |
64 | 64 | ) |
65 | 65 |
|
| 66 | +from aiter.ops.triton.fused_fp8_quant import fused_rms_fp8_group_quant |
| 67 | +import aiter as rocm_aiter |
| 68 | +rocm_aiter_fp8_dtype = rocm_aiter.dtypes.fp8 |
| 69 | +rocm_aiter_fp8_quant_group_size = 128 |
66 | 70 |
|
67 | 71 | class DeepseekV2MLP(nn.Module): |
68 | 72 |
|
@@ -484,10 +488,15 @@ def forward( |
484 | 488 | positions: torch.Tensor, |
485 | 489 | hidden_states: torch.Tensor, |
486 | 490 | ) -> torch.Tensor: |
| 491 | + hidden_states_quant = None |
| 492 | + if isinstance(hidden_states, tuple): |
| 493 | + hidden_states, hidden_states_quant = hidden_states |
| 494 | + |
487 | 495 | if self.q_lora_rank is not None: |
488 | 496 | # q_c = self.q_a_proj(hidden_states)[0] |
489 | 497 | # kv_lora = self.kv_a_proj_with_mqa(hidden_states)[0] |
490 | | - qkv_lora = self.fused_qkv_a_proj(hidden_states)[0] |
| 498 | + qkv_lora = self.fused_qkv_a_proj(hidden_states, x_quant_scales = hidden_states_quant)[0] |
| 499 | + # qkv_lora = self.fused_qkv_a_proj(hidden_states)[0] |
491 | 500 | q_c, kv_lora = qkv_lora.split( |
492 | 501 | [self.q_lora_rank, self.kv_lora_rank + self.qk_rope_head_dim], |
493 | 502 | dim=-1, |
@@ -576,12 +585,28 @@ def forward( |
576 | 585 | residual: Optional[torch.Tensor], |
577 | 586 | ) -> torch.Tensor: |
578 | 587 | # Self Attention |
| 588 | + weight = self.input_layernorm.weight |
| 589 | + eps = self.input_layernorm.variance_epsilon |
579 | 590 | if residual is None: |
580 | 591 | residual = hidden_states |
581 | | - hidden_states = self.input_layernorm(hidden_states) |
| 592 | + hidden_states, hidden_states_quant = fused_rms_fp8_group_quant(hidden_states, weight, eps, |
| 593 | + None, None, eps, |
| 594 | + group_size = rocm_aiter_fp8_quant_group_size, |
| 595 | + dtype_quant=rocm_aiter_fp8_dtype, |
| 596 | + res1=None) |
582 | 597 | else: |
583 | | - hidden_states, residual = self.input_layernorm( |
584 | | - hidden_states, residual) |
| 598 | + (hidden_states, hidden_states_quant), residual = fused_rms_fp8_group_quant(hidden_states, weight, eps, |
| 599 | + None, None, eps, |
| 600 | + group_size = rocm_aiter_fp8_quant_group_size, |
| 601 | + dtype_quant=rocm_aiter_fp8_dtype, |
| 602 | + res1=residual) |
| 603 | + hidden_states = (hidden_states, hidden_states_quant) |
| 604 | + # if residual is None: |
| 605 | + # residual = hidden_states |
| 606 | + # hidden_states = self.input_layernorm(hidden_states) |
| 607 | + # else: |
| 608 | + # hidden_states, residual = self.input_layernorm( |
| 609 | + # hidden_states, residual) |
585 | 610 | hidden_states = self.self_attn( |
586 | 611 | positions=positions, |
587 | 612 | hidden_states=hidden_states, |
|
0 commit comments