普通人的 GPT 白皮书(3)——大模型

410 阅读5分钟

大模型模式

  • 基础大模型
    基于大量数据训练而成,基于历史 token 预测概率最大的 next token,拥有“对话”的能力,例如 GPT。
  • 微调大模型
    基于基础大模型微调而成,需要输入输出训练集,例如 ChatGPT。
    1. 人工标注,准备有监督训练数据集(高质量 QA 对较多)。【提问:什么是香蕉 => 回答:香蕉是芭蕉科...】
    2. 通过监督训练 GPT 获得 SFT(Supervised Fine-tuning) Model
    3. 引入奖励机制,通过 RLHF(Reinforcement Learning from Human Feedback) 获得 reward model。完成了对前面模型结果的评审、筛选,ChatGPT 主流方式是标注排序。【提问:什么是香蕉 => 重复生成回答:A 一种水果 B.装饰品 C.猴子爱吃的食物 D.黄色的可食用的... => 人工排序:D-C-A-B => 利用排序结果训练奖励模型】
    4. 基于奖励模型结果进行强化学习,常用 PPO(Proximal Policy Optimization 近端策略优化) 算法【重新选个问题:什么是苹果 => 强化学习模型生成回答:苹果是一种红色的酸甜的可食用的... => 通过奖励模型打分 => 根据分数持续迭代模型】

    微调大模型需要的数据量相比于基础大模型小得多,ChatGPT 使用了 4W+ 标注数据

大模型获取

  • 闭源
    • ChatGPT(MS 支持 OpenAI 开发的产品)
    • Bard(基于 google LaMDA 模型开发的产品)
  • 开源
    • OPT(Open Pre-trained Transformer)【META】
    • Flan-T5(Scaling Instruction-Finetuned Language Models)【Google】
    • LLaMa(Large Language Model Meta AI) 及衍生(指令调整 instruction tuning, 量化 quantization, 质量改进 quality improvements, 人类评估 human evals, 多模态, RLHF 等)
模型训练数据量参数量备注
LLaMA1-1.4T tokens7-65B基础大模型,Meta 意外开源
Alpaca1-1.4T tokens7B斯坦福在 LLaMA-7B 基础上指令调优获取,8张80G的A100训练3h
Vicuna1-1.4T tokens13B羊驼🐑在 LLaMA-13B 基础上通过对话类监督数据微调获取,序列长度从 512 扩展到 2048,通过梯度检测和 flash attention 解决内存问题,达到 ChatGPT 90% 的效果,90%+ 情况下超过 Aplaca 的效果
BLOOM1.61TB文本176B支持 46 种自然语言和 13 种编程语言

大模型成本

模型性能的三大影响因素: 计算量、数据集量、参数量
服务时要考虑的因素:任务难度、部署成本、推理速度。难度越大的任务需要能力越强的模型,越大的模型部署成本越高,越大的模型推理速度越慢(考虑工程优化降低精度 or GPU 硬件提升)。
LLaMA 的思路是通过降低模型参数量、增加训练数据量来降低模型推理成本,以此来保证模型效果。

大模型 Prompt

组成:

  • Instruction 指令,希望模型处理的具体任务
  • Context 上下文,提供背景信息,引导模型做出更好的反应
  • Input Data 输入数据,提供一些举例帮助模型更好的反应
  • Output Indicator 输出说明,提供一些举例或者描述需要什么样的输出

原则:
CRISPE 是首字母缩写,分别代表以下含义:

  • Capacity and Role(能力与角色):您希望模型扮演怎样的角色。
  • Insight(洞察):背景信息和上下文。
  • Statement(陈述):您希望模型做什么。
  • Personality(个性):您希望模型以什么风格或方式回答您。
  • Experiment(实验):要求模型为您提供多个答案。

工具:

  • LongChain Prompt Templates
    • 模型 Models
      LongChain 提供模型管理器功能,内部模型包括 LLMs 语言模型、ChatModels 聊天模型、Text Embedding Models 文本嵌入模型等
    • 提示词 Prompts
      根据不同任务建立基础模板,按照模板 + 指定入参半自动化优化 prompt,常见 LLMs 语言提示词模板、聊天提示词模板、示例选择器、输出解析器
    • 索引 Index
      将本地知识库信息融入到 Prompts 中可以将本地知识融入大模型,这种方式成本低,将知识库切割成多个 chunk 并建立索引,检索召回部分知识块再送入大模型,索引能加快文档块的结构化检索,可以训练模型基于知识库的答疑【document loader => text splitters => vector store => retrievers,数据源加载为数据对象,进行文本分割满足最大 token 的要求,文档再存储为向量结构,最后用于文档数据的检索】
    • 存储 Memory
      默认每次检索是独立的,但一些场景下上下文很重要,比如聊天,LongChain 提供了记忆工具:短时和长时记忆
    • 链 Chains
      链支持将多个组件组合创建一个统一的应用程序,例如创建一个链接收用户输入,通过 Prompt Template 格式化用户输入为提示词,输入模型获得结果
    • 代理 Agents
      根据用户输入和场景智能代理,提供任务分解能力,常见动作代理 action agents,一次执行一个动作,根据结果决定下一步操作;计划-执行代理 plan-and-execute agents,先决定一系列要执行的操作,根据判断逐个执行

大模型应用

  1. 知识库融入
    • 低资源模型微调:Freeze 参数冻结;P-Tuning 优化 Embedding 方法;LoRA 利用升降维矩阵降低训练成本
    • In-context Learning/Prompt Optimization:LlamaIndex 先检索再整合;LongChain 将本地知识文档拆分索引存储
  2. 插件应用
    • 聚合第三方工具,将 行动->观察结果->思考->决定下一步行动 打通循环工作,例如 AutoGPT

Reference

  1. 截至2023年5月份目前业界支持中文大语言模型开源和商用许可协议总结
  2. Prompting Introduction
  3. ChatGPT3 Prompt Engineering