快速结论:该报错通常发生在使用 bitsandbytes 的 8-bit 优化器(如 adamw_bnb_8bit)与 PyTorch FSDP(Fully Sharded Data Parallel)配合时。优先排查 FSDP 调用 full_optim_state_dict 进行 optimizer state 聚合的环节,以及是否启用了 FSDP CPU offload。
问题场景
用户使用 bitsandbytes 提供的 8-bit 优化器(如 adamw_bnb_8bit),并启用 PyTorch FSDP 进行分布式训练。报错在训练过程中或模型保存时触发,特别是当调用 FSDP.full_optim_state_dict(model, optimizer) 以聚合完整 optimizer state 时。
报错原文
RuntimeError: output tensor must have the same type as input tensor
完整调用栈指向 PyTorch 分布式通信的 all_gather 操作:
File ".../torch/distributed/distributed_c10d.py", line 2136, in _all_gather_base
work = group._allgather_base(output_tensor, input_tensor)
原因分析
可能原因:bitsandbytes 的 8-bit 优化器内部维护了 int8 类型的 state(如量化统计量),而 FSDP 在聚合 optimizer state 时,会尝试对不同分片上的 tensor 执行 all_gather 操作。PyTorch 的分布式后端(NCCL)要求 all_gather 的输入输出 tensor 必须具有相同的 dtype。由于 8-bit 优化器的 state tensor 是 int8 类型,而模型参数通常是 fp16/bf16/fp32,两者类型不一致,导致该错误。
此外,在 Issue 讨论中还观察到另一个相关错误:当 FSDP 启用 CPU offload 时,会触发 Expected a cuda device, but got: cpu,说明 bitsandbytes 的 8-bit 优化器 step 过程不支持将全部 state 放置到 CPU。
请注意,Issue 并未给出最终确认的修复方案,上述为社区贡献者提出的合理推测。
环境排查
- 确认 bitsandbytes 版本(建议使用最新版,旧版本兼容性更差)。
- 确认 PyTorch 版本(建议 1.13+,FSDP 支持情况因版本而异)。
- 确认 CUDA 版本和显卡架构(bitsandbytes 需要 CUDA 兼容的 GPU)。
- 如果你使用 Hugging Face Transformers + Trainer,确认 Trainer 参数中 FSDP 配置是否正确(如
fsdp_plugin设置)。
解决步骤
- 可优先尝试:避免在启用 FSDP 的同时使用 8-bit 优化器,改用标准的 32-bit 优化器(如
adamw_torch)进行验证,确认训练和保存流程正常。 - 如果必须使用 8-bit 优化器,请避免调用
FSDP.full_optim_state_dict()进行 optimizer state 聚合。可以在模型保存时只保存模型权重,忽略 optimizer state 的跨分片聚合。 - 检查 FSDP 配置中的 CPU offload 设置,如果启用了 CPU offload(如
cpu_offload=True),请先关闭,因为 bitsandbytes 8-bit 优化器不兼容 CPU offload。 - 关注 bitsandbytes 官方仓库的更新,特别是针对 FSDP 兼容性的 Issue(如 #89 及其关联 PR),社区可能需要修改 bitsandbytes 内部的 state 类型或引入类似 DeepSpeed 的 workaround(将 state tensor 隐藏在 list/tuple 中以避免类型检查)。
验证方法
如果更换为 32-bit 优化器后训练和保存正常,说明原报错确实由 8-bit 优化器与 FSDP 的兼容性导致。如果采用不聚合 optimizer state 的方式保存模型,确认模型权重加载后推理正确性即可。如果等待官方修复,请复现训练流程确认错误不再出现。
参考来源
bitsandbytes-foundation/bitsandbytes #89
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![组织如何使用AI:来自ChatGPT的证据 [pdf]](https://www.chat-gpts.plus/wp-content/uploads/2026/08/ai_cover_3-382-768x403.jpg)

