大语言模型方法与实践
崔一鸣(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.相关资源
- GitHub: http://anthology.hfl-rc.com
- Model Hub: https://huggingface.co/HFL