《大模型白盒子构建指南》:一个全手搓的Tiny-Universe。本项目是一个从原理出发、以“白盒”为导向、围绕大模型全链路的“手搓”大模型指南,旨在帮助有传统深度学习基础的读者从底层原理出发,“纯手搓”搭建一个清晰、可用的大模型系统,包括大模型本身、RAG 框架、Agent 系统及大模型评估体系。项目从基础原理出发,深入剖析每一个技术点并附以完整的代码实现,以细致讲解和代码注释帮助读者独立复现大模型核心部分,并在复现中实现对大模型的深入理解与掌握。
主题部分主要为对经典技术的从零实现,旨在带领学习者深度掌握经典工作的实现细节:手写图像生成模型 Tiny Diffusion;深入剖析大模型原理 Qwen Blog;逐步预训练一个手搓大模型 Tiny Llama3;如何评估你的大模型 Tiny Eval;纯手工搭建 RAG 框架 Tiny RAG;手搓一个最小的 Agent 系统 Tiny Agent;深入理解大模型基础 Tiny Transformer;手搓一个基本的 GraphRAG 系统 Tiny GraphRAG。
探索部分主要为新颖的学术作品/生产阶段的优秀作品进行从零复现,旨在带领学习者深度感知如何从会做->创新:使用细粒度语义元素指导增强的RAG检索方法 CDDRS (ADVEI25)。
项目背景:随着大模型生态成熟,基于大模型进行二次微调、应用开发的门槛不断降低,但深入理解框架之内的细节,实现独立于框架的开发、应用能力愈是关键。只有从核心原理出发,尽可能脱离框架,实现大模型系统的“纯手搓”,才能真正理解模型的核心能力、关键部分,也才能够对框架实现自由的修改应用。目前大部分教程目标在于指导开发者如何基于高度封装的 API、开源框架实现便捷、快速的开发和训练,有利于初学者入门,却忽视了掌握模型原理、框架内部细节的重要性。本项目旨在抛弃高度封装的工具包与 API,从底层(Pytorch 层)出发,“纯手搓”一个大模型系统,完成大模型的 RAG、Agent、Eval 任务,帮助具备一定的大模型基础的学习者进一步掌握大模型原理。
适合人群:掌握了大模型的基本应用,想要学习原理,但不知从何开始;好奇心旺盛、求知欲强的同学;对大模型的RAG、Agent、Eval任务感兴趣,并想要从原理层面了解;喜欢动手实践写代码,想要从零开始手写大模型的RAG、Agent、Eval任务;想要了解大模型的底层原理,提升自己的大模型技术水平。
项目特点:包含LLM全流程,从Model,到RAG,Agent,Eval,打造LLM 全栈教程;区别于大型的算法包,项目代码对初级开发者更简洁清晰,更“白盒子”;后续会持续迭代更新项目。
更新记录: 2025.8.12:发布TinyGraphRAG,从零上手GraphRAG。GraphRAG 将图结构与大语言模型相结合,在复杂关系推理、知识关联检索等任务中展现强大能力。本项目手工搭建一个最简化版本的 GraphRAG 系统,从原理公式与架构图出发,对应到具体的图构建、检索、推理与生成代码实现。 2024.12.25:TinyDiffusion,从零上手Diffusion。手工搭建一个最简化版本的DDPM模型,从论文中的公式出发,对应到具体的训练与采样过程代码实现。 2024.10.28:TinyLlama3,从零上手Llama预训练到加载模型推理,2G显存即可完成。仅使用Numpy和Pytorch即可实现一个简单的大语言模型训练,显存使用2G左右,训练模型时间仅需要几个小时即可完成。 2024.6.26:增加选修内容——高考数学评测,使TinyEval接入高考题目评测。 2024.5.20:增加选修内容——Tiny Transformer,纯手工搭建 Transformer 模型。基于《Attention is All You Need》,在 pytorch 层手工搭建了一个完整、可复现、可运行的 Transformer 模型。 2024.5.1:发布 Tiny-Universe V1 版本。
各主题简介: Qwen-Blog:以Qwen2为例,带大家深入LLM模型结构内部,以输入tensor为第一视角,经过Model的各个操作块,点亮LLM的“黑匣子”。项目内添加了嵌入模型内部的GQA,ROPE与Attention Mask等机制的细致讲解。 TinyRAG:RAG通过在语言模型生成答案之前,先从广泛的文档数据库中检索相关信息,然后利用这些信息来引导生成过程,提升内容的准确性和相关性,有效缓解幻觉问题。本项目抛弃高度封装的RAG框架,手搓一个从零开始的RAG项目。镜像地址:https://www.codewithgpu.com/i/datawhalechina/tiny-universe/tiny-universe-tiny-rag TinyAgent:基于React的方式,手动制作了一个最小的Agent结构,通过一步一步手写Agent,让读者对Agent的构成和运作更加了解。暑假的时候会尝试将React结构修改为SOP结构。 TinyEval:搭建了一个完善的评测体系介绍,让大家能够学会根据自身的任务量身定做合适的评测指标,并使用该指标进行客观评测,为模型能力提供准确可量化的数据支持。
项目成员:肖鸿儒-项目负责人 (Datawhale成员-同济大学);宋志学-项目负责人 (Datawhale成员-中国矿业大学(北京));邹雨衡-项目负责人 (Datawhale成员-对外经济贸易大学);刘啸宇-核心贡献者 (华中科技大学);潘笃驿-核心贡献者 (香港科技大学(广州))。特别感谢 @Sm1les 对本项目的帮助与支持。
许可协议:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。