Gemma 4 多模态微调工具:在 Apple Silicon 上本地训练 Whisper 的实践指南
Hacker News2026/04/08 03:37机翻/自动摘要/自动分类
4 阅读
内容评分
技术含量
8/10
营销水分
3/10
摘要
作者在 M2 Ultra Mac Studio 上实现了一个从 GCS 流式读取音频并对 Whisper 进行本地微调的工具,并在 Gemma 4 发布后加入对其多模态微调的支持。文章详细说明了数据管道、LoRA 微调、内存管理等实现细节,指出了长音频导致 OOM 的挑战并提供了梯度检查点等解决方案,旨在为 Apple Silicon 开发者提供可直接使用的微调框架。
正文
约六个月前,我在 M2 Ultra Mac Studio 上尝试对 Whisper 进行本地。当时面临的主要难题是:Google Cloud Storage 中存有 15,000 小时的音频数据,无法一次性下载到本地。为此,我实现了一个流水线:在训练过程中实时从 GCS 将音频流式拉取到本机,边读边训练,避免了磁盘空间瓶颈。
随后 Gemma 3n 发布,我把它集成进项目,过程相当繁琐且耗时,项目因此搁置。几天前 Gemma 4 正式发布,我重新启动工作,更新代码并加入对 Gemma 4 的支持。今天把完整工具开源,供大家尝试并在此基础上改进。
实现要点
- 使用 Python +
torch(或mlx)构建数据流管道,利用gcsfs读取远端音频块; - 将音频切片后转为 Mel‑spectrogram,喂入 Whisper 编码器;
- 采用 LoRA/QLoRA 对 Gemma 4 进行多模态,保持原始语言模型权重不变;
- 为防止长音频导致 OOM,加入分段处理、梯度累积以及显存/内存监控逻辑。
遇到的挑战
- Mac Studio 仅有 64 GB RAM,长序列(>30 s)容易触发内存溢出;通过
torch.utils.checkpoint(梯度检查点)和分块推理将峰值内存降低约 30%。 - MLX 在音频方面的生态尚不成熟,部分算子缺失,导致最终仍需回退到 PyTorch 实现。
后续计划
- 探索更高效的流式特征提取(如
torchaudio的 on‑the‑fly 采样),进一步压缩内存占用; - 与 Apple 的 Core ML/MLX 团队合作,争取原生音频算子支持。
欢迎克隆仓库、提交 PR,期待社区一起完善这套在 Apple Silicon 上的多模态方案。
——Matt