ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Happy-LLM 开源教程:从零动手构建大模型的项目导读与完整学习路线

Happy-LLM 开源教程:从零动手构建大模型的项目导读与完整学习路线 Happy-LLM 开源教程从零动手构建大模型的项目导读与完整学习路线【免费下载链接】happy-llm 从零开始构建大模型项目地址: https://gitcode.com/GitHub_Trending/ha/happy-llmHappy-LLM 是 Datawhale 社区开源的系统性 LLM 学习教程定位为从零开始构建大模型先讲透 Transformer 与预训练语言模型的原理再带你用 PyTorch 手写 LLaMA2 结构、训练 Tokenizer 并完成预训练与有监督微调最后接入 Transformers 生态与 RAG、Agent 应用。读完本文你将掌握本仓库的章节地图、环境准备方式、每章核心代码入口以及一条可复现从手写模型到训练出 215M 参数小模型的完整实战路径。项目是什么定位与背景Happy-LLM 由 Datawhale 发起其出发点正如仓库 前言 所介绍很多学习者在读完 self-llm开源大模型食用指南后意犹未尽希望进一步理解 LLM 的原理与训练过程。于是本项目从 NLP 的基本研究方法出发按 LLM 的思路与原理逐层深入剖析 LLM 的架构基础和训练过程同时结合业界主流代码框架演练如何亲手搭建、训练一个 LLM——授之以鱼更授之以渔。从仓库根目录结构可以看到它的组织方式docs/七个章节的正文 Markdown 文档以及每章配套的code/代码目录docs/images/按章节组织的插图资源Extra-Chapter/社区贡献的 LLM 学习笔记/Blog 专区README.md与README_en.md中英文项目首页。你将收获什么根据仓库 README.md 的说明完成本教程学习后你将获得深入理解 Transformer 架构与注意力机制掌握预训练语言模型的基本原理了解主流大模型的基本结构动手实现一个完整的 LLaMA2 结构模型掌握从预训练到微调的全流程训练方法实战 RAG、Agent 等前沿应用。整个教程免费开源全部代码与文档均可在仓库内查看、复现。章节导航与内容地图README.md 给出了完整的章节导航表七个章节被划分为基础知识与实战应用两部分章节关键内容对应代码学习与环境准备分章依赖、硬件建议与实践入口—第一章 NLP 基础概念什么是 NLP、发展历程、任务分类、文本表示演进—第二章 Transformer 架构注意力机制、Encoder-Decoder、手把手搭建 Transformertransformer.py第三章 预训练语言模型Encoder-only、Encoder-Decoder、Decoder-Only 模型对比—第四章 大语言模型LLM 定义、训练策略、涌现能力分析—第五章 动手搭建大模型实现 LLaMA2、训练 Tokenizer、预训练小型 LLMchapter5/code第六章 大模型训练流程实践预训练、有监督微调、LoRA/QLoRA 高效微调chapter6/code第七章 大模型应用模型评测、RAG 检索增强、Agent 智能体chapter7/RAG、chapter7/Agent第 14 章基础知识篇第一章 NLP 基础概念为非 NLP 研究者提供背景参考介绍 NLP 的基本任务与发展历程以及文本表示的演进从符号、统计到神经网络。第二章 Transformer 架构LLM 最重要的理论基础讲解注意力机制与 Encoder-Decoder 结构并配套手写实现 transformer.py。第三章 预训练语言模型系统对比 Encoder-Only如 BERT、Encoder-Decoder如 T5与 Decoder-Only如 GPT三种架构并介绍主流 LLM 的架构思想。第四章 大语言模型正式进入 LLM介绍其特点、能力含涌现能力、上下文学习、指令理解与整体训练过程。第 57 章实战应用篇第五章 动手搭建大模型基于 PyTorch 从零实现 LLaMA2 结构模型训练自己的 Tokenizer并完成预训练与 SFT 全流程详见下文深度解析。第六章 大模型训练流程实践引入业界主流的 Transformers 生态结合 DeepSpeed 与 PEFT 高效实现训练详见下文。第七章 大模型应用补全 LLM 应用认知包括模型评测、RAG 检索增强生成与 Agent 智能体的思想与简单实现。第五章深度解析手写 LLaMA2 并训练 215M 小模型第五章是仓库中实践浓度最高的一章正文位于 第五章 动手搭建大模型完整可运行代码位于 docs/chapter5/code依赖见 requirements.txt含torch2.4.0、transformers4.44.0、tokenizers、swanlab等。5.1 模型结构实现从超参数到完整 Decoder-only 模型章节首先定义ModelConfig它继承自transformers的PretrainedConfig方便后续导出与transformers生态对接。关键超参数如下参数默认值含义dim768模型维度正式训练时设为 1024n_layers12Transformer 层数正式训练时设为 18n_heads16注意力头数n_kv_heads8键值头数GQA 分组数vocab_size6144词汇表大小与训练出的 Tokenizer 对齐hidden_dimNone隐藏层维度未指定时自动计算multiple_of64隐藏维度对齐的倍数norm_eps1e-5归一化层 epsmax_seq_len512最大序列长度dropout0.0dropout 概率flash_attnTrue是否使用 Flash Attention模型实现遵循 LLaMA2 的标准组件RMSNorm用均方根归一化替代 LayerNorm公式为x / sqrt(mean(x²) eps) * γγ 是可学习缩放参数归一化不改变张量形状旋转位置嵌入RoPEprecompute_freqs_cis按theta10000计算频率矩阵得到 cos/sin 实虚部apply_rotary_emb将 Q/K 按头维度切分后执行旋转为注意力注入相对位置信息分组查询注意力GQArepeat_kv将 KV 头重复扩展到与 Q 头一致本配置n_heads16、n_kv_heads8即n_rep2在保证效果的同时减少 KV 缓存与显存占用SwiGLU MLPw1经 SiLU 激活后与w3逐元素相乘再由w2投影回模型维度DecoderLayer 与 TransformerDecoder 层采用残差 Pre-Norm结构先归一化再进 Attention/FFNTransformer类将 18 层 Decoder 堆叠词嵌入与输出层共享权重并做了残差投影的缩放初始化std0.02/sqrt(2*n_layers)。模型源码可对照 docs/chapter5/code/k_model.py 阅读其中还额外提供了_beam_search束搜索、generate_super贪婪/采样/束搜索三策略等进阶实现。图LLaMA2 模型结构RMSNorm、RoPE、GQA、SwiGLU MLP、Decoder 堆叠来自 第五章正文。正文中给出了每个模块的单元测试片段例如对 RMSNorm 输入torch.randn(1, 50, 768)输出形状仍为[1, 50, 768]最终Transformer实例化后打印参数总量为 82594560约 82.6M对应训练配置的 215M 会随dim/n_layers变化。5.2 训练自己的 BPE Tokenizer正文 5.2 节先梳理了三种主流分词方案Word-based简单但无法处理 OOV 与无空格语言、Character-based灵活但序列过长、SubwordBPE / WordPiece / Unigram兼顾细粒度与语义。随后使用 Hugging Facetokenizers库训练 BPE Tokenizer完整脚本见 docs/chapter5/code/train_tokenizer.py核心流程为用read_texts_from_jsonl逐行安全读取 JSONL 训练语料提取text字段配置 NFKC 文本规范化 ByteLevel 预分词/解码器定义特殊 tokenunk、s、/s、|im_start|、|im_end|使用BpeTrainer(vocab_size6144, min_frequency2)训练并断言特殊 token ID 映射为0,1,2,3,4同时生成tokenizer_config.json与special_tokens_map.json其中chat_template与 Qwen2.5 保持一致|im_start|风格的多轮对话模板。训练好的 Tokenizer 文件就保存在 docs/chapter5/code/tokenizer_k含tokenizer.json、tokenizer_config.json、special_tokens_map.json可直接用AutoTokenizer.from_pretrained加载。5.3 数据构造与预训练 / SFT训练数据来自两个开源数据集出门问问序列猴子通用语料约 10B Token用于预训练与 Tokenizer 训练和 BelleGroup 350 万条中文对话数据用于 SFT。预处理脚本为 download_dataset.sh 与 deal_dataset.py。数据集类定义在 dataset.pyPretrainDataset预计算每行字节偏移量实现 O(1) 随机访问对文本加 BOS 后编码、截断、padding并构造X input_id[:-1]、Y input_id[1:]的因果语言建模样本对loss_mask中 padding 位置为 0不计算损失SFTDataset基于 chat_template 构造多轮对话文本用generate_loss_mask扫描|im_start|assistant\n片段仅对 AI 回复区间到|im_end|为止标记为 1 计算损失用户提问与系统提示不参与 loss。图预训练阶段 X/Y/loss_mask 构造示意max_length9时X[BOS,T1..T7]、Y[T1..T7,EOS]来自 第五章正文。训练脚本ddp_pretrain.py/ddp_sft_full.py支持以下关键命令行参数--data_path指向预处理后的 JSONL--gpus指定显卡编号参数默认值说明--out_dirbase_model_215M / sft_model_215M模型输出目录--epochs1训练轮数--batch_size64批次大小--learning_rate2e-4学习率--dtypebfloat16混合精度数据类型--accumulation_steps8梯度累积步数--grad_clip1.0梯度裁剪阈值--warmup_iters0学习率预热步数--log_interval100日志打印间隔--save_interval1000模型保存间隔--gpus0,1,...,7可见 GPU 编号CUDA_VISIBLE_DEVICES--use_swanlab关闭是否启用 SwanLab 实验跟踪训练循环实现了线性 warmup 余弦退火学习率调度min_lr lr/10、torch.cuda.amp混合精度GradScaler、梯度累积、梯度裁剪、DataParallel多卡以及 SwanLab 指标记录。5.4 生成文本与结果体验正文 5.3.6 节通过 model_sample.py 演示推理TextGenerator加载检查点如base_model_215M/pretrain_1024_18_6144.pth与tokenizer_k/通过模型自带的generate方法支持temperature、top_k、stop_id迭代生成文本。正文给出了实测生成效果SFT 模型能回答中国的首都是哪里→ 中国的首都是北京。11等于多少→ 11等于2。等对话预训练模型则能续写出关于北京大学、地质学科的连贯中文段落。模型参数量约 215.127M。正文同时说明了训练成本作者在 8 卡 4090 上预训练耗时约 46 小时SFT 阶段在 BelleGroup 350 万条指令上训练约 24 小时若显存有限可将 batch 调低实测 Pretrain batch4 约需 7G 显存。仓库首页还提供了两个 215M 模型Base 与 SFT 版本的下载入口供设备不足的学习者直接加载体验。第六章深度解析基于 Transformers 生态的训练实践第六章是从手写实现过渡到工业界训练框架的桥梁章节正文主线为Pretrain、SFT 与 PEFTLoRA/QLoRA三部分第六章实践说明 给出了推荐学习顺序读正文6.1 模型预训练理解 Transformers、Trainer 与 DeepSpeed 的基础用法读6.2 模型有监督微调对比 Pretrain 与 SFT 的数据构造与 loss 计算差异读6.3 高效微调掌握 LoRA/QLoRA 思路与peft接入方式进阶阅读 偏好对齐补充专题WIP建立从 SFT 到 Post-Training 的完整认识。配套代码位于 docs/chapter6/code主要入口包括download_model.py下载基座模型download_dataset.py下载或准备训练数据pretrain.py / finetune.py预训练与有监督微调脚本pretrain.sh / finetune.shDeepSpeed 启动示例ds_config_zero2.jsonDeepSpeed ZeRO-2 配置。实践要点来自 第六章实践说明脚本中的autodl-tmp路径、显卡编号、batch size 均为示例配置运行前务必替换为本地路径并先用小样本跑通流程再扩大规模无论是 Pretrain 还是 SFT都建议先打印 12 条样本确认数据格式正确。第七章RAG 检索增强与 Agent 智能体第七章正文位于 第七章 大模型应用覆盖模型评测Open LLM Leaderboard、LMSYS Chatbot Arena、OpenCompass 等主流榜单、RAG 与 AgentRAG 模块docs/chapter7/RAG包含 Embeddings.py文本向量化、VectorBase.py向量库检索、LLM.py生成与 demo.py端到端示例CPU 即可体验Agent 模块docs/chapter7/Agentsrc/下包含 core.py智能体核心循环、tools.py工具注册与 utils.py并提供 demo.py 与 web_demo.py 两种演示方式。Extra Chapter LLM Blog社区实践专区仓库在 Extra-Chapter 目录收录了社区成员的优秀实践笔记部分处于 WIP 状态仓库首页列出的内容包含大模型都这么厉害了微调0.6B的小模型有什么意义Transformer 整体模块设计解读文本数据处理详解Qwen3-VL——超小中文多模态模型的拼接微调之路S1: Thinking Budget with vLLMCDDRS: 使用细粒度语义信息指导增强的RAG检索方法大模型生成 Token 的方式有哪些如果你在学习过程中有独到见解可按 Extra Chapter PR 规范 提交 PR。学习与环境准备学习与环境准备 明确建议按章节分别准备依赖而不是在同一个环境安装全部依赖。分章环境与硬件建议如下章节依赖文件硬件建议第二章 Transformerchapter2/code/requirements.txtCPU 或单卡 GPU第五章 手写 LLaMA2chapter5/code/requirements.txt单卡 GPU部分步骤可先 CPU 调试第六章 训练实践chapter6/code/requirements.txt建议多卡 GPU最小可从小样本和单卡开始第七章 RAGchapter7/RAG/requirements.txtCPU 可体验向量检索建议预留内存第七章 Agentchapter7/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即可。没有多卡 GPU 也能学习第六章可先阅读正文理解训练流程再用小样本、较小 batch size 或单卡环境调试数据处理和训练脚本。模型与配套资源仓库 README 提供了本章节训练成果的资源入口资源说明Happy-LLM-Chapter5-Base-215M第五章预训练基座模型约 215M 参数Happy-LLM-Chapter5-SFT-215M第五章 SFT 微调模型支持多轮对话上述模型可在 ModelScope 平台下载并提供了创空间在线体验地址方便设备有限的学习者直接对话体验。此外仓库还发布了带 Datawhale 开源水印的 PDF 教程版本与配套教学讲义 PPT可在项目 Releases 页面获取PDF 完全开源免费。如何参与共建README 欢迎任何形式的贡献报告 Bug提交 Issue、提出功能建议、帮助改进教程内容内容完善、提交 Pull Request代码优化。项目同时被列入中国计算机学会CCF× Datawhale 的 AI 普惠课程提供免费算力报名通道。开源协议本项目采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议CC BY-NC-SA 4.0 进行许可学习与使用时请遵守相应的署名与共享要求。从手写 LLaMA2 到训练出属于自己的 215M 小模型再到基于 Transformers 生态的工业级训练和 RAG/Agent 应用Happy-LLM 用原理 实战双线并进的方式为 LLM 学习者提供了一条可完整复现的成长路径。建议按照第 14 章打基础 → 第 5 章手写实现 → 第 6 章框架实践 → 第 7 章应用落地的顺序阅读并在每个章节后动手复现配套代码将理论与实践真正结合起来。【免费下载链接】happy-llm 从零开始构建大模型项目地址: https://gitcode.com/GitHub_Trending/ha/happy-llm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表