桃子桃子快讯
返回首页
开源

个人开发者 200 美元训练 1B 模型:从零复盘

开发者分享从零训练 11 亿参数 LLM 的全过程,20B tokens 预训练加 LoRA 微调,总成本约 200 美…

2026.08.11 · 周二3 分钟阅读

一位开发者在 Reddit 社区 r/LocalLLaMA 上分享了其个人项目:从零训练一个 11 亿参数的小型语言模型,总成本约 200 美元。项目既是为了学习,也是为了补充简历。最终模型权重、训练代码、demo 网站均已开源。

项目概览

作者基于 Gemma3 架构做了若干调整后,在 fineweb-edu 数据集上预训练了一个 11 亿参数的模型,训练 token 量为 20B;之后使用 OpenHermes 数据集进行 LoRA 微调,得到对话版本。整体训练在 vast.ai 平台上完成,时间集中在 2 月至 3 月。

主要调整包括:

  • 上下文长度缩短至 4096,因此未使用滑动窗口注意力
  • 词表缩小到 32k,使用 sentencepiece 训练 tokenizer
  • 微调若干超参数以达到目标参数量

预训练阶段

作者先在 2B tokens 上跑了三个不同规模的实验(185M、500M、1.1B),确认架构可行后再做最终的全量训练。具体数据如下:

  • 185M 模型:使用 RTX 3090,训练 19 小时,最终验证困惑度 19.2
  • 500M 模型:使用 RTX 5090,训练 17 小时,最终验证困惑度 16.0
  • 1.1B 模型(2B tokens):使用 H100,训练 13 小时,最终验证困惑度 15.1
  • 1.1B 模型(20B tokens,全量预训练):使用 H100,训练 130 小时,最终验证困惑度 10.93

作者在 wandb 中每 30M tokens 记录一次固定 prompt 的生成样本。从展示的对比可以看出,模型在 30M tokens 时基本无法产出连贯文本,到 20B tokens 时已能写出结构合理的短文,例如以「The capital of France is」开头时正确输出 Paris。

LoRA 微调阶段

基于表现最好的 1B 模型,作者在 OpenHermes 上做 LoRA 微调,硬件改为 RTX 3060,耗时 52 小时,最终验证困惑度为 2.71(由于与预训练评估数据不同,不具备直接可比性)。从样例来看,微调后期模型输出明显更简洁,例如能直接回答「H2O」和给出可读的青蛙短诗。

其他尝试与小结

  • 为理解 Gemma3 架构,作者将其加入 llama.cpp 的 fork 中
  • 用 vibecoding 方式开发了一款 WearOS 应用,在手表上以 Q2_K GGUF 量化运行该模型,速度约 2 tok/s
  • 使用 lm-eval 跑了若干基准测试,结果显示整体弱于 Gemma3 1B
  • 在 GCP 上部署了一个 demo 网站,支持 CPU 推理与 logprobs 分析

作者坦言模型质量「并不算好」,与 nanochat 等项目相比性价比不高,后续计划尝试完整 SFT 与扩展数据集。但他也强调,整个过程让其深入理解了 LLM 的工作原理,也对求职面试有所帮助。对于想动手训练小模型的学习者,这是一份较为完整的参考记录。

信源