Checklist / 检查清单
Bug Description / Bug 描述
在ms-swift源码中:
swift 的 sp_linear_forward 内部(简化示意)
def sp_linear_forward(self, hidden_states, **kwargs):
if not sequence_parallel.enabled() and 'cu_seq_lens_q' not in kwargs:
# 第一分支:走 transformers 原始 forward(fla CUDA 内核,正常)
return original_forward(self, hidden_states, **kwargs)
else:
# 第二分支:走 swift varlen 路径 → 尝试 import flash_linear_attention → 崩溃!
return _run_sequence_parallel_forward(self, hidden_states, **kwargs)
此处的条件判断由于伪packing机制导致所有训练无论batch_size的大小都会走varlen实现去跑,但是varlen中实际没有写回退原生torch实现的方法。而Windows中目前虽然有fla和triton实现,但是没有合现成的causal-conv1d whl,因此出现ExceptImport。
How to Reproduce / 如何复现
1
Additional Information / 补充信息
No response
Checklist / 检查清单
Bug Description / Bug 描述
在ms-swift源码中:
swift 的 sp_linear_forward 内部(简化示意)
def sp_linear_forward(self, hidden_states, **kwargs):
if not sequence_parallel.enabled() and 'cu_seq_lens_q' not in kwargs:
# 第一分支:走 transformers 原始 forward(fla CUDA 内核,正常)
return original_forward(self, hidden_states, **kwargs)
else:
# 第二分支:走 swift varlen 路径 → 尝试 import flash_linear_attention → 崩溃!
return _run_sequence_parallel_forward(self, hidden_states, **kwargs)
此处的条件判断由于伪packing机制导致所有训练无论batch_size的大小都会走varlen实现去跑,但是varlen中实际没有写回退原生torch实现的方法。而Windows中目前虽然有fla和triton实现,但是没有合现成的causal-conv1d whl,因此出现ExceptImport。
How to Reproduce / 如何复现
1
Additional Information / 补充信息
No response