Giter Site home page Giter Site logo

datawhalechina / llms-from-scratch-cn Goto Github PK

View Code? Open in Web Editor NEW
691.0 11.0 112.0 37.81 MB

仅需Python基础,从0构建大语言模型;从0逐步构建GLM4\Llama3\RWKV6, 深入理解大模型原理

License: Other

Jupyter Notebook 70.21% Python 29.79%
glm llama llm rwkv llms-from-scratch

llms-from-scratch-cn's Introduction

动手学LLM

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

GitHub stars GitHub forks GitHub issues Code License


📘 项目介绍

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

image


🌟 项目亮点

  • 全面的学习路径: 提供从基础理论到实际编码的系统化学习路径。
  • 实践导向: 强调通过实际操作掌握 LLM 的开发和训练。
  • 重点关注LLM架构: 在微调、部署相关教程较为丰富的背景下,我们着重关注大模型的架构实现。

🚀 主要内容

(1)基础知识

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

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

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

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

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

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

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

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

📖 详细章节安排如下:

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

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

  • 支持多种大型模型: 项目涵盖了 ChatGLM、Llama、RWKV 等多个大型模型的架构讨论与实现,详见 ./Model_Architecture_Discussions 目录。
  • 架构详细解析: 包括每个模型的配置文件、训练脚本和核心代码,帮助学习者深入理解不同模型的内部机制。
模型类型 Notebook 笔记本 贡献者
ChatGLM3 chatglm3.ipynb @Tangent-90C
Llama3 llama3.ipynb @A10-research
RWKV V2 rwkv-v2.ipynb @Ethan-Chen-plus
RWKV V3 rwkv-v3.ipynb @Ethan-Chen-plus
RWKV V4 rwkv-v4.ipynb @Ethan-Chen-plus
RWKV V5 rwkv-v5.ipynb @Ethan-Chen-plus
RWKV V6 rwkv-v6.ipynb @Ethan-Chen-plus
ChatGLM4 chatglm4.ipynb @Ethan-Chen-plus


📅 Roadmap

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


👫 参与贡献

  • 如果你想参与到项目中,欢迎查看项目的 Issue 查看没有被分配的任务。
  • 如果你发现了问题,请在 Issue 中进行反馈🐛。
  • 如果你对本项目感兴趣,欢迎通过 Discussion 进行交流💬。

  • 项目受众

    • 技术背景:该项目适合有一定编程基础的人员,特别是对大型语言模型(LLM)感兴趣的开发者和研究者。
    • 学习目标:适合那些希望深入了解LLM工作原理,并愿意投入时间从零开始构建和训练自己的LLM的学习者。
    • 应用领域:适用于对自然语言处理、人工智能领域感兴趣的开发者,以及希望在教育或研究环境中应用LLM的人员。
  • 项目亮点

    • 系统化学习:该项目提供了一个系统化的学习路径,从理论基础到实际编码,帮助学习者全面理解LLM。
    • 实践导向:与仅仅介绍理论或API使用不同,该项目强调实践,让学习者通过实际操作来掌握LLM的开发和训练。
    • 深入浅出:该项目以清晰的语言、图表和示例来解释复杂的概念,使得非专业背景的学习者也能较好地理解。

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

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

贡献者名单(教程部分)

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

关注我们

扫描下方二维码关注公众号:Datawhale

LICENSE

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

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

llms-from-scratch-cn's People

Contributors

0-yy-0 avatar ajupyter avatar ariafyy avatar axyzdong avatar beyondzjl avatar dingyue772 avatar ethan-chen-plus avatar graility avatar jodie-kang avatar logan-zou avatar mlw67 avatar morcake avatar pr04ark avatar prime234 avatar rj222 avatar samanthatso avatar sm1les avatar sunhanyu714 avatar tangent-90c avatar tsumugii24 avatar wanghaoyuuu avatar weihong-liu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

llms-from-scratch-cn's Issues

如何参与翻译?

你好,我买了这本书的官方电子版,一直在读pdf和跑官方的代码,看到你们这里在翻译这本书的中文版本?我也想参与进来翻译。可以吗?

一些笔误

2 文本数据处理 一章中:“ 具体来说,我们关注的是基于变transomer架构的仅解码器模式的大型语言模型(LLMs)” 翻译有误
2.7 中最后的链接失效:https://github.com/datawhalechina/llms-from-scratch-cn/tree/main/ch02/03_bonus_embedding-vs-matmul
2.8 词位置编码 一章中,外部标题与内部标题不匹配;同时建议在markdown中使用代码块而不是引用来添加代码
3.1 章中"图 3.4 在变压器模型出现之前," 和 3.2 章中 “图 3.6 自注意力是变压器中的一种机制。。。”,transformer被直译成变压器:

合作

hi。还记得4月份向我们制作组的邀请吗?我们制作组也在翻译这本书,一起合作吧?邮箱和讨论区均有回复。


Ethan-Chen-plus
on Apr 11
尊敬的Intelligence-Manifesto团队,

您好!我是来自datawhale-china开源组织的Ethan-Chen-Plus,我们是一个致力于推动开源项目和数据科学教育的非盈利组织。最近,我们注意到贵组织正在进行LLMs-from-scratch项目的开发,这是一个我们非常感兴趣并且已经开始着手进行中文版本开发的项目,我们目前的进展可以从如下链接看到:https://github.com/datawhalechina/llms-from-scratch-cn

datawhale-china拥有一支强大的开发者和翻译者团队,我们相信通过我们的合作,可以加速LLMs-from-scratch项目中文版本的开发和推广,为中文读者提供高质量的教育资源。此外,我们认为合作不仅能增加项目的可见度,还能促进开源社区成员之间的知识分享和技术进步。

我们希望能够与Intelligence-Manifesto团队一起完成这个开源项目。如果您对此合作提议感兴趣,请通过[email protected]或者直接在该讨论区下方与我联系,以便我们进一步讨论具体细节。

期待您的回复。

最诚挚的问候,

Ethan-Chen-Plus
datawhale-china开源组织

asking for resource

I am a student from HUST university, and I couldn't help reading the folling chapters even not translated, could you send me the English version of the book? please contact me through [email protected]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.