跳到正文
Hacker News· woctordho·· 8 天前AI 评分66

Show HN:基于 GGUF 的 LoRA 训练,40G 显存跑 Qwen3.8-Flash-Next

Show HN: LoRA over GGUF – Train Qwen3.8-Flash-Next in 40G VRAM

AI 导读

作者发布 transformers5-qwen3.5-recipe 仓库,用 GGUF 作为低显存 LoRA 训练的基础模型格式,在无 CPU offload 的情况下于 40 GiB 显存训练 Qwen3.8-Flash-Next(125B-A6B + 51B engram)。

正文 · AI 翻译

开放权重 AI 就像开源软件。用户不仅运行权重,还会修改权重。为本地硬件开发训练框架很重要。

GGUF 将取代 bitsandbytes,成为低显存 LoRA 训练的基础模型格式。我尝试过训练,没有使用 CPU offload:

  • Qwen3.6-35B-A3B 在 16 GiB 显存中(这意味着在 64 GiB 中训练 Qwen3.5-122B-A10B、在 192 GiB 中训练 Qwen3.5-397B-A17B 都绰绰有余)
  • DeepSeek-V4-Flash(284B-A13B)在 90 GiB 显存中
  • Qwen3.8-Flash-Next(125B-A6B + 51B engram)在 40 GiB 显存中

目前此仓库中的所有 kernel 和参数都是为 Strix Halo 调优的。要支持其他 GPU 还需要更多工作。

训练涉及的内容:

  • 使用 transformers 5 和 PEFT 的常规训练循环
  • 带 GGUF 量化器的 Transformers,见 https://github.com/woct0rdho/transformers/tree/gguf 。我在 huggingface/transformers#40070 中跟踪此事。如果最终无法合并到 transformers 中,我会在此仓库中以一些 monkey patch 的形式重新实现它
  • 调优的 GEMM,见 ROCm/rocm-libraries#9385
  • 类似 llama.cpp 的 MMQ 和分组 MMQ,见 https://github.com/woct0rdho/torch-ggml-ops
  • 类似 Unsloth 的快速 LoRA 反向公式,用于线性层和 MoE 层
  • 带调优配置的 AITER gmm/ptgmm Triton kernel,用于非量化 MoE LoRA
  • 类似 OpenAI triton-kernels 的 MoE 路由
  • 来自 Liger Kernel 的 RMSNorm
  • 类似 Liger Kernel 的分块交叉熵损失,可与 MMQ 配合使用
  • 禁用自回归解码缓存和负载均衡损失以节省显存
  • 非重入式梯度检查点
  • bitsandbytes AdamW 8-bit 优化器

Qwen3.5 专属:

DeepSeek 专属:

Qwen4-Exp 专属:

其他说明:

  • Unsloth 梯度检查点提供快速的异步 CPU-GPU 拷贝。如果你真的做 CPU offload,就需要它。但在具有统一内存的 Strix Halo 上,你应该只使用常规的梯度检查点
  • 在 Strix Halo 上加载大模型时,你需要 pread,见 safetensors/safetensors#728
  • 在 transformers 中使用 GGUF 量化器时,你需要对 GGUF 反量化函数使用 torch.compile 以节省显存
  • 在 llama.cpp 中用 LoRA 推理模型时,目前 llama.cpp 没有快速的 LoRA kernel。我做了一个,见 https://github.com/woct0rdho/llama.cpp/commit/36e9f19a3058cbdc86e824293c0c69ca02ad03ea

来源:Hacker News · github.com