环境
GPU : 8× A800 80GB (单机)
模型 : Qwen3.5-35B-A3B(VLM,包含 vision encoder)
ms-swift : 4.0.0.dev0(从 main 分支安装)
megatron-core : 0.15.0
PyTorch : 2.7
训练类型 : full(全参数微调),VLM SFT
数据 : 自定义 VLM 数据集(~826K 样本,单图 + 文本)
相关 Issue / PR
问题描述
我们在 8×A800 上对 Qwen3.5-35B-A3B 做 VLM SFT,速度非常慢。我们尝试了两个框架:
1. verl FSDP2(baseline)
设置
值
并行方式
FSDP2 (fully_shard)
micro_batch_size
4
global_batch_size
256
gradient_accumulation
8
max_length
2048
attn_implementation
eager
s/step
~750s
tokens/s
~699
2. ms-swift + DeepSpeed ZeRO-3 + grouped_mm
NPROC_PER_NODE=8 swift sft \
--model Qwen3.5-35B-A3B \
--tuner_type full \
--experts_impl grouped_mm \
--per_device_train_batch_size 1 \
--gradient_accumulation_steps 32 \
--deepspeed zero3 \
--max_length 2048
设置
值
micro_batch_size
1(mbs=4 + ZeRO-2 OOM)
global_batch_size
256
gradient_accumulation
32
s/step
~1504s (step 1)
tokens/s
~348
显存/卡
~78GB
ms-swift + ZeRO-3 比 verl FSDP2 还慢了约 2 倍,有 memory pressure 导致 cache flush。
对比参考
同样的 8×A800 环境,Qwen3-VL-8B(dense)可以达到 ~57,268 tokens/s ,Qwen3.5 只有其 1/82。
想请教的问题
PR [megatron] qwen3.5 use megatron-core #8126 进度 :看到 @Jintao-Huang 在 Qwen3.5-397B-A17B训练速度很慢 #8101 提到会将 Qwen3_5MoeGatedDeltaNet 切成 megatron-core 实现。请问这个 PR 预计什么时候 merge?merge 后是否直接支持 VLM (带 vision encoder)的训练?
grouped_mm 效果 :我们开了 --experts_impl grouped_mm,但在 ZeRO-3 全参数微调下速度反而更慢。ZeRO-3 下 grouped_mm 是否能正常加速?
Megatron EP 路径 :examples/models/qwen3_5/mcore.sh 使用了 expert_model_parallel_size=4 + moe_grouped_gemm + moe_shared_expert_overlap。这条路径在 8×A800 单机上做 VLM 全参数微调是否可行?需要 megatron-core 0.16 吗?
当前可用的优化 :在等 [megatron] qwen3.5 use megatron-core #8126 merge 之前,有没有什么立即可用的加速方法?比如 SWIFT_PATCH_CONV3D=1、或者特定的 deepspeed 配置?
flash attention :Qwen3.5 的 linear attention(GatedDeltaNet)是否有 flash attention 或类似的优化实现?目前在 verl 中被迫使用 eager,这可能是速度慢的一个重要原因。
期望
希望能在 8×A800 上将 Qwen3.5-35B-A3B 的训练吞吐提升到至少 2000-5000 tokens/s 的水平(目前只有 ~700 tokens/s)。
感谢!
环境
相关 Issue / PR
Qwen3_5MoeGatedDeltaNet切换到 megatron-core 实现)问题描述
我们在 8×A800 上对 Qwen3.5-35B-A3B 做 VLM SFT,速度非常慢。我们尝试了两个框架:
1. verl FSDP2(baseline)
2. ms-swift + DeepSpeed ZeRO-3 + grouped_mm
NPROC_PER_NODE=8 swift sft \ --model Qwen3.5-35B-A3B \ --tuner_type full \ --experts_impl grouped_mm \ --per_device_train_batch_size 1 \ --gradient_accumulation_steps 32 \ --deepspeed zero3 \ --max_length 2048ms-swift + ZeRO-3 比 verl FSDP2 还慢了约 2 倍,有 memory pressure 导致 cache flush。
对比参考
同样的 8×A800 环境,Qwen3-VL-8B(dense)可以达到 ~57,268 tokens/s,Qwen3.5 只有其 1/82。
想请教的问题
PR [megatron] qwen3.5 use megatron-core #8126 进度:看到 @Jintao-Huang 在 Qwen3.5-397B-A17B训练速度很慢 #8101 提到会将
Qwen3_5MoeGatedDeltaNet切成 megatron-core 实现。请问这个 PR 预计什么时候 merge?merge 后是否直接支持 VLM(带 vision encoder)的训练?grouped_mm 效果:我们开了
--experts_impl grouped_mm,但在 ZeRO-3 全参数微调下速度反而更慢。ZeRO-3 下 grouped_mm 是否能正常加速?Megatron EP 路径:
examples/models/qwen3_5/mcore.sh使用了expert_model_parallel_size=4+moe_grouped_gemm+moe_shared_expert_overlap。这条路径在 8×A800 单机上做 VLM 全参数微调是否可行?需要 megatron-core 0.16 吗?当前可用的优化:在等 [megatron] qwen3.5 use megatron-core #8126 merge 之前,有没有什么立即可用的加速方法?比如
SWIFT_PATCH_CONV3D=1、或者特定的 deepspeed 配置?flash attention:Qwen3.5 的 linear attention(GatedDeltaNet)是否有 flash attention 或类似的优化实现?目前在 verl 中被迫使用
eager,这可能是速度慢的一个重要原因。期望
希望能在 8×A800 上将 Qwen3.5-35B-A3B 的训练吞吐提升到至少 2000-5000 tokens/s 的水平(目前只有 ~700 tokens/s)。
感谢!