news 2026/9/10 4:36:29

Happy-LLM 教程导读:从零开始构建大模型的学习路线与实践指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Happy-LLM 教程导读:从零开始构建大模型的学习路线与实践指南

Happy-LLM 教程导读:从零开始构建大模型的学习路线与实践指南

【免费下载链接】happy-llm📚 从零开始构建大模型项目地址: https://gitcode.com/GitHub_Trending/ha/happy-llm

本篇文章是 Datawhale 开源项目 Happy-LLM(仓库路径docs/README.md对应的项目总入口文档)的技术导读。Happy-LLM 是一套系统性的 LLM 学习教程,旨在帮助读者从 NLP 基本研究方法出发,逐层剖析 LLM 的架构基础与训练过程,并结合主流代码框架亲手搭建、训练一个 LLM。读完本文,你将掌握该教程的整体章节结构、各章核心知识点与代码入口、按章节配置学习环境的方法,以及从原理到实战(预训练、SFT、高效微调、RAG、Agent)的完整学习路径。

项目定位与学习目标

Happy-LLM 是 Datawhale 推出的开源免费大模型学习教程,官方标语为"📚 从零开始构建大模型",其愿景是帮助读者"深入理解 LLM 核心原理,动手实现你的第一个大模型"。

项目在 前言 中阐明了它的缘起:很多开发者在学习过 Datawhale 的 self-llm(开源大模型食用指南)之后,希望进一步深入理解大语言模型的原理和训练过程,因此团队决定推出这一本"结合 LLM 原理及实战的教程",从 NLP 的基本研究方法出发,根据 LLM 的思路及原理逐层深入,依次剖析 LLM 的架构基础和训练过程,并结合目前 LLM 领域最主流的代码框架,演练如何亲手搭建、训练一个 LLM,"期以实现授之以鱼,更授之以渔"。

你将收获什么

根据 docs/README.md 的项目介绍,完成本项目学习后你将获得以下能力:

  • 🔍深入理解Transformer 架构和注意力机制
  • 📚掌握预训练语言模型的基本原理
  • 🧠了解现有大模型的基本结构
  • 🏗️动手实现一个完整的 LLaMA2 模型
  • ⚙️掌握训练从预训练到微调的全流程
  • 🚀实战应用RAG、Agent 等前沿技术

适合的读者

项目定位适合大学生、研究人员和 LLM 爱好者。在开始学习之前,建议具备一定的 Python 编程经验,并最好具备深度学习的相关知识,了解 NLP 领域的相关概念和术语,以便更轻松地学习本项目(详见 docs/README.md 的"如何学习"一节)。

章节导航与全书脉络

教程采用"基础知识 + 实战应用"的两段式结构,共七个章节。下表完整继承自 docs/README.md 的内容导航:

章节关键内容状态
学习与环境准备分章依赖、硬件建议与实践入口
前言本项目的缘起、背景及读者建议
第一章 NLP 基础概念什么是 NLP、发展历程、任务分类、文本表示演进
第二章 Transformer 架构注意力机制、Encoder-Decoder、手把手搭建 Transformer
第三章 预训练语言模型Encoder-only、Encoder-Decoder、Decoder-Only 模型对比
第四章 大语言模型LLM 定义、训练策略、涌现能力分析
第五章 动手搭建大模型实现 LLaMA2、训练 Tokenizer、预训练小型 LLM
第六章 大模型训练实践预训练、有监督微调、LoRA/QLoRA 高效微调
第七章 大模型应用模型评测、RAG 检索增强、Agent 智能体

提示:第六章正文已覆盖 Pretrain、SFT 与 PEFT 等核心训练流程,建议结合 第六章实践说明 与 学习与环境准备 一起阅读;偏好对齐可以继续参考 第六章补充专题。

基础知识部分(第 1~4 章)

  • 第一章 NLP 基础概念:为非 NLP 领域研究者提供参考,介绍什么是 NLP、发展历程、任务分类以及文本表示的演进。
  • 第二章 Transformer 架构:LLM 最重要的理论基础。从注意力机制的三个核心变量 Query(查询值)、Key(键值)和 Value(真值)讲起,推导注意力计算公式,介绍 Encoder-Decoder 结构与手把手的 Transformer 代码实现。对应可运行代码位于 docs/chapter2/code/transformer.py,依赖见 docs/chapter2/code/requirements.txt。
  • 第三章 预训练语言模型:整体介绍经典的 PLM,对比 Encoder-Only(如 BERT)、Encoder-Decoder(如 T5)和 Decoder-Only(如 GPT)三种架构,并介绍当前主流 LLM 的架构和思想。
  • 第四章 大语言模型:正式进入 LLM 部分,详细介绍 LLM 的定义、特点(涌现能力、上下文学习、指令遵循、逐步推理等)、能力和整体训练过程。

实战应用部分(第 5~7 章)

  • 第五章 动手搭建大模型:基于 PyTorch 层亲手搭建一个完整的 LLaMA2 模型,并实现预训练、有监督微调的全流程。代码位于 docs/chapter5/code,核心文件包括k_model.pytrain_tokenizer.pyddp_pretrain.pyddp_sft_full.py等。
  • 第六章 大模型训练流程实践:引入目前业界主流的 LLM 训练框架 Transformers,结合 DeepSpeed、PEFT 等框架,实践使用 transformers 进行模型 Pretrain、SFT 全流程。代码位于 docs/chapter6/code。
  • 第七章 大模型应用:介绍基于 LLM 的各种应用,包括 LLM 的评测、检索增强生成(RAG)与智能体(Agent)的思想和简单实现。RAG 代码位于 docs/chapter7/RAG,Agent 代码位于 docs/chapter7/Agent。

你可以根据个人兴趣和需求,选择性地阅读相关章节。除此之外,仓库还提供了社区驱动的 Extra-Chapter 扩展内容目录,收录了学习笔记、实践案例与技术探索等专题(如思维预算、CDDRS 数据合成、Transformer 架构图解、VLM 拼接微调等),用于对主教程进行补充和扩展。

如何学习:推荐阅读路径

根据 docs/README.md 与 学习与环境准备 的建议,教程以"教程阅读为主、代码实践为辅",学习路径可拆分为两个阶段:

  1. 基础阶段(第 1~4 章):以原理学习为主,推荐先完整阅读正文,再选择性复现代码。
  2. 实战阶段(第 5~7 章):以实践为主,建议结合章节正文、代码目录和对应依赖一起学习。

如果你偏向理解底层实现,建议从第 5 章开始动手;如果你更关注工业界常用训练框架,建议先完成第 1 章到第 4 章的基础阅读,再进入第 6 章和第 7 章的实践部分。如果设备资源有限,优先复现第 5 章的手写实现,以及第 6 章中的数据处理与单卡调试流程。

同时,项目遵循"理论结合实际"的原则:建议多投入实战,复现本书提供的各种代码,积极参加 LLM 相关的项目与比赛。遇到问题时,可以在项目的 issue 区提问。

分章环境准备与依赖说明

本项目按章节拆分依赖,建议为不同章节创建独立的 Python 环境,以减少版本冲突。下表完整继承自 学习与环境准备:

章节主要内容依赖文件硬件建议
第二章 Transformer 架构Transformer 手写实现docs/chapter2/code/requirements.txtCPU 或单卡 GPU
第五章 动手搭建大模型手写 LLaMA2、Tokenizer、预训练与 SFTdocs/chapter5/code/requirements.txt单卡 GPU,部分步骤可先在 CPU 调试
第六章 大模型训练流程实践Transformers、DeepSpeed、PEFT 训练实践docs/chapter6/code/requirements.txt建议多卡 GPU,最小可从小样本和单卡调试开始
第七章 大模型应用 - RAG检索增强生成docs/chapter7/RAG/requirements.txtCPU 可体验,向量检索建议预留更多内存
第七章 大模型应用 - Agent智能体与工具调用docs/chapter7/Agent/requirements.txtCPU 可体验,联网能力按具体工具配置

通用准备步骤

建议使用Python 3.10 或 3.11,并为不同章节创建独立虚拟环境。以第六章为例,可以按如下方式准备:

python -m venv .venv source .venv/bin/activate pip install --upgrade pip pip install -r ./docs/chapter6/code/requirements.txt

如果你需要复现其他章节,请将最后一行中的依赖文件替换为该章节对应的requirements.txt

各章依赖速览

  • 第二章docs/chapter2/code/requirements.txt基于transformers==4.52.4torch==2.7.0等版本,CPU 即可运行 Transformer 手写实现。
  • 第五章docs/chapter5/code/requirements.txt包含transformers==4.44.0torch==2.4.0trl==0.11.3datasets==2.16.1等依赖,覆盖 LLaMA2 实现、Tokenizer 训练与预训练/SFT 全流程。
  • 第六章docs/chapter6/code/requirements.txt包含transformersdatasetstorchdeepspeedswanlab等核心依赖。
  • 第七章 RAGdocs/chapter7/RAG/requirements.txt包含openaipypdf2tiktoken等依赖。
  • 第七章 Agentdocs/chapter7/Agent/requirements.txt包含openaistreamlitwikipedia等依赖,web_demo.py基于 Streamlit 提供演示界面。

第六章实践快速开始

第六章正文聚焦 Pretrain、SFT 和高效微调(PEFT)三条主线,作为从手写模型实现过渡到工业界训练框架的桥梁章节。代码目录位于 docs/chapter6/code,推荐按以下顺序实践(完整流程见 第六章实践说明):

  1. 先阅读 第六章实践说明,明确模型、数据和脚本入口。
  2. 使用docs/chapter6/code/download_model.py下载基座模型(默认通过 HF 镜像下载Qwen/Qwen2.5-1.5B)。
  3. 使用docs/chapter6/code/download_dataset.py下载或准备训练数据(预训练数据集与 SFT 数据集 BelleGroup/train_3.5M_CN)。
  4. 先用小样本调试docs/chapter6/code/pretrain.pydocs/chapter6/code/finetune.py
  5. 最后再结合docs/chapter6/code/pretrain.shdocs/chapter6/code/finetune.sh进行完整训练。

需要注意的是,脚本中的autodl-tmp路径、显卡编号和 DeepSpeed 参数都是示例配置,正式运行前请根据本地环境自行调整。

DeepSpeed 启动脚本示例

预训练启动脚本docs/chapter6/code/pretrain.sh的完整内容如下:

CUDA_VISIBLE_DEVICES=0,1 deepspeed pretrain.py \ --config_name autodl-tmp/qwen-1.5b \ --tokenizer_name autodl-tmp/qwen-1.5b \ --train_files autodl-tmp/dataset/pretrain_data/mobvoi_seq_monkey_general_open_corpus_small.jsonl \ --per_device_train_batch_size 16 \ --gradient_accumulation_steps 4 \ --do_train \ --output_dir autodl-tmp/output/pretrain \ --evaluation_strategy no \ --learning_rate 1e-4 \ --num_train_epochs 1 \ --warmup_steps 200 \ --logging_dir autodl-tmp/output/pretrain/logs \ --logging_strategy steps \ --logging_steps 5 \ --save_strategy steps \ --save_steps 100 \ --preprocessing_num_workers 10 \ --save_total_limit 1 \ --seed 12 \ --block_size 2048 \ --bf16 \ --gradient_checkpointing \ --deepspeed ./ds_config_zero2.json \ --report_to swanlab # --resume_from_checkpoint ${output_model}/checkpoint-20400 \

有监督微调脚本docs/chapter6/code/finetune.sh结构与之类似,关键区别在于:

  • 使用--model_name_or_path autodl-tmp/qwen-1.5b加载预训练权重,而非从头初始化配置;
  • 训练数据替换为 SFT 数据BelleGroup/train_3.5M_CN.json
  • 训练轮数--num_train_epochs 3,输出目录为autodl-tmp/output/sft

DeepSpeed 配置文件要点

docs/chapter6/code/ds_config_zero2.json使用ZeRO Stage 2优化策略,核心配置项包括:

  • bf16.enabled: "auto"fp16.enabled: "auto":混合精度开关交由训练脚本自动判定;
  • optimizer使用 AdamW,lrbetasepsweight_decay均设为"auto",与训练脚本参数联动;
  • scheduler使用 WarmupLR,warmup 相关参数同样为"auto"
  • zero_optimization.stage: 2,并开启overlap_commreduce_scattercontiguous_gradients等通信优化;
  • gradient_accumulation_stepsgradient_clippingtrain_batch_sizetrain_micro_batch_size_per_gpu均设为"auto"

第六章实践建议

  • 先调通路径,再扩大规模:脚本中的autodl-tmp、显卡编号、batch size 和输出目录都属于示例配置,建议先把模型路径、数据路径和输出路径替换为本地实际路径,再使用小样本验证流程是否跑通。
  • 先看懂数据,再启动训练:无论是 Pretrain 还是 SFT,数据格式都直接决定了训练效果。建议先阅读正文中的数据处理部分,并在运行前打印 1 到 2 条样本进行检查。
  • 将偏好对齐作为进阶主题:第六章正文已覆盖核心训练主线。若希望进一步理解 RLHF、DPO、KTO 与奖励模型,可以在完成正文后继续阅读 第六章补充专题。

各章核心内容速览

第二章:Transformer 架构

本章从注意力机制的三个核心变量Query(查询值)、Key(键值)和Value(真值)出发,通过"字典查找"的案例逐步推导注意力计算公式:先用点积计算 Query 与各 Key 的相似度,再经 Softmax 转化为权重,最终对 Value 加权求和。同时剖析 RNN/LSTM 难以并行、难以捕捉长距离关系的缺陷,引出完全由注意力机制构成的 Transformer。配套代码 docs/chapter2/code/transformer.py 提供了手把手实现。

第三章:预训练语言模型

本章以 Encoder-Only、Encoder-Decoder、Decoder-Only 的顺序介绍 Transformer 时代的三大主流架构:

  • Encoder-Only(BERT):堆叠 Transformer Encoder,采用掩码语言模型(MLM)预训练任务,通过prediction_heads分类头适配各类 NLU 任务,是"预训练+微调"范式的集大成者;
  • Encoder-Decoder(T5):同时保留 Encoder 与 Decoder 的预训练 Transformer 模型;
  • Decoder-Only(GPT):使用原有语言模型(LM)任务,通过不断增加模型参数和预训练语料,成为今日 LLM 的基座架构。

第四章:大语言模型

本章正式定义 LLM:相较传统语言模型参数量更多、在更大规模语料上进行预训练的语言模型,其核心区分特征是涌现能力(Emergent Abilities)。文中详细剖析了 LLM 的四大能力:

  • 涌现能力:同样的模型架构与预训练任务下,某些能力在小型模型中不明显、但在大型模型中特别突出;
  • 上下文学习(In-context Learning):无需额外训练或参数更新,通过自然语言指令或少量示例即可执行任务;
  • 指令遵循(Instruction Following):经过指令微调后,模型能理解并遵循未见过的指令;
  • 逐步推理(Step-by-Step Reasoning):通过思维链(Chain-of-Thought, CoT)推理策略解决多步骤复杂任务。

同时介绍了 LLM 的特点(多语言支持、长文本处理等)与"预训练(Pretraining)→监督微调(SFT)→强化学习与人类反馈(RLHF)"的三阶段训练过程。

第五章:动手搭建大模型

本章基于 PyTorch 手写实现完整的 LLaMA2 模型。核心内容包括:

  • 定义ModelConfig超参数类(继承transformersPretrainedConfig),涵盖dimn_layersn_headsn_kv_headsvocab_sizemax_seq_lenflash_attn等配置;
  • 实现RMSNorm归一化层;
  • 训练 Tokenizer;
  • 实现预训练与有监督微调的全流程。

对应代码位于 docs/chapter5/code,核心文件包括模型定义 k_model.py、Tokenizer 训练脚本 train_tokenizer.py、预训练脚本 ddp_pretrain.py、SFT 脚本 ddp_sft_full.py 以及数据整理脚本 deal_dataset.py 和模型导出脚本 export_model.py。

第七章:大模型应用

本章覆盖三大应用主题:

  • LLM 评测:介绍 MMLU、GSM8K、MATH、ARC Challenge、HellaSwag、GPQA、InfiniteBench、MGSM 等主流评测数据集,以及 Open LLM Leaderboard、LMSYS Chatbot Arena、OpenCompass 等评测榜单,并延伸介绍金融、安全、通识、法律、医疗等垂直领域榜单;
  • RAG 检索增强生成:讲解大模型"幻觉"、知识时效性、领域专业性等问题,介绍 RAG 在生成前先从外部文档库检索相关信息并融入生成过程的原理。配套代码位于 docs/chapter7/RAG,包含Embeddings.pyVectorBase.pyLLM.py等模块;
  • Agent 智能体:介绍基于 LLM 的智能体与工具调用思想及简单实现。配套代码位于 docs/chapter7/Agent,核心实现见src/core.pysrc/tools.pysrc/utils.py,并提供命令行 demo.py 与基于 Streamlit 的 web_demo.py。

模型权重与 PDF 资源

第五章配套模型

仓库提供了第五章训练出的 215M 参数小型模型,可直接下载体验:

模型名称说明
Happy-LLM-Chapter5-Base-215M第五章预训练基座模型
Happy-LLM-Chapter5-SFT-215M第五章有监督微调模型

以上模型托管于 ModelScope,可在 ModelScope 平台搜索对应模型名下载;另有对应的创空间在线体验地址(详见 docs/README.md 的"模型下载"一节)。

PDF 版本

Happy-LLM PDF 教程完全开源免费,可在项目的 Releases 页面(tag 为PDF)或 Datawhale 学习平台获取。为防营销号加水印后贩卖,PDF 文件中预先添加了不影响阅读的 Datawhale 开源标志水印。

常见问题(FAQ)

为什么不提供统一的根目录依赖?

本项目覆盖从原理实现到训练框架、再到 RAG 与 Agent 应用的完整链路,不同章节的依赖差异较大。按章节拆分依赖,能够减少版本冲突,也更符合教程式学习场景(详见 学习与环境准备)。

没有多卡 GPU 是否还能学习第六章?

可以。建议先阅读正文理解训练流程,再使用小样本、较小 batch size 或单卡环境调试数据处理和训练脚本。即便无法完整复现多卡训练,也不影响掌握整体思路。

从哪一章开始动手最合适?

如果你偏向理解底层实现,建议从第 5 章开始;如果你更关注工业界常用训练框架,建议先完成第 1 章到第 4 章的基础阅读,再进入第 6 章和第 7 章的实践部分。

如何获取仓库?

可以通过git clone获取整个仓库(含全部章节文档与代码),然后在本地按上文"分章环境准备"一节配置虚拟环境后开始学习。

开源协议

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议(CC BY-NC-SA 4.0)进行许可。教程完全开源免费,欢迎任何形式的贡献——包括报告 Bug、提出功能建议、完善教程内容或提交代码优化 Pull Request(详见 docs/README.md 的"如何贡献"一节)。

【免费下载链接】happy-llm📚 从零开始构建大模型项目地址: https://gitcode.com/GitHub_Trending/ha/happy-llm

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 4:36:18

WavLM 全栈语音预训练模型解析与 Transformers 实战指南

WavLM 全栈语音预训练模型解析与 Transformers 实战指南 【免费下载链接】transformers 🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models, for both inference and …

作者头像 李华
网站建设 2026/9/10 4:35:56

SpringBoot+Spark打造汽车销售推荐系统:从协同过滤到冷启动实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/10 4:35:24

TradingAgents-CN 任务执行控制与数据同步功能增强实战解析

TradingAgents-CN 任务执行控制与数据同步功能增强实战解析 【免费下载链接】TradingAgents-CN 基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版 项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN 日期: 2025-11-07 作者: TradingAgen…

作者头像 李华
网站建设 2026/9/10 4:34:35

TT马达驱动入门:STM32电机控制的地基三问与硬件闭环实践

1. 为什么TT马达是STM32入门电机控制的“第一块砖”你拆开过玩具车、智能小车套件或者学生实训板吗?十有八九,里面躺着两颗黄铜色、带塑料齿轮箱、直径约13mm的小圆柱——这就是TT马达。它不是工业伺服,不是无刷航模电机,更不是48…

作者头像 李华
网站建设 2026/9/10 4:33:42

大型Java项目Gradle构建提速100倍:从18分钟到3分钟的实战优化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/10 4:32:47

基于LSTM的Matlab电力负荷预测实战:从门控原理到滚动预测

简介:Matlab实现基于长短期记忆神经网络的电力负荷预测模型,面向电气、计算机、数学等专业学生的课程设计、期末大作业或毕业设计场景,提供单变量时间序列预测的完整源码与数据。资源共5个文件,包含1个m源码文件、1个csv数据表以及…

作者头像 李华