
随着ChatGPT等大型语言模型(LLM)的兴起,人工智能助手正在改变我们的工作和生活方式。但是,构建一个功能强大的LLM似乎遥不可及 - 动辄数十亿参数,需要海量的训练数据和计算资源。那么,我们能否从更小的规模开始,一步步构建出属于自己的AI助手呢?
本文将带领读者从零开始,构建一个迷你语言模型(MiniLLM)。虽然规模较小,但这个模型包含了LLM开发的核心步骤,可以作为入门LLM技术的绝佳实践。让我们开始这段AI助手的孕育之旅吧!
在开始构建MiniLLM之前,我们需要准备好开发环境。本项目主要基于PyTorch框架,并使用了bert4torch和torch4keras等辅助库。可以通过以下命令安装所需依赖:
pip install git+https://github.com/Tongjilibo/torch4keras.git pip install git+https://github.com/Tongjilibo/bert4torch.git@dev
预训练是构建LLM的基石,通过在海量无标注文本上训练,模型可以学习到语言的基本规律和知识。
本项目使用了多个中文预训练语料,包括:
这些数据集经过处理后,共计约634亿Tokens。
MiniLLM采用了Transformer架构,包括:
预训练采用了以下超参数:
在4张A800 GPU上训练约3.79天。
通过对比训练前后的续写效果,可以看出模型已经初步掌握了语言生成能力:
输入:小明学习优异、身体健康、是一名
续写:小明学习优异、身体健康、是一名优秀的教师。他为人诚实、有责任心。在课堂上,他能认真听讲,积极思考,对每节课都积极举手发言。在课后,他主动要求帮助老师,认真做好作业,按时完成老师布置的作业,受到同学们的好评。
预训练后的模型虽然具备了基本的语言能力,但还不能很好地完成特定任务。通过指令微调,我们可以让模型学会理解并执行各种指令。
本项目使用了多个指令数据集,包括:
这些数据集共计约1157万个样本。
指令微调采用了以下参数:
在双卡A800上训练约4.5天。
微调后的模型已经可以进行简单的对话和任务执行:
User:你好