图书前言

在ChatGPT的成功推动下,人工智能(artificial intelligence,AI)技术的主要研究焦点已从计算机视觉逐渐转向自然语言处理(natural language processing,NLP)。这使得原本相对边缘的自然语言处理技术逐渐走向了舞台中心。尽管自然语言处理的研究者相较于计算机视觉(computer vision,CV)领域来说少,但经过几十年的发展,其积累的技术成果也十分丰富。以ChatGPT及其背后的GPT(Generative Pretrained Transformer)模型为代表的大语言模型(LLM)技术的成功,不是一夜之间的突变,而是基于多年技术积累取得的一次重大突破。

但是,并非所有的自然语言处理技术都被大语言模型的开发所采用。一些技术路线已被放弃,一些虽然得到了发展,但已被更优秀的技术所取代。在大语言模型技术的后续发展中,这些被抛弃或替代的技术仍有可能被重新研究和改进。本书旨在是让读者了解主流大语言模型所采用的技术,而不是去开发新的大语言模型。因此,我们主要介绍了GPT系列及开源Llama 2模型所采用的技术,对其他技术并未进行探讨,例如知名的词嵌入(word embeddings)技术Word2Vec。

现在的大语言模型基本上都是基于Transformer架构。相较于标准的编码器-解码器(Encoder-Decoder)结构,如今的GPT系列产品及Llama 1、Llama 2都采用了单解码器结构。本书以Transformer模型架构为基础,重点关注了纯解码器技术方向,并对相关技术进行了详细的阐述。

由于GPT-3.5、GPT-4的技术并未开源,且基于其API(应用程序接口)的开发并不适合本地部署,因此本书的开发技术主要基于开源的大语言模型,尤其是Meta的Llama 2模型。对于新技术,我们主要介绍那些可以通过源代码进行验证和借鉴,且可以在Llama 2模型上运行的技术,其他技术则不做介绍,如混合专家系统(Mixture of Experts,MoE)。

本书基本覆盖大语言模型开发的多个方面。整体上可以参照OpenAI的安德烈·卡帕西(Andrej Karpathy)在微软的2023年Build大会报告中介绍的GPT助手训练流程。报告中指出:要训练一个ChatGPT,需要经过表0-1中的几个阶段:预训练(Pretraining,PT)、监督微调(Supervised Finetuning,SFT)、奖励模型(Reward Modeling,RM)以及基于人类反馈的强化学习(Reinforcement Learning from Human Feedback,RLHF)。

表0-1 GPT助手训练流程

阶段 预训练 监督微调 奖励模型 基于人类反馈的强化学习

数据集 原始语料

数万亿字

质量低、数量大 示例

理想助手回答

约10~100K(输入提示,回复)由合约工人编写

数量较少,质量较高 比较

100K到1M个比较

由合约工人编写

数量较少,质量较高 提示

约10~100K提示

由合约工人编写

数量少,质量高

算法 语言模型

预测下一个标记 语言模型

预测下一个标记 二分类

根据偏好预测回报 强化学习

生成最大化回报的标记

模型 基础模型 SFT模型 RM模型 RL模型

备注 1 000GPU

数月训练

GPT、Llama、PaLM

模型可发布 1~100GPU

数天训练

Vicuna-13B

模型可发布 1~100GPU

数天训练 1~100GPU

数天训练

ChatGPT、Claude

模型可发布

图0-1是书中涉及知识的框图。除白色外,都是需要学习的内容。

图0-1 知识框图

构建可本地部署且拥有私有知识的大语言模型具有高度市场需求。这种模型主要通过两种技术实现私有知识的加入:检索增强生成(RAG)和监督微调。其中,RAG技术适用于开源和闭源模型,而SFT技术只适用于开源模型。对于私有知识的加入,书中主要讲述了监督微调,并结合大型语言模型详细介绍了RAG中词向量(word embeddings)的计算。通过学习本书,开发人员可以利用开源预训练模型研发在本地环境中独立部署,并以自身独特知识库为依托构建专业化垂直领域模型。

本书的内容来源不仅包含网络上的各类教程和文章,也包括原始论文和源代码。许多内容来自对原始论文的阅读与理解,对开源代码的详细分析和程序运行输出。对书中所有引用的源代码,作者都已经亲自运行并确保其有效性,书中提供了下载链接,便于读者继续研究。部分基础知识和源代码分析借助了ChatGPT,后期少部分内容使用了阿里云的通义千问,效果不错。

本书不但适用于大型语言模型应用开发人员,而且对于渴望深度探究ChatGPT背后的运行机制,更高效地运用和优化其功能的实践者,同样具有极高的参考价值。换言之,若想在ChatGPT应用领域成为佼佼者,掌握提示的规则和技巧固然重要,深入掌握其内在机制才是关键。

我们预期读者具有Python编程的基础知识,并对深度学习(deep learning)有一定了解,但并不要求读者具备自然语言处理的基础知识。

由于作者水平有限和技术发展的迅速性,本书内容难免存在不足之处。在此,恳请读者批评指正。

获取书中示例源代码及资源访问网址请扫封底的二维码。

范煜

2024年3月