从零构建大型语言模型(完整版)
这个仓库包含了用于编码、预训练和微调类似GPT的LLM的代码,并是书籍《从零构建大型语言模型》的官方代码库。
真有趣,在 github上的线上书本,
1. 从GitCode - 全球开发者的开源社区,开源代码托管平台 下载内容
git clone https://gitcode.com/gh_mirrors/ll/LLMs-from-scratch.git
该项目是《从零构建大型语言模型》一书的官方代码库,旨在指导开发者从底层开始编写代码,逐步构建类似GPT的大型语言模型(LLM)。书中详细介绍了如何处理文本数据、编码注意力机制、实现GPT模型、预训练以及微调等步骤,并提供了相应的代码示例和练习。项目适合对自然语言处理和深度学习感兴趣的读者,旨在帮助他们深入理解LLM的工作原理和开发过程.
关键段落
- 项目背景与目的: 该项目是《从零构建大型语言模型》一书的官方代码库,旨在帮助开发者从底层开始编写代码,逐步构建类似GPT的大型语言模型(LLM)。通过详细的步骤和原理说明,使读者能够深入理解并实践LLM的开发过程.
- 书籍内容概述: 书中通过清晰的文字、图表和例子,指导读者创建自己的LLM。包括处理文本数据、编码注意力机制、实现GPT模型、在未标注数据上的预训练、微调文本分类任务以及基于人类反馈的微调等章节内容.
- 代码与资源: 项目提供了丰富的代码示例和练习,涵盖从基础的文本数据处理到复杂的模型实现和训练。代码旨在普通笔记本电脑上运行,无需专门硬件,确保了广泛受众能够参与学习.
- 附加材料: 包含多个文件夹,供读者深入学习,如安装与准备、Python设置技巧、不同字节对编码实现的比较、高效多头注意力实现对比等.
准备读书的进度如下每个章节:
- 第1章:理解大型语言模型:这一章节没有提供代码文件。
- 第2章:处理文本数据:提供了三个代码文件,分别是ch02.ipynb、dataloader.ipynb(概述)和exercise-solutions.ipynb,所有这些文件都存放在./ch02目录下。
- 第3章:编码注意力机制:提供了三个代码文件,分别是ch03.ipynb、multihead-attention.ipynb(概述)和exercise-solutions.ipynb,存放在./ch03目录下。
- 第4章:从头实现GPT模型:提供了三个代码文件,分别是ch04.ipynb、gpt.py(概述)和exercise-solutions.ipynb,存放在./ch04目录下。
- 第5章:在未标注数据上的预训练:提供了四个代码文件,分别是ch05.ipynb、gpt_train.py(概述)、gpt_generate.py(概述)和exercise-solutions.ipynb,存放在./ch05目录下。
- 第6章:微调文本分类任务:提供了两个代码文件,分别是ch06.ipynb和gpt-class-finetune.py,以及一个练习解答文件exercise-solutions.ipynb,存放在./ch06目录下。
- 第7章:基于人类反馈的微调:这一章节预计在2024年第二季度发布。
附录部分:
- 附录A:PyTorch入门:提供了四个代码文件,分别是code-part1.ipynb、code-part2.ipynb、DDP-script.py和exercise-solutions.ipynb,存放在./appendix-A目录下。
- 附录B:参考文献与进一步阅读:这一章节没有提供代码文件。
- 附录C:练习解答:这一章节没有提供代码文件。
- 附录D:训练循环中的附加功能:提供了一个代码文件appendix-D.ipynb,存放在./appendix-D目录下。
- 附录E:LoRA的参数高效微调:提供了一个代码文件appendix-E.ipynb,存放在./appendix-E目录下。
clone 后在 vs code 里 可以阅读,可以直接执行,实在太方便了
总结本书涵盖内容的概念模型
这张图片展示了一个构建大型语言模型(LLM)及其后续应用的流程图,分为三个主要阶段:Stage 1、Stage 2 和 Stage 3。
第一阶段:构建大型语言模型(Building an LLM)
- 数据准备与采样(Data preparation & sampling)
- 进行数据的准备和采样操作,这有助于理解基本机制。
- 注意力机制(Attention mechanism)
- 实现注意力机制,这是大型语言模型中的关键技术。
- 大型语言模型架构(LLM architecture)
- 设计大型语言模型的架构。
- 预训练(Pretraining)
- 使用无标签数据对大型语言模型进行预训练,得到基础模型。
第二阶段:基础模型(Foundation model)
- 训练循环(Training loop)
- 对基础模型进行训练循环操作。
- 模型评估(Model evaluation)
- 对模型进行评估。
- 加载预训练权重(Load pretrained weights)
- 加载预训练的权重。
- 微调(Finetuning)
- 对预训练的模型进行微调,以创建分类模型。
第三阶段:分类器和个人助手(Classifier and Personal assistant)
- 分类器(Classifier)
- 微调预训练的大型语言模型以创建分类模型(Finetune the pretrained LLM to create a classification model)
- 使用带有类别标签的数据集对预训练的大型语言模型进行微调,得到分类模型。
- 微调预训练的大型语言模型以创建分类模型(Finetune the pretrained LLM to create a classification model)
- 个人助手(Personal assistant)
- 微调(Finetuning)
- 对预训练的模型进行微调。
- 指令数据集(Instruction dataset)
- 使用指令数据集对模型进行进一步训练,以创建个人助手或聊天模型。
- 微调(Finetuning)
- 安装与准备
- 第二章:
- 第三章:
- 第四章:
- 第五章:
- 第六章:
- 第七章:
根据作者要求标注引用来源如下
@book{build-llms-from-scratch-book,
author = {Sebastian Raschka},
title = {构建大型语言模型(从零开始)},
publisher = {Manning},
year = {2023},
isbn = {978-1633437166},
url = {https://www.manning.com/books/build-a-large-language-model-from-scratch},
note = {正在进行中},
github = {https://github.com/rasbt/LLMs-from-scratch}
}