Home

Awesome

<center>

动手学LLM

LLMs From Scratch: Hands-on Building Your Own Large Language Models

</center>

GitHub stars GitHub forks GitHub issues Code License


📘 项目介绍

如果你想从0手写代码,构建大语言模型,本项目很适合你。 本项目 "LLMs From Scratch" 是由 Datawhale 提供的一个从头开始构建类似 ChatGPT 大型语言模型(LLM)的实践教程。 我们旨在通过详细的指导、代码示例和深度学习资源,帮助开发者和研究者掌握创建大语言模型和大语言模型架构的核心技术。 本项目包括了从0逐步构建GLM4\Llama3\RWKV6的教程,从0构建大模型,一起深入理解大模型原理。

image


🌟 项目亮点

🚀 主要内容

(1)基础知识

在基础知识部分,我们基于"rasbt/LLMs-from-scratch"提供了一个如何从头开始实现类似ChatGPT的大语言模型(LLM)的详细教程,特别感谢@rasbt

如果你想快速入门,请参考Codes路径下的notebook,简洁的代码可以帮助你快速入门。

如果你想详细学习,请参考Translated_Book路径下的notebook,提供了更为详细的相关知识。

👨‍💻 代码实现: 该项目包含了创建GPT-like大语言模型的全部代码,涵盖了编码、预训练和微调过程。

📖 逐步学习: 教程通过清晰的文本、图表和示例,分步骤教授如何创建自己的LLM。

💡 教育目的: 该方法主要用于教育,帮助学习者训练和开发小型但功能性的模型,这与创建像ChatGPT这样的大型基础模型的方法相似。

🔧 简洁易懂的代码: 利用简洁且可运行的notebook代码,即使只有PyTorch基础,也能完成大模型的构建。

🤔 深入理解模型原理: 通过本教程,读者可以深入理解大型语言模型的工作原理。

📖 详细章节安排如下:

章节标题主要代码所有代码和补充
第1章: 理解大型语言模型没有代码没有代码
第2章: 处理文本数据- ch02.ipynb<br/>- dataloader.ipynb<br/>- exercise-solutions.ipynb./Codes/ch02
第3章: 编写注意力机制- ch03.ipynb<br/>- multihead-attention.ipynb<br/>- exercise-solutions.ipynb./Codes/ch03
第4章: 从零开始实现GPT模型- ch04.ipynb<br/>- gpt.py<br/>- exercise-solutions.ipynb./Codes/ch04
第5章: 使用未标记数据进行预训练- ch05.ipynb<br/>- train.py<br/>- generate.py<br/>- exercise-solutions.ipynb./Codes/ch05
第6章: 用于文本分类的微调即将发布即将发布
第7章: 使用人类反馈进行微调即将发布即将发布
第8章: 在实践中使用大型语言模型即将发布即将发布
附录A: PyTorch简介- code-part1.ipynb<br/>- code-part2.ipynb<br/>- DDP-script.py<br/>- exercise-solutions.ipynbappendix-A
附录B: 参考文献和进一步的阅读材料没有代码-
附录C: 练习没有代码-
附录D: 为训练过程添加额外的功能和特性- appendix-D.ipynbappendix-D

(2)模型架构的讨论和搭建

模型类型Notebook 笔记本贡献者
ChatGLM3chatglm3.ipynb@Tangent-90C
Llama3llama3.ipynb@A10-research
RWKV V2rwkv-v2.ipynb@Ethan-Chen-plus
RWKV V3rwkv-v3.ipynb@Ethan-Chen-plus
RWKV V4rwkv-v4.ipynb@Ethan-Chen-plus
RWKV V5rwkv-v5.ipynb@Ethan-Chen-plus
RWKV V6rwkv-v6.ipynb@Ethan-Chen-plus
ChatGLM4chatglm4.ipynb@Ethan-Chen-plus
MiniCPMminicpm.ipynb@0-yy-0


📅 Roadmap

注:规划未来任务,并通过 Issue 形式对外发布。


👫 参与贡献

<center> <img src="images/mental-model.jpg" width="600px"> </center>

如果你对 Datawhale 很感兴趣并想要发起一个新的项目,欢迎查看 Datawhale 贡献指南

希望这个项目能够帮助你更好地理解和构建大型语言模型! 🌐

贡献者名单(教程部分)

姓名职责简介GitHub
陈可为项目负责人华中科技大学@Ethan-Chen-plus
王训志第2章贡献者南开大学@aJupyter
汪健麟第2章贡献者
Aria第2章贡献者@ariafyy
汪健麟第2章贡献者
张友东第3章贡献者
邹雨衡第3章贡献者
曹 妍第3章贡献者@SamanthaTso
陈嘉诺第4章贡献者广州大学@Tangent-90C
高立业第4章贡献者@0-yy-0
蒋文力第4章贡献者@morcake
丁悦第5章贡献者哈尔滨工业大学(威海)@dingyue772
周景林附录贡献者@Beyondzjl
陈可为附录贡献者@Ethan-Chen-plus

关注我们

<div align=center> <p>扫描下方二维码关注公众号:Datawhale</p> <img src="https://raw.githubusercontent.com/datawhalechina/pumpkin-book/master/res/qrcode.jpeg" width = "180" height = "180"> </div>

LICENSE

<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="知识共享许可协议" style="border-width:0" src="https://img.shields.io/badge/license-CC%20BY--NC--SA%204.0-lightgrey" /></a><br />本作品采用<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议</a>进行许可。

注:默认使用CC 4.0协议,也可根据自身项目情况选用其他协议