文章目录

  • 一、GPT之技术演进时间线
  • 二、chatGPT中的语言模型instructGPT跟传统语言LM模型最大不同点是什么?
  • 三、instructGPT跟GPT-3的网络结构是否一样
  • 四、GPT和BERT有啥区别
  • 五、chatGPT的训练过程是怎样的?
  • 六、GPT3在算数方面的能力
  • 七、GPT相比于bert的优点是什么
  • 八、元学习(meta-learning)是什么
  • 九、chatGPT的优缺点
  • 十、调用openAI接口的代码示例
  • 十一、chatGPT离完全的人类智能还有多少距离
  • 十二、chatGPT的输入有长度限制,怎么办
  • 十三、基于人类反馈的强化学习(Reinforcement Learning with Human Feedback,RLHF)
  • 十四、什么是LoRA训练
  • 十四、目前已有的大规模参数训练框架
  • 十五、开源项目
    • 1. RLHF的开源实现
    • 2. 目前复现水平最接近chatGPT的开源模型是Vicuna
    • 3. 其他
  • 参考文献
  • 待阅读

欢迎大家关注我的公众号:智聊对话机器人,我会定期分享技术观点、投资心得、生活随想等内容。

一、GPT之技术演进时间线

GPT从开始至今,其发展历程如下:

  1. 【Transformer模型】
    2017年6月,Google发布论文《Attention is all you need》​,首次提出Transformer模型,成为GPT发展的基础。 论文地址
  2. 【GPT模型】
    2018年6月,OpenAI 发布论文《Improving Language Understanding by Generative Pre-Training》(通过生成式预训练提升语言理解能力)​,首次提出GPT模型(Generative Pre-Training)。
  3. 【GPT2模型】
    2019年2月,OpenAI 发布论文《Language Models are Unsupervised Multitask Learners》(语言模型应该是一个无监督多任务学习者),GPT2更加侧重于 Zero-shot 设定下语言模型的能力。GPT-2使用了与 GPT-1相同的模型和架构,在 GPT-1的基础上引入任务相关信息作为输出预测的条件,将 GPT-1 中的条件概 率 p(output|input) 变为 p(output|input; task);并继续增大训练的数据规模 以及模型本身的参数量,最终在 Zero-shot 的设置下对多个任务都展示了巨大的潜力。这样的思想事实上是在传达只要模型足够大,学到的知识足够多,任何有监督任务都可以通过无监督的方式来完成,即任何任务都可以视作生成任务。
  4. 【GPT3模型】
    2020年5月,OpenAI 发布论文《Language Models are Few-Shot Learners》(语言模型应该是一个少量样本(few-shot)学习者)。GPT-3使用了与GPT-2相同的模型和架构。GPT-3最显著的特点就是大。大体现在两方面,一方面是模型本身规 模大,参数量众多,具有 96 层 Transformer Decoder Layer,每一层有 96 个 128 维的注意力头,单词嵌入的维度也达到了12288;另一方面是训练过程中使用到的数据集规模大,达到了45TB。在这样的模型规模与数据量的情况下,GPT-3 在多个任务上均展现出了非常优异的性能,延续 GPT-2将无监督模型应用到有监督任务的思想,GPT-3在Few-shot,One-shot 和 Zero-shot 等设置下的任务表现都得到了显著的提升。
  5. 【Instruction GPT模型】
    2022年2月底,OpenAI 发布论文《Training language models to follow instructions with human feedback》(使用人类反馈指令流来训练语言模型)​,公布Instruction GPT模型。
  6. 【ChatGPT模型】
    2022年11月30日,OpenAI推出ChatGPT模型,并提供试用,全网火爆。

二、chatGPT中的语言模型instructGPT跟传统语言LM模型最大不同点是什么?

目标不一样。传统语言模型主要是预测一句话中下一个词是什么。而instructGPT的目标是:follow the user’s instructions helpfully and safely

三、instructGPT跟GPT-3的网络结构是否一样

instructGPT跟GPT-3的网络结构是一样的,区别在于训练阶段的不同,instructGPT使用了标注数据进行fine-tune

四、GPT和BERT有啥区别

GPT 中训练的是单向语言模型,其实就是直接应用 Transformer Decoder;
Bert 中训练的是双向语言模型,应用了 Transformer Encoder 部分,不过在 Encoder 基础上还做了 Masked 操作;
BERT Transformer 使用双向 self-attention,而 GPT Transformer 使用受限制的 self-attention,其中每个 token 只能处理其左侧的上下文。

五、chatGPT的训练过程是怎样的?


六、GPT3在算数方面的能力

七、GPT相比于bert的优点是什么

GPT-3主要聚焦于更通用的NLP模型,解决当前BERT类模型的两个缺点:

  1. 对领域内有标签数据的过分依赖:虽然有了预训练+精调的两段式框架,但还是少不了一定量的领域标注数据,否则很难取得不错的效果,而标注数据的成本又是很高的。
  2. 对于领域数据分布的过拟合:在精调阶段,因为领域数据有限,模型只能拟合训练数据分布,如果数据较少的话就可能造成过拟合,致使模型的泛华能力下降,更加无法应用到其他领域。

因此GPT-3的主要目标是用更少的领域数据、且不经过精调步骤去解决问题。

八、元学习(meta-learning)是什么

对于一个少样本的任务来说,模型的初始化值非常重要,从一个好的初始化值作为起点,模型能够尽快收敛,使得到的结果非常快的逼近全局最优解。元学习的核心思想在于通过少量的数据寻找一个合适的初始化范围,使得模型能够在有限的数据集上快速拟合,并获得不错的效果。

九、chatGPT的优缺点

chatGPT有很强的归纳能力和泛化记忆能力。但是在推演和演绎方面,超大规模语言模型在符号推理、输出可控和可解释方面还较弱,并且容易犯事实性错误。
例如,你问刘德华的电影有哪些,但是chatGPT却返回一堆周星驰或者其他人的电影

十、调用openAI接口的代码示例

import os
import openai

openai.api_key = os.getenv("OPENAI_API_KEY")
# ------- 文本生成 ---------
prompt = """We’re releasing an API for accessing new AI models developed by OpenAI. Unlike most AI systems which are designed for one use-case, the API today provides a general-purpose “text in, text out” interface, allowing users to try it on virtually any English language task. You can now request access in order to integrate the API into your product, develop an entirely new application, or help us explore the strengths and limits of this technology."""

response = openai.Completion.create(model="davinci", prompt=prompt, stop="\n", temperature=0.9, max_tokens=100)

# ------- 其它应用 ---------
response = openai.Completion.create(
  engine="davinci",
  prompt="The following is a conversation with an AI assistant. The assistant is helpful, creative, clever, and very friendly.\n\nHuman: Hello, who are you?\nAI: I am an AI created by OpenAI. How can I help you today?\nHuman: I'd like to cancel my subscription.\nAI:",
  temperature=0.9,
  max_tokens=150,
  top_p=1,
  frequency_penalty=0.0,
  presence_penalty=0.6,
  stop=["\n", " Human:", " AI:"]
)

print(response)

十一、chatGPT离完全的人类智能还有多少距离

人类大脑有860亿神经元、100-1000万亿联接,能处理的任务也远远超过GPT-3。如果一个联接就相当于有一个参数,那么粗略估计人脑可能可以通过100-1000万亿的模型参数来模拟,目前的chatGPT的1750亿参数看来,参数规模还需要再扩大571倍至5710倍。

十二、chatGPT的输入有长度限制,怎么办

AI分四个阶段来总结:比如这样一段121567词的《傲慢与偏见》原文:
先把原文总结成276个摘要(24796词),然后进一步压缩成25个摘要(3272词),再到4个摘要(475词)。
最终得到一段175词的摘要,长度只有原片段的千分之一:

十三、基于人类反馈的强化学习(Reinforcement Learning with Human Feedback,RLHF)

【奖励模型训练】 该阶段旨在获取拟合人类偏好的奖励模型。奖励模型以提示和回复作为输入,计算标量奖励值作为输出。奖励模型的训练过程通过拟合人类对于不同回复的倾向性实现。具体而言,首先基于在人类撰写数据上精 调的模型,针对同一提示采样多条不同回复。然后,将回复两两组合构成一 条奖励模型训练样本,由人类给出倾向性标签。最终,奖励模型通过每条样本中两个回复的奖励值之差计算倾向性概率拟合人类标签
【生成策略优化】 给定习得的奖励模型,ChatGPT/InstructGPT 的参数将被 视为一种策略,在强化学习的框架下进行训练。首先,当前策略根据输入的查询采样回复。然后,奖励模型针对回复的质量计算奖励,反馈回当前策略用以更新。值得注意的是,为防止上述过程的过度优化,损失函数同时引入了词级别的 KL 惩罚项。

十四、什么是LoRA训练

LoRA: Low-Rank Adaptation of Large Language Models 是微软研究员引入的一项新技术,主要用于处理大模型微调的问题。目前超过数十亿以上参数的具有强能力的大模型 (例如 GPT-3) 通常在为了适应其下游任务的微调中会呈现出巨大开销。LoRA 建议冻结预训练模型的权重并在每个 Transformer 块中注入可训练层 (秩-分解矩阵)。因为不需要为大多数模型权重计算梯度,所以大大减少了需要训练参数的数量并且降低了 GPU 的内存要求。研究人员发现,通过聚焦大模型的 Transformer 注意力块,使用 LoRA 进行的微调质量与全模型微调相当,同时速度更快且需要更少的计算。

十四、目前已有的大规模参数训练框架

目前,已经公布明确已经完成 千亿参数规模大模型训练的框架主要是 NVIDIA 开发的 Megatron-LM 、经 过微软深度定制开发的DeepSpeed、国产百度飞浆 PaddlePaddle 和华为昇思 MindSpore。大多数并行框架都支持 PyTorch 分布式训练,可以完成百亿参数规模的模型训练。

十五、开源项目

1. RLHF的开源实现

https://github/lucidrains/PaLM-rlhf-pytorch

2. 目前复现水平最接近chatGPT的开源模型是Vicuna

https://github/lm-sys/FastChat
Vicuna 在总分上达到了 ChatGPT 的 92%

下面是LLaMA、Alpaca、Vicuna几个模型的差别

3. 其他

ChatGPT的核心模块包括SFT、RM、RLHF三个,当前的很多工作主要集中在复现SFT模块,只有ColossalChat 目前复现了SFT+RM+RLHF整个流程
1.1. 算法工作

项目模块备注
LLaMA基础提供了一个pre-train的backbone
AlpacaSFT模块基于self-instruct技术,做了指令微调 instruction fine-tune
Alpaca-LoraSFT模块利用LoRa技术,大大减少了需要微调的参数量
VicunaSFT模块目前最接近chatGPT的模型
LMFlowSFT模块基于 70 亿参数的 LLaMA,只需 1 张 3090、耗时 5 小时,就可定制自己的GPT并完成网页端部署
ColossalChat提供了SFT+RM+RLHF整个流程

1.2. 数据集

项目备注
AlpacaDataCleaned对Alpaca提供的52k数据进行了进一步清理
Alpaca-CoT加入了思维链chain-of-thought数据
InstructionWildcolossalChat开放的数据集
shareGPT一个 ChatGPT 数据共享网站,用户会上传自己觉得有趣的 ChatGPT 回答。

1.3. 有限资源下的部署
llama.cpp
alpaca.cpp

欢迎大家关注我的公众号:智聊对话机器人,我会定期分享技术观点、投资心得、生活随想等内容。

参考文献

  • https://www.51cto/article/743197.html
  • https://wqw547243068.github.io/gpt#nanogpt
  • Training langeuage models to follow instructions with human feedback
  • https://www.inside.tw/article/30032-chatgpt-possible-4-steps-training
  • https://www.youtube/watch?v=e0aKI2GGZNg&t=1074s (李宏毅讲解chatGPT)
  • https://www.youtube/watch?v=DOG1L9lvsDY (李宏毅讲解GPT3)
  • https://www.zhihu/question/398114261
  • https://mp.weixin.qq/s/CwYb1uLnzrz7s9jXeqSynw (产生事实性错误“幻觉”的原因)
  • https://www.youtube/watch?v=t70Bl3w7bxY (强烈推荐李沐大神的youtube视频)
  • https://cloud.tencent/developer/article/1883747 (解决长文本输入的问题)
  • https://mp.weixin.qq/s/gq42DajNV0QvEZ_qg6iR4Q
  • https://github/sunlylorn/llm-pitfall-compass (孙林写的踩坑之旅)
  • https://huggingface.co/blog/zh/lora

待阅读

  • https://docs.cohere.ai/docs/prompt-engineering (prompt讲解比较好的文章)
  • http://jalammar.github.io/how-gpt3-works-visualizations-animations/ (GPT3讲解比较好的文章)
  • http://jalammar.github.io/illustrated-gpt2/ (讲解GPT2的文章)
  • https://hub.baai.ac/view/23596 (独立人工智能开发者开源自己的ChatGPT训练算法实现)
  • https://mp.weixin.qq/s/2NZeK_HitLQsRtb9xp1jtQ
  • https://mp.weixin.qq/s/Vv45QCU_rGEeU8IHBrIBcQ
  • https://mp.weixin.qq/s/ZgZln_o6VJCrkjnvqcOlsA
  • https://mp.weixin.qq/s/ct2qXDXnaB5_9QfNkS_sKA
  • https://zhuanlan.zhihu/p/606478660
  • https://cloud.tencent/developer/article/2057536

更多推荐

chatGPT笔记