在 Mac 上本地训练诗词 AI:一个开源的 MLX 小模型训练包
在 Mac 上本地训练诗词 AI:一个开源的 MLX 小模型训练包
你是否想过,让 AI 学会写一首合格的五言绝句,并不一定需要昂贵的 GPU 集群?
最近我开源了一个项目 poetry_dataset,它展示了如何仅凭一台 M 系列芯片的 Mac(比如 Mac Air 16GB),就完成一个 1.5B 参数诗词模型的 LoRA 微调。整个过程不需要 NVIDIA 显卡,也不需要租任何云服务器。
这个项目解决了什么问题?
目前大多数大模型训练教程都指向 Linux + NVIDIA GPU 的方案——你需要 A100、H100,或者按小时租用云端 GPU。但对于普通开发者来说,成本门槛太高了。
而苹果自研的 MLX 框架 改变了这一切。MLX 是苹果专门为 Apple Silicon 芯片设计的机器学习框架,它能高效利用统一内存架构,让大模型推理和微调在本地变得可行。
这个项目就是基于 MLX 框架,面向中文诗词场景的一个完整训练包。
数据来源:从 chinese-poetry 到指令微调数据集
诗词数据的采集,源自著名的开源项目 chinese-poetry,它收录了从先秦到清朝的超过 50 万首中文诗歌。
本项目的 build_dataset.py 脚本做了以下事情:
- 精选数据源:从 chinese-poetry 中提取《唐诗三百首》和《宋词三百首》作为高质量核心集,再辅以部分扩展数据(前 15 个分片的唐诗 + 前 10 个分片的宋词)
- 繁体转简体:使用 OpenCC 将所有文本统一转换为简体中文
- 体裁自动分类:根据句数和每句字数,自动识别五言绝句、七言绝句、五言律诗、七言律诗
- 构造 Alpaca 格式指令集:将诗歌数据转化为 instruction/input/output 格式的指令微调数据
最终生成的训练数据包含 19,594 条样本(训练集)和 1,032 条样本(验证集),格式为 MLX-LM 所需的聊天对话格式。
核心文件一览
| 文件 | 作用 |
|---|---|
build_dataset.py | 从 chinese-poetry 原始数据构造指令微调数据集 |
convert_to_mlx.py | 将 Alpaca 格式数据转为 MLX-LM 聊天格式 JSONL |
pingze_check.py | 简易格律校验工具,检查诗的字數/句数/押韵/平仄 |
mlx_data/train.jsonl | 训练集(19,594 条) |
mlx_data/valid.jsonl | 验证集(1,032 条) |
cloud_gpu_alternative/ | 云端 GPU 训练备选方案(LLaMA-Factory + LoRA) |
训练流程:三步上手
第一步:安装环境
conda create -n poetry python=3.10 -y
conda activate poetry
pip install mlx-lmmlx-lm 是苹果官方维护的库,专门在 Apple Silicon 上跑大模型处理和微调。
第二步:转换数据
python convert_to_mlx.py这会把 poetry_train.json 和 poetry_val.json 转换成 MLX-LM 要求的 JSONL 聊天格式,输出到 mlx_data/ 目录下。
第三步:启动 LoRA 微调
mlx_lm.lora \
--model ./qwen2.5-1.5b-mlx \
--train \
--data ./mlx_data \
--iters 1000 \
--batch-size 2 \
--num-layers 8 \
--learning-rate 2e-4 \
--adapter-path ./adapters \
--save-every 200 \
--steps-per-eval 100在 16GB Mac Air 上,这个配置大约 20 分钟就能跑完 1000 步训练。
训练完成后:合并权重并推理
# 合并 LoRA 适配器到模型权重
mlx_lm.fuse \
--model ./qwen2.5-1.5b-mlx \
--adapter-path ./adapters \
--save-path ./qwen2.5-1.5b-poetry
# 生成诗词
mlx_lm.generate --model ./qwen2.5-1.5b-poetry --prompt "请写一首七言绝句,主题是春天" --max-tokens 200格律校验:让 AI 写的诗更"像诗"
光会写还不够,还得写得合乎格律。项目附带了一个 pingze_check.py 格律校验工具:
python pingze_check.py "床前明月光,疑是地上霜。举头望明月,低头思故乡。"它会检查:
- ✅ 句数和每句字数是否符合绝句/律诗格式
- ✅ 偶数句尾字押韵情况(基于现代拼音韵母)
- ✅ 逐句平仄分析(基于现代普通话声调粗略估算)
注意:平仄判断使用的是现代普通话声调(1、2 声为平,3、4 声为仄),与古代平水韵存在差异(如古入声字在普通话中可能变为平声)。这是一个快速参考工具,如需严格合规校验,建议后续接入完整的平水韵字表。
为什么值得 Star?
- 零成本入门:不需要买 GPU,不需要租云,一台 Mac 就能跑
- 数据质量高:精选唐诗三百首 + 宋词三百首为核心数据
- 代码透明:从数据构造到训练推理,全流程开源
- 实用工具:附带格律校验脚本,不只是训练,还关注生成质量
- 云端备选方案:
cloud_gpu_alternative/目录提供了 LLaMA-Factory 的云端 GPU 训练配置
延伸:试试 shi-ci.cn
如果你不想自己训练,也可以直接在 shi-ci.cn 体验诗词 AI。这是一个专注于中国古典诗词的在线平台,提供诗词生成、赏析、格律校验等功能。
这个项目背后的训练数据和模型思路,正是来自上面的 poetry_dataset 开源项目。
结语
在消费级硬件上训练专用 AI 模型的时代已经来了。无论是想学习 MLX 框架、LoRA 微调,还是单纯想让 AI 帮你写一首好诗,这个项目都值得你 Star 一下。
👉 项目地址:github.com/daichangya/poetry_dataset
欢迎 Star、Fork、提 Issue,一起让 AI 学会写诗!
版权声明:本文为原创文章,版权归 戴老师的博客 所有,转载请联系博主获得授权。
本文地址:https://tushu.info/archives/mac-mlx-poetry-ai-training.html
如果对本文有什么问题或疑问都可以在评论区留言,我看到后会尽量解答。