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 等核心训练流程建议结合 第六章实践说明 与 学习与环境准备 一起阅读偏好对齐可以继续参考 第六章补充专题。基础知识部分第 14 章第一章 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 的定义、特点涌现能力、上下文学习、指令遵循、逐步推理等、能力和整体训练过程。实战应用部分第 57 章第五章 动手搭建大模型基于 PyTorch 层亲手搭建一个完整的 LLaMA2 模型并实现预训练、有监督微调的全流程。代码位于 docs/chapter5/code核心文件包括k_model.py、train_tokenizer.py、ddp_pretrain.py、ddp_sft_full.py等。第六章 大模型训练流程实践引入目前业界主流的 LLM 训练框架 Transformers结合 DeepSpeed、PEFT 等框架实践使用 transformers 进行模型 Pretrain、SFT 全流程。代码位于 docs/chapter6/code。第七章 大模型应用介绍基于 LLM 的各种应用包括 LLM 的评测、检索增强生成RAG与智能体Agent的思想和简单实现。RAG 代码位于 docs/chapter7/RAGAgent 代码位于 docs/chapter7/Agent。你可以根据个人兴趣和需求选择性地阅读相关章节。除此之外仓库还提供了社区驱动的 Extra-Chapter 扩展内容目录收录了学习笔记、实践案例与技术探索等专题如思维预算、CDDRS 数据合成、Transformer 架构图解、VLM 拼接微调等用于对主教程进行补充和扩展。如何学习推荐阅读路径根据 docs/README.md 与 学习与环境准备 的建议教程以教程阅读为主、代码实践为辅学习路径可拆分为两个阶段基础阶段第 14 章以原理学习为主推荐先完整阅读正文再选择性复现代码。实战阶段第 57 章以实践为主建议结合章节正文、代码目录和对应依赖一起学习。如果你偏向理解底层实现建议从第 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基于transformers4.52.4、torch2.7.0等版本CPU 即可运行 Transformer 手写实现。第五章docs/chapter5/code/requirements.txt包含transformers4.44.0、torch2.4.0、trl0.11.3、datasets2.16.1等依赖覆盖 LLaMA2 实现、Tokenizer 训练与预训练/SFT 全流程。第六章docs/chapter6/code/requirements.txt包含transformers、datasets、torch、deepspeed、swanlab等核心依赖。第七章 RAGdocs/chapter7/RAG/requirements.txt包含openai、pypdf2、tiktoken等依赖。第七章 Agentdocs/chapter7/Agent/requirements.txt包含openai、streamlit、wikipedia等依赖web_demo.py基于 Streamlit 提供演示界面。第六章实践快速开始第六章正文聚焦 Pretrain、SFT 和高效微调PEFT三条主线作为从手写模型实现过渡到工业界训练框架的桥梁章节。代码目录位于 docs/chapter6/code推荐按以下顺序实践完整流程见 第六章实践说明先阅读 第六章实践说明明确模型、数据和脚本入口。使用docs/chapter6/code/download_model.py下载基座模型默认通过 HF 镜像下载Qwen/Qwen2.5-1.5B。使用docs/chapter6/code/download_dataset.py下载或准备训练数据预训练数据集与 SFT 数据集 BelleGroup/train_3.5M_CN。先用小样本调试docs/chapter6/code/pretrain.py或docs/chapter6/code/finetune.py。最后再结合docs/chapter6/code/pretrain.sh与docs/chapter6/code/finetune.sh进行完整训练。需要注意的是脚本中的autodl-tmp路径、显卡编号和 DeepSpeed 参数都是示例配置正式运行前请根据本地环境自行调整。DeepSpeed 启动脚本示例预训练启动脚本docs/chapter6/code/pretrain.sh的完整内容如下CUDA_VISIBLE_DEVICES0,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使用 AdamWlr、betas、eps、weight_decay均设为auto与训练脚本参数联动scheduler使用 WarmupLRwarmup 相关参数同样为autozero_optimization.stage: 2并开启overlap_comm、reduce_scatter、contiguous_gradients等通信优化gradient_accumulation_steps、gradient_clipping、train_batch_size、train_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-OnlyBERT堆叠 Transformer Encoder采用掩码语言模型MLM预训练任务通过prediction_heads分类头适配各类 NLU 任务是预训练微调范式的集大成者Encoder-DecoderT5同时保留 Encoder 与 Decoder 的预训练 Transformer 模型Decoder-OnlyGPT使用原有语言模型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超参数类继承transformers的PretrainedConfig涵盖dim、n_layers、n_heads、n_kv_heads、vocab_size、max_seq_len、flash_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.py、VectorBase.py、LLM.py等模块Agent 智能体介绍基于 LLM 的智能体与工具调用思想及简单实现。配套代码位于 docs/chapter7/Agent核心实现见src/core.py、src/tools.py、src/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),仅供参考