《大模型白盒子构建指南》毕业,仅需2G显存,手搓关于LLM的一切!

学术   2024-11-24 22:01   浙江  

 Datawhale开源 

开源贡献:Datawhale 团队

前 言

《大模型白盒子构建指南》是一个从原理出发、以“白盒”为导向、围绕大模型全链路的“手搓”大模型指南,旨在帮助有传统深度学习基础的读者从底层原理出发,“纯手搓”搭建一个清晰、可用的大模型系统,包括大模型架构、大模型预训练、RAG 框架、Agent 系统及大模型评估体系等。本项目将从基础原理出发,深入剖析每一个技术点并附以完整的从零代码实现,以细致讲解和代码注释帮助读者独立复现大模型核心部分,并在复现中实现对大模型的深入理解与掌握。
本项目旨在为广大学习者搭建一个清晰的、可用的、可复现的大模型世界,帮助每一位有兴趣的学习者纯手工独立搭建自己的 Tiny LLM Universe
项目的主要内容包括:
  • 深入剖析大模型原理——Qwen Blog
  • 逐步预训练一个手搓大模型——Tiny Llama3
  • 如何评估你的大模型——Tiny Eval
  • 纯手工搭建 RAG 框架——Tiny RAG
  • 搓一个最小的 Agent 系统——Tiny Agent
  • 深入理解大模型基础——Tiny Transformer

开源地址:
https://github.com/datawhalechina/tiny-universe/tree/main

图1.项目主页

开源初心

什么是大模型?

大模型(LLM)狭义上指基于深度学习算法进行训练的自然语言处理(NLP)模型,主要应用于自然语言理解和生成等领域,广义上还包括机器视觉(CV)大模型、多模态大模型和科学计算大模型等。

随着百模大战的经久不衰,开源或是闭源的大模型正不断刷新着模型能力上限,逼近 AGI 的宏伟未来。随着大模型能力的不断增强,基于大模型进行二次微调、应用开发的门槛也不断降低,大模型正在不断深入各行各业,为生产生活赋予智能力量。
然而, 大部分教程目标在于指导开发者如何基于高度封装的 API, 开源框架实现便捷、快速的开发和训练,有利于初学者入门,却忽视了掌握模型原理、框架内部细节的重要性。不管是大模型本身,还是基于大模型的赋能系统 RAG, Agent,又或者是开发应用大模型的必备组件评估体系,都有丰富的基于工具包的使用教程,使很多学习者“知其然而不知其所以然”,只能机械地使用工具包而无法从原理出发进行自由的魔改。本项目旨在抛弃高度封装的工具包与 API,从底层(Pytorch 层)出发,“纯手搓”一个大模型系统,完成大模型的 RAG 、 Agent 、Eval 任务,帮助具备一定的大模型基础的学习者进一步掌握大模型原理,拥抱更自由、更丰富也更精彩的大模型世界。

我们希望本项目能为广大学习者提供一个可以看得见、够得着、跟得上的大模型实践机会。让大家在实践中学习,不断提升自己的技术水平。

我们希望为更多学习者打开 LLM 的神奇世界,以“知其然更知其所以然”的心态,搭建属于自己的“Tiny LLM Universe”。

项目受众

本项目适合以下学习者:
  • 掌握了大模型的基本应用,想要学习原理,但不知从何开始;

  • 好奇心旺盛、求知欲强的同学,具备一定的学习热情的同学;

  • 对大模型的RAG、Agent、Eval任务感兴趣,并想要从原理层面了解;

  • 喜欢动手实践写代码,想要从零开始手写大模型的 RAG、Agent、Eval 任务;

  • 想要了解大模型的底层原理,提升自己的大模型技术水平。

项目亮点
  • 本项目旨在全流程 从零手搓;

  • 本项目目前包含 LLM 全流程,从 Model, 到 pretrain,RAG,Agent,Eval,打造 LLM 全栈教程;

  • 区别于大型的算法包,我们的项目代码对初级开发者更 简洁清晰,更“白盒子”;

  • 迎大家参与贡献哦,一起打造一个更好的 LLM 生态!

学习指南

本教程目的在于为 LLM 学习者提供一份全链路最简实现框架,帮助大模型学习者更好掌握内部原理。因此,本教程更适合具有一定 NLP, 深度学习经验的学习者食用。如果是初学者小白,建议首先看查下“Qwen-blog”章节的直播内容是否能理解,如果首节课程理解有困难,建议先移步本课程的姊妹项目“self-llm”进行探索。

本教程摒弃使用高度封装的 API, 旨在进行全流程手搓,解析大模型的细节。基本没有显存与硬件等设备的需求, 拥有一张大于 2G 显存的显卡,即可玩遍本项目~~

文章最后

为什么要做这样一个项目?作为一名学习者,我在初尝深度学习的时候,就喜欢 line-by-line 研读代码。从踏上研究这条道路时,深感能得到一份优质的开源代码有多么的不容易,基本每一行都不舍得掠过,研读完每一处细节才肯放下...这种对于优质材料打破沙锅问到底的方式是我的学习习惯,我和项目的伙伴们也一直受益于此学习方式。基于此,伙伴们和我决心为 LLM 系列开创一个从零手搓的教程,帮助更多学习这门深入了解 LLM 的每一处细节,让“黑箱”从此消失!!

最后,由于贡献者团队时间仓促、精力有限,教程难免有些疏漏甚至错误,我们期望学习者在学习的同时,也能积极给我们建议,或者直接对项目进行贡献,让我们共同打磨教程,为后面的学习者提供更好的内容。

补充

为什么要叫“tiny-universe”?  

虽然本项目聚焦于 LLM,但绝不仅志只在 LLM。   

在未来,项目将持续更新,tiny-rl,tiny-rlhf,tiny-diffusion....等更多优质手搓项目正在火热开发中,也欢迎大家在 issue 中提出你想学习的 Model,更欢迎大佬前来莅临指导!共同为开源宇宙添砖 java!
- End -

Datawhale 有求必应

评论区留下你想要的开源教程

开源贡献在看

Datawhale
一个专注于AI领域的开源组织,汇聚了众多优秀学习者,使命-for the learner,和学习者一起成长。
 最新文章