Gemma-4微调与部署中的挑战与磨难 [P]
摘要
一个机器学习团队记录了在微调并部署Gemma-4过程中遇到的实际挑战,包括与PEFT、SFTTrainer、DeepSpeed ZeRO-3的不兼容,以及缺乏运行时LoRA服务支持,并提供了每个问题的解决方法。
大家好,我们的机器学习团队本周花了一些时间让Gemma-4的训练和部署正常工作,并想记录下我们在此过程中遇到的所有问题。
* **PEFT无法识别Gemma 4的自定义层。** Google将视觉/音频投影封装在一个新的`ClippableLinear`类中,该类没有继承`nn.Linear`,因此PEFT拒绝附加LoRA,即使是纯文本微调也不行。解决方法:在加载权重后、调用PEFT之前解包这些封装器。
* **SFTTrainer静默中断训练。** TRL硬编码了`use_cache=False`,这破坏了Gemma 4的KV共享注意力机制。损失从不收敛,也没有错误,只有混乱的梯度。已在transformers v5.5.2+的上游修复。
* **DeepSpeed ZeRO-3保存半空的适配器。** 训练损失看起来完美,但保存的LoRA文件中有半数层的张量为零元素。模型表现得像是从未被微调过。临时解决方法:不要在Gemma 4上使用DeepSpeed进行LoRA训练。
* **任何地方都不支持运行时LoRA服务。** vLLM和SGLang需要一段时间才能支持Gemma 4多模态架构的运行时LoRA。你必须在提供服务之前手动合并权重并重新映射状态字典键。更详细的说明见[博客](https://www.oxen.ai/blog/writing-a-fine-tuning-and-deployment-pipeline-isnt-as-easy-as-it-looks-gemma-4-version),希望这对你的Gemma-4之旅有所帮助!
相似文章
Gemma 4 2B 通过 Spring AI / LM Studio 正确处理结构化 JSON 输出、工具调用和推理轨迹——包括在代码审查中识别出一个真实的 Java 错误
用户测试了 Gemma 4 2B 在本地通过 LM Studio 和 Spring AI 运行,用于结构化 JSON 输出、工具调用和推理轨迹,发现它正确识别了代码审查中的 Java 错误,并且性能与更大的模型相当。
喜欢 Gemma4 模型的朋友们——你们都是怎么用的?
一位开发者分享了在本地运行 Gemma4 和 Qwen 进行编程任务的复杂体验,指出了工具集成、循环处理和任务完成方面存在的问题,并向社区寻求更优化的使用策略。
在MLX中使用turboquant(及自定义内核)运行Gemma4 26b MoE
一位开发者成功在Apple MacBook Air M5上使用MLX、turboquant和自定义内核运行了Gemma4 26b MoE,实现了比llama.cpp更快的提示处理和生成速度,且内存占用更低。实现方式包括本地部署说明。
google/gemma-4-26B-A4B-it-assistant
Google DeepMind 发布了 Gemma 4 MTP 草稿模型(drafter),适用于 Gemma 4 系列模型,通过推测解码(speculative decoding)实现显著的解码加速,同时保持完全一致的生成质量,适用于低延迟应用场景。
[WIP] Gemma 4 MTP
llama.cpp 是一个开源 C/C++ 库,用于在各种硬件上高效进行 LLM 推理,支持多种量化格式和 GPU 后端。本篇 README 详细介绍了其功能、安装方法以及近期更新,包括 Hugging Face 缓存迁移和多模态支持。