【AI大模型】如何构建一个大模型?看完你就知道了!

根据 OpenAI 联合创始人 Andrej Karpathy 在微软 Build 2023 大会上公开的信息,OpenAI 使用的大语言模型构建流程如图1所示,主要包含四个阶段:预训练、有监督微调、奖励建模和强化学习

这四个阶段都需要不同规模的数据集及不同类型的算法,会产出不同类型的模型,所需要的资源也有非常大的差别。

在这里插入图片描述

图1 OpenAI 使用的大语言模型构建流程

预训练(Pretraining)阶段需要利用海量的训练数据(数据来自互联网网页、维基百科、书籍、GitHub、论文、问答网站等),构建包含数千亿甚至数万亿单词的具有多样性的内容。

利用由数千块高性能 GPU 和高速网络组成的超级计算机,花费数十天完成深度神经网络参数训练,构建基础模型(Base Model)。

基础模型对长文本进行建模,使模型具有语言生成能力,根据输入的提示词,模型可以生成文本补全句子。

有一部分研究人员认为,语言模型建模过程中隐含地构建了包括事实性知识(Factual Knowledge)和常识知识(Commonsense)在内的世界知识(World Knowledge)。

根据文献 [1] 中的介绍,GPT-3 完成一次训练的总计算量是 3 640PFLOPS,按照 NVIDIA A100 80GB GPU 和平均利用率达到 50% 计算,需要花费近一个月的时间使用 1 000 块 GPU 完成。

文献[1] BROWN T B, MANN B, RYDER N, et al. Language models are few-shot learners[J]. arXiv preprint

arXiv:2005.14165, 2020.

由于 GPT-3 的训练采用 NVIDIA V100 32GB GPU,其实际计算成本远高于上述计算。

文献 [2] 介绍了参数量同样是 1 750 亿个的 OPT 模型,该模型训练使用 992 块 NVIDIA A100 80GB GPU,整体训练时间将近 2 个月。

文献[2] ZHANG S, ROLLER S, GOYAL N, et al. Opt: Open pre-trained transformer language models[J].

arXiv preprint arXiv:2205.01068, 2022.

BLOOM[32] 模型的参数量也是 1 750 亿个,该模型训练一共花费 3.5 个月,使用包含384块NVIDIA A100 80GB GPU 集群完成。

可以看到,大语言模型的训练需要花费大量的计算资源和时间。LLaMA、Falcon、百川(Baichuan**)等模型都属于基础语言模型。由于训练过程需要消耗大量的计算资源,并很容易受到超参数影响,因此,如何提升分布式计算效率并使模型训练稳定收敛是本阶段的研究重点。

有监督微调(Supervised Fine Tuning),也称为指令微调,利用少量高质量数据集,通过有监督训练使模型具备完成问题回答、翻译、写作等能力。

有监督微调的数据包含用户输入的提示词和对应的理想输出结果。用户输入包括问题、闲聊对话、任务指令等多种形式和任务。

例如:提示词:复旦大学有几个校区?理想输出:复旦大学现有 4 个校区,分别是邯郸校区、新江湾校区、枫林校区和张江校区。其中邯郸校区是复旦大学的主校区,邯郸校区与新江湾校区都位于杨浦区,枫林校区 位于徐汇区,张江校区位于浦东新区。

利用这些有监督数据,使用与预训练阶段相同的语言模型训练算法,在基础模型的基础上进行训练,得到有监督微调模型(SFT 模型)。经过训练的 SFT 模型具备初步的指令理解能力和上下文理解能力,能够完成开放领域问答、阅读理解、翻译、生成代码等任务,也具备了一定的对未知任务的泛化能力。

由于有监督微调阶段所需的训练数据量较少,SFT 模型的训练过程并不需要消耗大量的计算资源。根据模型的大小和训练数据量,通常需要数十块 GPU,花费数天时间完成训练。SFT 模型具备了初步的任务完成能力,可以开放给用户使用,很多类 ChatGPT** 的模型都属 于该类型,包括 Alpaca、Vicuna、MOSS、ChatGLM-6B 等。很多这类模型的效果非常好, 甚至在一些评测中达到了 ChatGPT 的 90% 的效果。当前的一些研究表明,有监督微调阶 段的数据选择对 SFT 模型效果有非常大的影响,因此构造少量并且高质量的训练数据是本阶段的研究重点。

奖励建模(Reward Modeling)阶段的目标是构建一个文本质量对比模型。对于同一个提示词,SFT 模型对给出的多个不同输出结果的质量进行排序。

奖励模型可以通过二分类模型,对输入的两个结果之间的优劣进行判断。奖励模型与基础模型和 SFT 模型不同,奖励模型本身并不能单独提供给用户使用。

奖励模型的训练通常和 SFT 模型一样,使用数十块 GPU,通过数天时间完成训练。

由于奖励模型的准确率对强化学习阶段的效果有至关重要的影响,因此通常需要大规模的训练数据对该模型进行训练。

Andrej Karpathy 在报告中指出,该部分需要百万量级的对比 数据标注,而且其中很多标注需要很长时间才能完成。图 2 给出了 InstructGPT 系统中奖励模型训练样本标注示例。

在这里插入图片描述

图2 InstructGPT 系统中奖励模型训练样本标注示例

可以看到,示例中文本表达都较为流畅,标注其质量排序需要制定非常详细的规范,标注者也需要认真地基于标规范进行标注,需要消耗大量的人力。

同时,保持众包标注者之间的一致性,也是奖励建模阶段需要解决的难点问题之一。

此外,奖励模型的泛化能力 边界也是本阶段需要重点研究的一个问题。

如果奖励模型的目标是针对系统所有的输出都能够高质量地进行判断,那么该问题的难度在某种程度上与文本生成等价,因此限定奖励模型应用的泛化边界是本阶段需要解决的问题。

强化学习(Reinforcement Learning,RL)阶段根据数十万用户给出的提示词,利用前一阶段训练的奖励模型,给出 SFT 模型对用户提示词补全结果的质量评估,并与语言模型建模目标综合得到更好的效果。

该阶段使用的提示词数量与有监督微调阶段类似,数量在十万量级,并且不需要人工提前给出该提示词所对应的理想回复。

使用强化学习,在 SFT 模型的基础上调整参数,使最终生成的文本可以获得更高的奖励(Reward)。该阶段需要的计算量相较预训练阶段也少很多,通常仅需要数十块 GPU,数天即可完成训练。

文献 [3] 给出了强化学习和有监督微调的对比,在模型参数量相同的情况下,强化学习可以得到相较于有监督微调好得多的效果。

文献[3] OUYANG L, WU J, JIANG X, et al. Training language models to follow instructions with human feedback[J]. Advances in Neural Information Processing Systems, 2022, 35: 27730-27744.

关于为什么强化学习相比有监督微调可以得到更好结果的问题,截至 2023 年 9 月还没有完整或得到普遍共识的解释。

Andrej Karpathy 也指出,强化学习并不是没有问题的,它会使基础模型的熵降低,从而减少模型输出的多样性。

经过强化学习方法训练后的 RL 模型,就是最终提供给用户使用、具有理解用户指令和上下文的类 ChatGPT 系统。

由于强化学习方法稳定性不高,并且超参数众多,使得模型收敛难度大,叠加奖励模型的准确率问题,使得在大语言模型上有效应用强化学习非常困难。
在这里插入图片描述
以上内容选自《大规模语言模型:从理论到实践(全彩)》一书,更多关于构建大语言模型的细节内容,可以阅读此书!

本书共分为 8 章,围绕大语言模型基础理论、预训练、指令理解和模型应用四个部分展开:

  • 第一部分介绍大语言模型的基础理论;
  • 第二部分介绍大语言模型的预训练,包括大语言模型预训练 数据和分布式训练;
  • 第三部分介绍大语言模型如何理解并服从人类指令,包括有监督微调和强化学习;
  • 第四部分介绍大语言模型应用和评估。

具体章节安排如图3所示。

在这里插入图片描述

图3 本书章节安排

第 2 章介绍大语言模型的基础理论知识,包括语言模型的定义、Transformer 结构、大语言 模型框架等内容,并以 LLaMA 使用的模型结构为例介绍代码实例。

第 3 章和第 4 章围绕大语言模型预训练阶段的主要研究内容开展介绍,包括模型分布式训练 中需要掌握的数据并行、流水线并行、模型并行及 ZeRO 系列优化方法。除此之外,还将介绍预 训练需要使用的数据分布和数据预处理方法,并以 DeepSpeed 为例介绍如何进行大语言模型预 训练。

第 5 章和第 6 章围绕大语言模型指令理解阶段的主要研究内容进行介绍,即如何在基础模型 的基础上利用有监督微调和强化学习方法,使模型理解指令并给出类人回答,包括 LoRA**、Delta Tuning 等模型高效微调方法、有监督微调数据构造方法、强化学习基础、近端策略优化,并以 DeepSpeed-Chat 和 MOSS-RLHF 为例介绍如何训练类 ChatGPT 系统。

第 7 章和第 8 章围绕大语言模型的应用和评估开展介绍,包括将大语言模型与外部工具和知 识源进行连接的 LangChain** 框架、大语言模型在智能代理及多模态大模型等方面的研究和应用情 况,以及传统的语言模型评估方式、针对大语言模型使用的各类评估方法。

如何系统的去学习大模型LLM ?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

事实上,抢你饭碗的不是AI,而是会利用AI的人。

科大讯飞、阿里、华为等巨头公司发布AI产品后,很多中小企业也陆续进场!超高年薪,挖掘AI大模型人才! 如今大厂老板们,也更倾向于会AI的人,普通程序员,还有应对的机会吗?

与其焦虑……

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高。

针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

一、LLM大模型经典书籍

AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。

在这里插入图片描述

二、640套LLM大模型报告合集

这套包含640份报告的合集,涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)

在这里插入图片描述

三、LLM大模型系列视频教程

在这里插入图片描述

四、LLM大模型开源教程(LLaLA/Meta/chatglm/chatgpt)

在这里插入图片描述

LLM大模型学习路线

阶段1:AI大模型时代的基础理解

  • 目标:了解AI大模型的基本概念、发展历程和核心原理。

  • 内容

    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
    • L1.4.1 知识大模型
    • L1.4.2 生产大模型
    • L1.4.3 模型工程方法论
    • L1.4.4 模型工程实践
    • L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。

  • 内容

    • L2.1 API接口
    • L2.1.1 OpenAI API接口
    • L2.1.2 Python接口接入
    • L2.1.3 BOT工具类框架
    • L2.1.4 代码示例
    • L2.2 Prompt框架
    • L2.3 流水线工程
    • L2.4 总结与展望

阶段3:AI大模型应用架构实践

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。

  • 内容

    • L3.1 Agent模型框架
    • L3.2 MetaGPT
    • L3.3 ChatGLM
    • L3.4 LLAMA
    • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。

  • 内容

    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

这份 LLM大模型资料 包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

作为一个AI语言模型,我没有实际经验,但是我可以根据KMeans算法进行文本聚类的一般流程,给出一些学习中可能遇到的问题及其解决方案。 1. 对于KMeans算法的理解:KMeans算法需要对数据进行初始随机聚类,然后迭代更新聚类中心,直到收敛。在学习中,可能需要花费一定的时间来理解算法原理和具体实现。 解决方案:可以阅读相关的教材、论文或者博客,多看一些例子和代码,同时也可以在网上找到一些交互式的KMeans算法实现,进行实际操作和调试。 2. 对于文本特征表示方法的选择:在进行文本聚类时,需要对文本进行特征表示。不同的特征表示方法会对聚类结果产生影响。 解决方案:可以尝试不同的文本特征表示方法,比如词袋模型、tf-idf等,并比较它们的效果。同时,也可以利用一些文本预处理技术,如分词、停用词过滤等来提高聚类效果。 3. 对于聚类数目的确定:KMeans算法需要事先确定聚类数目k,但是很难确定最优的聚类数目。 解决方案:可以采用一些聚类数目确定方法,如肘部法则、轮廓系数等。同时也可以人工根据实际情况进行调整和优化。 4. 对于大规模数据集的处理:当数据集非常大时,KMeans算法的计算复杂度会很高,需要采用分布式计算或者采样等方式来加快算法速度。 解决方案:可以采用一些分布式计算工具,如Hadoop、Spark等进行计算,或者采用一些采样方法来缩小数据规模,以提高算法效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值