From 093babadc683ea258b18044003b6b3b435ff7d31 Mon Sep 17 00:00:00 2001 From: biondizzle Date: Fri, 15 May 2026 09:49:13 +0000 Subject: [PATCH] =?UTF-8?q?docs:=20clarify=20L1=20interleave=20removal=20?= =?UTF-8?q?=E2=80=94=20transpose=20is=20still=20needed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index dab90e23..a2f8f166 100644 --- a/README.md +++ b/README.md @@ -272,10 +272,10 @@ Additionally, the dest buffer must be zero-initialized before remap because CUTL **Bug:** `logical_widths=[3072, 3072]` caused the function to apply expert 0's scale to gate half and expert 1's scale to up half of ALL experts. All other experts' global scales were discarded. **Fix:** Removed the `logical_widths` branch entirely. The `else` branch correctly broadcasts each expert's own `(E, 1)` global scale across `(E, N, K//16)`. -### 4. L1 weight interleave removed +### 4. L1 weight interleave removed (transpose still needed) **File:** `weight_transform.py` **Bug:** `_interleave_l1_weights` assumed gate/up were pre-interleaved in groups of 16 and that the kernel used 2CTA UMMA layout. vLLM uses plain concat `[gate; up]` along the output dim, and our CUTLASS kernel uses `ClusterShape<1, 1, 1>`. -**Fix:** Removed entirely. `l1_weight_out = l1_weight.contiguous()`. +**Fix:** Removed the interleave function. Weights still need a transpose from checkpoint layout `(N, K_half)` row-major to CUTLASS layout `(K_half, N)` column-major — this is standard row→column conversion, not interleaving. Both L1 and L2 weights and scales are transposed. ### 5. SF remap: idx2crd+flatten coordinate extraction **File:** `cutlass_nvfp4_gemm.cu`