Request for AdamW8bit support on CPU (would help TorchTune)

用户使用 TorchTune(配置文件如 recipes/configs/llama3/8B_full_single_device.yaml )在 CPU 上执行全量微调,并调用 bitsandbytes 的 AdamW8bit 优化器。由于公共云 GPU 机器成本较高,用户希望利用更易获取的 CP

Request for AdamW8bit support on CPU (would help TorchTune)

Request for AdamW8bit support on CPU (would help TorchTune)

快速结论:该问题发生在 TorchTune 用户尝试在 CPU 上使用 bitsandbytes 的 AdamW8bit 优化器进行全量微调时。优先排查所安装的 bitsandbytes 版本是否已合入 CPU 支持(需 ≥ 某个含 PR #1901 的版本)。

问题场景

用户使用 TorchTune(配置文件如 recipes/configs/llama3/8B_full_single_device.yaml)在 CPU 上执行全量微调,并调用 bitsandbytes 的 AdamW8bit 优化器。由于公共云 GPU 机器成本较高,用户希望利用更易获取的 CPU 进行深度学习微调。

报错原文

# 该 Issue 本身未提供具体报错文本,但核心问题是:AdamW8bit optimizer 在 CPU 上不可用。
# 可能的运行时错误类似:
RuntimeError: Device 'cpu' not supported for AdamW8bit. Supported devices: ['cuda']

原因分析

bitsandbytes 主分支(main)最初未包含 AdamW8bit 对 CPU 的支持。虽然 multi-backend-refactor 分支(通过 PR #898)已有相关实现,但未被合并到主分支。因此,通过 pip 安装的标准版本或 TorchTune 自动拉取的 bitsandbytes 均无法在 CPU 上使用 AdamW8bit。

环境排查

  • Python 版本(建议 3.9+)
  • bitsandbytes 版本(需确认是否已合入 PR #1901)
  • PyTorch 版本(CPU 版本无需 CUDA)
  • TorchTune 版本(若通过 TorchTune 自动安装 bitsandbytes,需确保其依赖允许最新版)
  • 操作系统及 CPU 架构(如 Intel x64)

解决步骤

  1. 升级 bitsandbytes 至含 PR #1901 的版本:该 Issue 最终由 PR #1901 解决(Resolved by #1901),确保安装的版本包含此合并。
  2. 从源码安装特定分支或提交:如果官方 release 未及时发布,可手动从 GitHub 克隆 bitsandbytes 仓库,切换到含 PR #1901 的提交后重新编译安装。
  3. 验证 TorchTune 配置:在 TorchTune 的配置文件中明确指定 optimizer: bitsandbytes.optim.AdamW8bit 并设置 device: cpu
  4. 多后端支持(可优先尝试):若仍不生效,可参考 multi-backend-refactor 分支(PR #898)的实现思路,但鉴于主分支已合入,此步仅作为兜底。

验证方法

运行一个简单的 Python 脚本,在 CPU 上实例化 bitsandbytes.optim.AdamW8bit 并尝试对一个小模型进行一步前向/反向传播。若无报错且优化器正常更新参数,则问题解决。

参考来源

bitsandbytes-foundation/bitsandbytes #1226

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 8856

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注