[分享创造] 在 Macbook 上自己尝试了一下 0.1B 的大模型训练

近年来 AI 是卷得越来越厉害了,作为一个普通开发者经常用 AI 辅助编程,但是没有接触过怎么去创造 AI ,这个五一假期,在家研究了一下大模型是怎么训练的…… 折腾下来发现一个挺尴尬的事实:网上教程要么是「调用 OpenAI API 」,要么是「分布式集群跑 Llama-3-70B 」, 『在自己...
[分享创造] 在 Macbook 上自己尝试了一下 0.1B 的大模型训练
[分享创造] 在 Macbook 上自己尝试了一下 0.1B 的大模型训练

近年来 AI 是卷得越来越厉害了,作为一个普通开发者经常用 AI 辅助编程,但是没有接触过怎么去创造 AI ,这个五一假期,在家研究了一下大模型是怎么训练的……

折腾下来发现一个挺尴尬的事实:网上教程要么是「调用 OpenAI API 」,要么是「分布式集群跑 Llama-3-70B 」,『在自己机器上从零训练一个能用的小模型』反而很少有人讲透

干脆自己摸一遍,顺手做成工具 Tiny LLM Studio,目标就一个:在 MacBook 上把一个 0.1B 中文模型从 tokenizer 训到 DPO ,全流程跑通。

技术栈没整花哨的:

  • 类 LLaMA 架构,约 96M 参数:RoPE + RMSNorm + SwiGLU + GQA
  • 32k byte-level BPE tokenizer
  • PyTorch ≥ 2.5 + MPS 后端,bf16 训练
  • 数据采集 / 清洗 / MinHash 去重 / 配置管理全做进 FastAPI + React Web UI 里
  • 预训练 → SFT → DPO → 流式 chat → 困惑度评估,一站式

实测在 M4 Pro / 48GB 上吞吐 8k–15k tokens/s:0.5B tokens 大约 12 小时验证 loss 收敛。--resume 支持断点续训,吃完饭回来无缝接着练。

自己尝试了一下训练,用 1G 的数据量,训练了 1 晚上,然后尝试用 ollama 直接调用大模型,结果吐一堆乱码

后面继续用这 1G 数据再训练 1 晚上,然后进行 sft 微调训练,效果好一些了,至少吐出来的是大段中文

继续用这 1G 数据再训练了第 3 个晚上,然后 sft 微调,吐文字不再大段乱码,而是小段中文短语

用更大量的数据,训练足够多的时间,模型的响应效果会更好。不过这样在我 Macbook 上会需要更多时间。

写到一半我又加了点工程化的私货:

  • 写了一个的手机 app,下楼买咖啡时也能远程看训练曲线、改超参
  • 集成了 ngrok tunnel ,启动时终端直接吐一个二维码,手机扫一下就连上,在公网也能访问

整套放上 GitHub 了,MIT 协议。如果你也想从「用 AI 」过渡到「亲手了解 AI 是怎么炼出来的」,又不想为了学习先去租一张 8×H100 ,欢迎来一起折腾。

GitHub 地址 https://github.com/duguying/100M。 项目地址 https://tinyllm.duguying.net

来源: v2ex查看原文