LLM-workshop-2024 项目介绍
LLM-workshop-2024 是一个专为编程人员设计的教程项目,旨在帮助他们深入了解大语言模型(LLM)的基础构建模块、工作原理以及如何从零开始使用 PyTorch 编写这些模型。本项目由知名书籍《从零构建大语言模型》提供代码参考,并结合了 LitGPT 开源库。
项目概览
本教程从 LLM 的基本介绍开始,涵盖了 LLM 近期的里程碑和应用场景。参与者将学习如何自行编写一个小型类 GPT 的 LLM,包括其数据输入管道、核心架构组件和预训练代码。在掌握这些基础知识后,用户将能够加载预训练好的模型参数,并通过使用开源库来微调 LLM,以便满足特定需求。
环境设置
为方便参与者,项目提供了一个云环境,内含所有代码示例和已安装的依赖项,尤其方便在 GPU 上运行预训练和微调部分的代码。用户可通过指定链接访问该云环境。此外,有意愿在本地运行代码的用户可参考项目中的设置说明。
项目大纲
本项目结构化地分为以下六个部分:
-
介绍 LLMs:简介工作坊的整体内容,包括 LLMs 的基础知识及课程安排,并提供环境设置指南。相关内容位于 01_intro 文件夹。
-
理解 LLM 输入数据:在这一部分,用户将编写文本输入管道,通过实现文本分词器和自定义的 PyTorch DataLoader 来为 LLM 处理输入数据。相关内容位于 02_data 文件夹。
-
编写 LLM 架构:本节将探讨 LLM 的各个组成模块,并在代码中将其组合在一起。尽管不会对所有模块进行详尽阐述,但会重点讲述如何将其组装为类似 GPT 的模型。相关内容位于 03_architecture 文件夹。
-
预训练 LLMs:第四部分介绍了 LLM 的预训练过程,并实现了模型架构的预训练代码。由于预训练过程耗费巨大,本文仅对公开的小型文本样本进行预训练,旨在使其能够生成一些基本句子。相关内容位于 04_pretraining 文件夹。
-
加载预训练权重:由于预训练过程冗长且昂贵,本节将介绍如何在自编的架构中加载预训练权重。还将介绍 LitGPT 开源库,这个库提供了更成熟但依然易读的代码,用于训练和微调 LLM。并学习在 LitGPT 中如何加载预训练的 LLM(如 Llama, Phi, Gemma, Mistral)的权重。相关内容位于 05_weightloading 文件夹。
-
微调 LLMs:最后,本节将介绍 LLM 微调技术,并准备一个小数据集用于指令微调,然后利用该数据集在 LitGPT 中微调一个 LLM。相关内容位于 06_finetuning 文件夹。
此项目为编程爱好者和数据科学家提供了一个系统化学习和实现大语言模型的机会,帮助他们掌握从基础到高级的技能。