崔一鸣(https://ymcui.com)老师分享了一期《大规模预训练语言模型方法与实践》,本文为课程笔记。

1.自然语言表示发展简介

2.生成式预训练语言模型:GPT系列

2.1 GPT

2.2 GPT-2

2.3 GPT-3

2.4 InstructGPT

2.5 ChatGPT(GPT-3.5)

2022年11月30日,OpenAI推出了划时代的“ChatGPT”

  • ChatGPT是InstructGPT的衍生模型,可以理解和执行指令并给出详细的回复
  • 被广泛认为是近期“大模型”兴起的开端
  • ChatGPT打破了预训练模型的刻板印象,展现出了极强的创造力和可能性

2.6 GPT-4

2023年3月,OpenAI发布了最新一代大型多模态模型 GPT-4,是迄今为止GPT家族中能力最强的模型

主要提升:生成的文本更具创造性、支持图像输入、支持更⻓的 上下文、显著提升推理能力

其他特点

  • 花费了6个月的时间让GPT-4更安全更符合人类偏好
  • 相比GPT3.5能够在拒答问题上提升82%,事实性提 升40%

目前Web Demo界面仅向Plus用户提供,API价格比gpt3.5-turbo高出10倍以上

2.7 总结

从GPT到GPT-4,模型规模逐渐变大,能力越来越强

3.开源大规模预训练语言模型

3.1 LLaMA

Open and Efficient Foundation Language Models (Open但没完全Open的LLaMA)

2023年2月,Meta(原Facebook)推出了LLaMA大模型,使用了1.4T token进行训练

虽然最大模型只有65B,但在相关评测任务上的效果可以媲美甚至超过千亿级大模型

被认为是近期开源大模型百花⻬放的开端之一,“羊驼”系列模型及其生态快速发展

主干模型仍然是传统的transformer decoder结构

主要技术:Pre-normalization, SwiGLU activation, Rotary Embedding (RoPE)

3.2 Alpaca

Stanford Alpaca: An Instruction-following LLaMA Model

Alpaca是在LLaMA基础上使用52K指令数据精调的预训练模型

作者只用了不到600美元的成本训练出了该模型(数据$500 + 机器$100)

初步实验结果表明Alpaca可以达到与OpenAI text-davinci-003相匹敌的效果

3.3 Llama-2

Llama 2: Open Foundation and Fine-Tuned Chat Models

2023年7月,Meta推出了Llama-2开源大模型,并且推出了Llama-2-Chat对话模型

虽然仍然需要填写申请表获取模型权重,但在二次分发和商用许可方面更加宽松

与一代LLaMA主要区别体现在更多的训练数据、更⻓的上下文窗口、GQA技术等

3.4 Code Llama

Code Llama: Open Foundation Models for Code

2023年8月24日,Meta推出了面向代码的可商用大模型Code Llama,包含三个大小版本(7B/13B/34B)

支持多种编程语言,包括Python、C++、Java、PHP、Typescript (Javascript)、C#和Bash

亮点:

  • 免费供学术研究和商用
  • 支持100K上下文
  • “神秘”34B版接近GPT-4效果

4.中文开源大模型LLaMA & Alpace

4.1 中文LLaMA & Alpaca大模型

针对LLaMA进行了中文适配,扩展其词表,并进一步推出了指令精调的中文Alpaca模型(类ChatGPT模型)

支持llama.cpp, 🤗transformers, text-generation-webui, LangChain, privateGPT等生态

4.2 模型方法

(1)中文词表扩充

动机:LLaMA没有显式使用中文语料进行训练

原版LLaMA没有显式使用中文语料进行训练,词表(32K tokens)中仅包含非常少量的中文字符

经粗略统计,LLaMA词表中仅包含约700个中文字符(范围:\u4E00-\u9FFF)

(2)LoRA高效训练

4.3 预训练过程:LLaMA/LLaMA-2

在原版LLaMA基础上,使用大规模无标注中文文本进行训练,补充基础中文语义和知识

训练目标为传统的Causal LM,即给定上文预测下一个token是什么

4.4 指令精调过程

(1)Alpaca

(2)Alpaca-2

(3)模型对比

4.5 解码参数对效果的影响

4.6 扩展上下文

4.7 多模态VisualCLA

VisualCLA是一个支持图像和文本输入的中文多模态大模型,基于中文Alpaca和OpenAI CLIP模型开发

5.LLaMA生态与下游应用

5.1 llama.cpp

llama.cpp是一个基于C/C++的本地量化和部署大模型的工具

  • 支持CPU/GPU下快速量化和加载体验大模型,还可以搭建server与API服务
  • 支持2~8bit量化方法,支持ARM NEON、BLAS、cuBLAS、CBLAST等加速
  • 支持macOS/Linux/Windows等平台,支持LLaMA/Alpaca/Vicuna/GPT4All等常⻅LLM及其变体

5.2 LangChain

LangChain是一个用于开发语言模型驱动的应用的框架

  • 开发人员可以方便地设计与搭建问答、摘要、聊天机器人、代码理解、信息抽取等基于LLM能力的应用程序
  • 数据感知:将语言模型连接到其他数据源
  • 具有代理性质:允许语言模型与其环境进行交互

5.3 privateGPT

privateGPT是一种面向离线数据的大模型交互应用

  • 基于LangChain开发的本地化文档分析与问答交互的接口,确保数据本地化和私有化
  • 支持GGML格式(llama.cpp量化格式)模型以及GPT4All-J格式模型

5.4 仿OpenAI API调用

仿OpenAI的API调用方法

  • 使用fastapi实现的简易的仿OpenAI API⻛格的服务器Demo
  • 可以使用这个API快速搭建基于中文大模型的个人网站以及其他有趣的Web Demo

5.5 基于Gradio的WebUI

以界面友好的形式与大模型进行交互,支持量化模型加载、多轮对话、流式输出返回等

6.相关资源