文章摘要
该项目提供在苹果芯片Mac上使用PyTorch和Metal Performance Shaders对Gemma模型进行多模态微调的工具,支持文本、图像和音频数据,并能处理超出本地存储的大规模数据集,无需NVIDIA显卡。
文章总结
项目概述
Gemma多模态调优工具是一个基于PyTorch和Metal Performance Shaders的解决方案,支持在Apple Silicon设备上对Gemma 4和3n模型进行多模态(文本、图像、音频)微调,无需依赖NVIDIA GPU。
核心功能
- 多模态微调:
- 🖼️ 图像+文本:支持本地CSV数据的图像描述和视觉问答(VQA)。
- 🎙️ 音频+文本:唯一支持Apple Silicon原生音频处理的方案。
- 📝 纯文本:支持指令微调和文本补全。
- 云端数据流:可直接从Google Cloud Storage或BigQuery流式加载数据,避免本地存储限制。
- Apple Silicon优化:原生支持MPS(Metal Performance Shaders),无需CUDA设备。
技术对比
| 功能 | 本工具 | MLX-LM | Unsloth | axolotl |
|--------------------|--------|--------|---------|---------|
| 多模态支持 | ✅ | ❌/⚠️ | ❌/⚠️ | ❌/⚠️ |
| Apple Silicon兼容 | ✅ | ✅ | ❌ | ❌ |
| 云端数据流 | ✅ | ❌ | ❌ | ⚠️部分 |
适用场景
- 领域特定任务:如医疗听写、法律笔录、专业图像标注等。
- 多模态助手:扩展Gemma的文本推理能力至图像或音频领域。
- 隐私保护:全程在本地Mac上运行,数据无需外传。
安装与配置
- 环境要求:
- Python 3.10+(需原生arm64版本,非Rosetta转译)。
- macOS 12.3+,推荐16GB以上内存。
- 安装步骤:
bash # 创建虚拟环境并安装依赖 python3.12 -m venv .venv source .venv/bin/activate pip install torch torchaudio pip install -e . - Gemma 4支持:需单独安装适配依赖:
bash pip install -r requirements/requirements-gemma4.txt
使用流程
- 启动向导:
bash gemma-macos-tuner wizard - 数据准备:支持本地CSV或云端数据流(GCS/BigQuery)。
- 训练与导出:
bash # 微调模型 gemma-macos-tuner finetune <配置名> # 导出模型 gemma-macos-tuner export <输出目录>
高级配置
- 图像微调:设置
modality=image并指定image_token_budget(70~1120)。 - 音频微调:需配置
modality=audio及相关音频路径字段。 - 性能调优:通过环境变量控制MPS内存分配(如
PYTORCH_MPS_HIGH_WATERMARK_RATIO=0.8)。
架构设计
- 核心模块:
finetune.py:处理Gemma模型微调逻辑。export.py:导出为Hugging Face格式的模型。
- 配置管理:基于INI文件的层级化配置(模型、数据集、训练参数)。
常见问题
- 模型下载失败:需登录Hugging Face并接受Gemma许可协议。
- 内存不足:减小批次大小或启用梯度检查点。
许可与致谢
- 许可证:MIT开源协议。
- 致谢:感谢Google Gemma团队、Hugging Face及PyTorch社区的支持。
项目详情与完整文档请参考GitHub仓库。
评论总结
评论总结:
- 期待尝试
- 多位用户表达对工具的期待和赞赏 "Nice! I've been wanting to try local audio fine-tuning" (评论2) "This is super cool, will definitely try it out!" (评论4)
- 硬件性能关注
- 用户关注内存需求对性能的影响 "the memory gets tight on longer audio, can only imagine what fine-tuning looks like" (评论3) "Does the 64gb vs 96gb make a meaningful difference" (评论3)
- 功能限制讨论
- 指出iOS应用功能受限的问题 "they hobbled it, not giving access to intents" (评论5) "you have to write custom plugins for web search" (评论5)
- 替代方案分享
- 用户分享其他可用工具 "ChatMCP works pretty well but only supports models via api" (评论5)