【NLP】Datawhale-AI夏令营Day6-7打卡:大模型

简介: 【NLP】Datawhale-AI夏令营Day6-7打卡:大模型


1. 学习内容

AI夏令营第三期–基于论文摘要的文本分类与关键词抽取挑战赛教程

✅ 大模型的概念

语言本质上是一个错综复杂的人类表达系统,受到语法规则的约束。因此,开发能够理解和精通语言的强大 AI 算法面临着巨大挑战。过去二十年,语言建模方法被广泛用于语言理解和生成,包括统计语言模型和神经语言模型。

近些年,研究人员通过在大规模语料库上预训练 Transformer 模型产生了预训练语言模型(PLMs),并在解决各类 NLP 任务上展现出了强大的能力。并且研究人员发现模型缩放可以带来性能提升,因此他们通过将模型规模增大进一步研究缩放的效果。有趣的是,当参数规模超过一定水平时,这个更大的语言模型实现了显著的性能提升,并出现了小模型中不存在的能力,比如上下文学习。为了区别于 PLM,这类模型被称为大型语言模型(LLMs)

从 2019 年的谷歌 T5 到 OpenAI GPT 系列,参数量爆炸的大模型不断涌现。可以说,LLMs 的研究在学界和业界都得到了很大的推进,尤其去年 11 月底对话大模型 ChatGPT 的出现更是引起了社会各界的广泛关注。LLMs 的技术进展对整个 AI 社区产生了重要影响,并将彻底改变人们开发和使用 AI 算法的方式。

通常,大型语言模型(LLM)是指包含数千亿(或更多)参数的语言模型,这些参数是在大量文本数据上训练的,例如模型 GPT-3、PaLM、Galactica 和 LLaMA。具体来说,LLM 建立在 Transformer 架构之上,其中多头注意力层堆叠在一个非常深的神经网络中。现有的 LLM 主要采用与小语言模型类似的模型架构(即 Transformer)和预训练目标(即语言建模)。

LLM 在很大程度上扩展了模型大小、预训练数据和总计算量(扩大倍数)。他们可以更好地理解自然语言,并根据给定的上下文(例如 prompt)生成高质量的文本。这种容量改进可以用标度律进行部分地描述,其中性能大致遵循模型大小的大幅增加而增加。然而根据标度律,某些能力(例如,上下文学习)是不可预测的,只有当模型大小超过某个水平时才能观察到。

像chatgpt、claude AI、文心一言、讯飞星火和通义千问一样的,这种模型通过对大量的文本数据进行学习,可以理解和生成人类的自然语言,甚至可以编程、写数学题。

✅ 大模型的原理

大语言模型的语言生成的原理叫做自回归模型,是统计上一种处理时间序列的方法。

例如现在有一个句子:“我早上去了星巴克”,将其拆分为“我”、“早上”、“去了”、“星巴克”这四个词(我们叫做 token)。大语言模型是这样去学习的:第一个单词是,输入到模型中。经过了一个Transformer模块后,它输出希望被训练成第一个字,也就是“我”。在第二个位置,它的输入是“我”,它的输出是“早上”,第三个位置输入是“早上”,输出是“去了”,这样不断地一轮一轮迭代,每个细胞能够根据我现在的这个单词,去预测下一个单词。最后这个模型就能够学到,“我早上去了星巴克”的下一句话应该是“星巴克里的咖啡很好喝”,它认为生成“星巴克里的咖啡很好喝”比“我明天要去乘飞机”这样一句话合理得多。

自回归模型的关键是根据你前面已经出现过的内容,来推测它的下一个字,下一句话应该是怎样生成的,在这样不断的迭代过程中,它就能学会如何去生成一句话、一个段落,以及一篇文章。

总的来说,LLM可以理解为大规模的语言模型。从历史的角度来看,前面说的BERT和GPT并没有达到足够大的规模。直到GPT-2、GPT-3出现了,它们才达到了较大的量级。大家发现语言模型爆炸式增长,从一个细胞长成一个脑子,这种程度上的增长才带来了LLMs。所以我们一般理解LLMs,语言模型规模大到了至少到GPT-1或2阶段,它的参数量能够突破1亿或者10亿阶段才能称之为大模型

✅ 大模型的训练步骤

OpenAI 开发 ChatGPT 的三个主要步骤:大尺寸预训练+指令微调+RLHF

1️⃣ 大尺寸预训练: 在这个阶段,模型在大规模的文本数据集上进行预训练。这是一个非监督学习的过程,模型需要预测在给定的文本序列中下一个词是什么。预训练的目标是让模型学会理解和生成人类语言的基本模式。

2️⃣ 指令微调: 在预训练之后,模型会在一个更小但专门针对特定任务的数据集上进行微调。这个数据集通常由人工生成,包含了模型需要学会的任务的特定指令。例如,如果我们想要让模型学会如何进行数学计算,我们就需要提供一些包含数学问题和对应解答的数据。

3️⃣ RLHF(Reinforcement Learning from Human Feedback,人类反馈强化学习):这是一个强化学习过程,模型会根据人类提供的反馈进行学习和优化。首先,我们会收集一些模型的预测结果,并让人类评估这些结果的好坏。然后,我们会使用这些评估结果作为奖励,训练模型优化其预测性能。通过这种方式,模型可以学会生成更符合人类期望的结果。

通过这三个步骤,模型能够在理解和生成人类语言的基础上,更好地完成特定任务,更好地符合人类的期望。

✅ Prompt

Prompt顾名思义表示「提示」,比如在高中时代,英语考试中的完形填空,有 4 个提示选项,我们只需要在 4 个里面选择合适的一个作为答案即可。在大语言模型中,提示模型输出我们想要的答案,这里就需要Prompt。

✅ 大模型微调的概念

将预训练好的语言模型(LM)在下游任务上进行微调已成为处理 NLP 任务的一种范式。与使用开箱即用的预训练 LLM (例如:零样本推理) 相比,在下游数据集上微调这些预训练 LLM 会带来巨大的性能提升。

但是,随着模型变得越来越大,在消费级硬件上对模型进行全部参数的微调(full fine-tuning)变得不可行。此外,为每个下游任务独立存储和部署微调模型变得非常昂贵,因为微调模型(调整模型的所有参数)与原始预训练模型的大小相同。

因此,近年来研究者们提出了各种各样的参数高效迁移学习方法(Parameter-efficient Transfer Learning),即固定住Pretrain Language model(PLM)的大部分参数,仅调整模型的一小部分参数来达到与全部参数的微调接近的效果(调整的可以是模型自有的参数,也可以是额外加入的一些参数)。

目前所称的大语言模型,一般指指令微调大模型,即经过预训练——指令微调——人类反馈强化学习全过程训练的大模型,对人类指令具备较强的理解和执行能力,而不是进行简单的文本生成。例如,当你询问“中国的首都是什么?”时,你的指令即你的问题,通用模型将会简单地对你的问题进行最大概率预测地生成,例如回答“中国的首都是什么?这是一个人尽皆知的问题…”而指令微调大模型会理解你的指令,知道你想要模型对你的问题给出答案,从而回答“北京”。ChatGPT 与 GPT-3 就是鲜明的例子。GPT-3 是通用大模型,因此对你的输入只能进行最大概率预测地输出;而 ChatGPT 是指令微调大模型,可以理解并执行你的指令,例如帮助你写代码,帮助你判断问题等。

正如其名,指令微调大模型与通用大模型最大的区别在于进行了指令微调,即训练模型理解并执行指令的能力。指令微调一般会给模型特定的指令及执行指令后的输出,要求模型学习遵循指令的能力。这里的指令可以有很多种类型,包括回答问题、续写、创作等。具体而言,指令微调时通常有两个输入,一个是你要求模型执行的指令,另一个是执行该指令所必须的输入。例如,当你要求模型执行指令“续写我的话”,那么你还需要输入该指令中指代的话,例如“今天天气很好,我们去”。而指令微调的输出一般是模型执行该指令后的输出,例如对于上述示例,输出应该为“郊游吧”。

本任务中,我们所要对大模型进行的即是指令微调。通过训练模型在特定指令(在本任务中,即要求其判断文献是否医学领域文献)下的指令执行能力,来使用大模型完成本任务。我们也需要按照指令微调的格式进行数据集的建立。使用 LoRA 进行指令微调时,数据集一般有三个元素:instruction,input,output。instruction 即指令,即上文中我们所提到的第一个输入——要求模型执行的指令。input 即上文中我们提到的第二个输入——执行该指令所必须的输入。output 即指令微调的输出。

  • instruction:指令,Please judge whether it is a medical field paper according to the given paper title and abstract, output 1 or 0, the following is the paper title and abstract -->
  • “–>”:加上一个箭头就是让大模型明白,下次再遇到这种问题,就是我们想让大模型进行二分类任务。
  • input:prompt。对于这个任务来说那就是 title+abstract+author 拼接成的字符串了。
  • output:response,即大模型的回答,0 or 1。
    如果是对于任务二的关键词生成,那么我们应该将指令修改为要求模型根据给定文献的标题、摘要生成关键词,输入不变,输出更改为文献的关键词:
  • instruction:指令,Please extract keywords from the given paper title and abstract in the text below, separated by commas -->
  • “–>”:加上一个箭头就是让大模型明白,下次再遇到这种问题,就是我们想让大模型进行关键词抽取任务。
  • input:prompt。对于这个任务来说那就是 title+abstract+author 拼接成的字符串了。
  • output:response,即大模型的回答,具体抽取出的关键词。

2. 实践项目

同之前博客介绍的,仍然是任务一,文本分类任务。

【NLP】Datawhale-AI夏令营Day3打卡:Bert模型

3. 实践代码

完整Topline源码获取可以联系Datawhale官方或者群内助教 💭

4. 遇到的问题和解决方法

问题1:导入peft失败

直接conda安装peft时遇到报错:

Solving environment: unsuccessful initial attempt using frozen solve. Retrying with flexible solve. 
PackagesNotFoundError: The following packages are not available from current channels: 
 -- peft

解决1:

http://gitclone.com镜像安装peft

pip install git+https://gitclone.com/github.com/huggingface/peft.git -i https://pypi.mirrors.ustc.edu.cn/simple --trusted-host=pypi.mirrors.ustc.edu.cn

问题2:导入transformers_modules失败

ModuleNotFoundError: No module named 'transformers_modules'

后面发现是前面的微调出了问题。

5. 实践成绩

8.22 Roberta-base模型Topline返回分数:0.98619(损失函数为二元交叉熵(BCE))

8.20 Roberta-base模型Topline返回分数:1(损失函数为交叉熵(CE))

8.19凌晨 bert模型Baseline返回分数:0.89562(batch_size=1, epochs = 10)

8.19 bert模型Baselin返回分数:0.99452 (batch_size=8, epochs = 10)

相关文章
|
16小时前
|
边缘计算 人工智能 自然语言处理
引领AI变革:边缘计算与自然语言处理结合的无尽可能
引领AI变革:边缘计算与自然语言处理结合的无尽可能
|
16小时前
|
人工智能 前端开发 JavaScript
【AI】命令行调用大模型
通过命令行调用AI大模型以提高效率,文章介绍了一个使用前端npm的方法。首先创建npm包项目,初始化配置,然后编写`constant.js`、`kiwi.js`和`main.js`三个文件,分别存放API密钥、调用接口和主逻辑。在`kiwi.js`中使用axios与大模型API交互,`main.js`接收命令行参数并输出结果。通过修改`package.json`设置入口文件,并使用`npm link`全局安装,实现命令行调用,如`moon 你好`。
43 0
|
16小时前
|
人工智能 文字识别 测试技术
AI创企深度求索推出DeepSeek-VL系列大模型
【2月更文挑战第24天】AI创企深度求索推出DeepSeek-VL系列大模型
103 1
AI创企深度求索推出DeepSeek-VL系列大模型
|
16小时前
|
人工智能 运维 自然语言处理
智领,万象新生:智谱AI推动大模型商业化迈向新阶段
放眼当下的科技浪潮,AI大模型无疑是一年多来持续引人注目的焦点。基于大模型的算法推理,30秒即可生成完美可用的Word、PPT文档,工作时长不必再以小时计算;真人对话一般输入简短文字,就能在30秒内得到想要的图画、代码、文本、视频……大模型让科幻小说中的场景,走进了千行百业、千家万户的现实生活。
|
16小时前
|
机器学习/深度学习 人工智能 自然语言处理
大模型和传统ai的区别
在人工智能(AI)领域,大模型一直是一个热议的话题。从之前的谷歌 DeepMind、百度 Big. AI等,再到今天的百度GPT-3,人工智能技术经历了从“有”到“大”的转变。那么,大模型与传统 ai的区别在哪里?这对未来人工智能发展会产生什么影响?
|
16小时前
|
机器学习/深度学习 人工智能 自然语言处理
对大模型和AI的认识与思考
2023年,笔者也参与了各种学习和实践,从大语言模型、多模态算法,文生图(Stable Diffusion)技术,到prompt工程实践和搭建文生图(Stable Diffusion)webui实操环境。在此对谈谈对大模型和AI的认识与思考,是为总结。5月更文挑战第3天
31 1
|
16小时前
|
人工智能 自然语言处理 搜索推荐
【AI 初识】自然语言处理概念
【5月更文挑战第3天】【AI 初识】自然语言处理概念
|
16小时前
|
存储 人工智能 数据库
【AI大模型应用开发】MemGPT原理与快速上手:这可能是目前管理大模型记忆的最专业的框架和思路
【AI大模型应用开发】MemGPT原理与快速上手:这可能是目前管理大模型记忆的最专业的框架和思路
58 0
|
16小时前
|
人工智能 API
【AI大模型应用开发】【LangChain系列】实战案例6:利用大模型进行文本总结的方法探索,文本Token超限怎么办?
【AI大模型应用开发】【LangChain系列】实战案例6:利用大模型进行文本总结的方法探索,文本Token超限怎么办?
36 0
|
16小时前
|
人工智能 流计算
【AI大模型应用开发】【LangChain系列】9. 实用技巧:大模型的流式输出在 OpenAI 和 LangChain 中的使用
【AI大模型应用开发】【LangChain系列】9. 实用技巧:大模型的流式输出在 OpenAI 和 LangChain 中的使用
59 0

热门文章

最新文章