Zing 论坛

正文

从零开始构建大语言模型:一个完整的手写LLM训练流程

本文介绍了一个在Mac上从零开始构建大语言模型的完整项目,涵盖从数据准备到Ollama部署的10个阶段,展示了不依赖HuggingFace等框架的纯PyTorch实现。

大语言模型LLMPyTorch从零构建BPE分词器Transformer监督微调Ollama部署机器学习深度学习
发布时间 2026/06/09 02:13最近活动 2026/06/09 02:21预计阅读 2 分钟
从零开始构建大语言模型:一个完整的手写LLM训练流程
1

章节 01

从零构建LLM全流程项目导读:纯PyTorch实现,Mac可运行

本文介绍由开发者sppandita85创建的开源项目"story-llm-finetuned-mac",该项目在Mac上从零开始构建大语言模型,涵盖从数据准备到Ollama部署的10个阶段,采用纯PyTorch实现,不依赖HuggingFace等框架,支持CPU运行。项目虽仅用50个道德故事(约6000token)训练(存在记忆和过拟合),但流程与工业级LLM一致,适合学习者理解内部机制。

2

章节 02

项目背景与设计理念

LLM训练常被高级框架封装为"黑盒",难以满足开发者深入学习需求。本项目以"架构忠实"为核心设计理念,虽数据规模小,但完整再现工业级LLM训练全流程,让学习者在个人Mac设备上体验LLM生命周期。项目纯PyTorch实现,无依赖现成框架,支持CPU运行,降低入门门槛。

3

章节 03

数据处理与模型构建(阶段1-4)

项目将训练流程分为10阶段:

  • 阶段1(数据准备):清理原始markdown,插入特殊token,划分训练/验证集;
  • 阶段2(分词器训练):从零训练自定义BPE分词器,处理未登录词;
  • 阶段3(数据编码):将文本编码为token ID,存储为二进制文件,实现滑动窗口DataLoader;
  • 阶段4(模型构建):PyTorch从零实现GPT架构Transformer,含多头注意力、前馈网络等组件,验证模型正确性。
4

章节 04

预训练与监督微调(阶段5-8)

  • 阶段5(预训练):用AdamW优化器,配合warmup预热、余弦退火学习率,实现梯度裁剪和检查点保存;
  • 阶段6(文本生成):从预训练模型采样生成文本,评估预训练效果;
  • 阶段7(问答数据集构建):从预训练语料派生指令问答对,转换为对话训练格式;
  • 阶段8(监督微调):用问答数据集训练,采用掩码损失策略(仅答案部分计算损失),让模型学会遵循指令。
5

章节 05

交互与部署(阶段9-10)

  • 阶段9(对话交互):提供命令行界面,用户可与微调后模型交互式对话;
  • 阶段10(Ollama部署):将模型转换为GGUF格式(量化降低内存占用),部署到Ollama平台,方便用户使用。
6

章节 06

技术亮点与可扩展性

项目代码组织清晰,共享代码存于common目录(含配置、分词器、模型等),模块化设计易扩展。扩展至真实规模训练只需修改common/config.py超参数:增大词汇表、层数、注意力头数、嵌入维度,增加训练轮数,指向更大语料库,切换设备到GPU。

7

章节 07

学习价值与实践意义

本项目为LLM学习者提供绝佳入门路径,通过运行各阶段可建立全流程认知(数据处理、分词器、Transformer、优化策略、部署)。作者提供Model Card记录模型信息,并将模型发布到Ollama平台(ollama.com/sppandita85/story-llm),方便直接体验。

8

章节 08

项目总结

"story-llm-finetuned-mac"项目规模小巧但流程完整,纯PyTorch实现让学习者理解每个技术环节本质。对于希望从原理层面掌握LLM技术的开发者,是值得深入研究的优秀开源项目。