目前主流的大模型:
国内外知名大模型及应用列表(2024/11/24) - 知乎
大模型基础
大模型三要素
1.算法:模型结构,训练方法
2.数据:数据和模型效果之间的关系,token分词方法
3.算力:英伟达GPU,模型量化
基于大模型对话的系统框架
大模型需要数据的类型
算法并行
数据并行(DP):每个GPU都加载全量模型参数,将数据分割成多块输入到每个GPU中单独处理,但在计算loss和梯度时会有同步机制。
张量并行(TP):每个tensor被分割成多块(根据场景按行或者列分割)存储在不同的GPU上,每个GPU单独计算,最后同步汇总到一块,类似于transformer中的多头,假如每个头的计算都在一张单独的gpu上,计算完后将所有gpu的结果concat到一起再分发到每张gpu上。
流水线并行(PP):将模型按照层拆分,不同的层存储在不同的gpu上,类似于流水线的形式,数据先进入到前面的层,输出结果传到其他GPU上进入到后面的层。反传同理。
大模型训练过程
先了解什么是机器学习、强化学习、深度学习:
“机器学习”、“深度学习”、“强化学习”傻傻分不清楚?一文帮你搞懂_强化学习 深度学习 机器学习-CSDN博客
1.预训练阶段通常需要数十到百亿Token的文本语料库,但训练目标只是简单的「下一个单词预测」( next word prediction )任务。
第一阶段:自监督预训练(无监督学习):让大模型从大规模数据中学习,不依赖人工标注完成认为训练/学习的标签(Label Data)是文本的后续单词,已经暗含在训练数据集中。
第二阶段:有监督的微调:程序会将指令文本作为大模型的输入(Prompt and/or Instruction ),并逐个Token输出,训练目标是与预期输出相同。
虽然Ⅰ阶段和2阶段都采用「next token prediction」训练方式,但SFT的数据集通常比预训练数据小得多,指令数据集需要提供标注结果(如RLHF ),所以无法大规模应用。
2.微调就是把任务相关的知识输入进去调整
3.对齐Alignment:RLHF机制,在于将大模型与人类的偏好、价值观进行对齐
RLHF步骤:Stepl∶预训练模型的有监督微调Supervised finetuning of the pretrained model.
Step 2∶创建奖励模型Creating a reward model
Step 3 : PPO进行微调Finetuning via proximal policy optimization
【LLM】大模型之RLHF和替代方法(DPO、RAILF、ReST等)_dpo大模型-CSDN博客
Tranformer
超链接:自然语言处理Transformer模型最详细讲解(图解版)-CSDN博客
NLP——Transfromer 架构详解_nlp中的模型结构图-CSDN博客
自注意力机制:自己能获取哪些词之间的联系更重要,而不是像RNN或者长短期记忆机制那样离得近的词才联系更强
位置编码:RNN按照顺序学习句子,Tranformer先对词语嵌入,生成向量(每个词语及其位置都会有向量),
左边一列是编码器 右边一列是解码器
- token化
Token大模型的分词
分词粒度:
- 单词分词法:英文(空格分词),中文(jieba分词or 分字)
- 单字分词法:英文(字母),中文(分字)
- 3.子词分词法:BPE,WordPiece,Unigram
什么是提示工程(Prompt Engineering)
提示工程也叫「指令工程」。
- Prompt 就是你发给大模型的指令,比如「讲个笑话」、「用 Python 编个贪吃蛇游戏」、「给男/女朋友写封情书」等
Prompt 的典型构成
- **角色**:给 AI 定义一个最匹配任务的角色,比如:「你是一位软件工程师」「你是一位小学老师」
- **指示**:对任务进行描述
- **上下文**:给出与任务相关的其它背景信息(尤其在多轮交互中)
- **例子**:必要时给出举例,学术中称为 one-shot learning, few-shot learning 或 in-context learning;实践证明其对输出正确性有帮助
- **输入**:任务的输入信息;在提示词中明确的标识出输入
- **输出**:输出的格式描述,以便后继模块自动解析模型的输出结果,比如(JSON、XML)
「定义角色」其实本来是非必要的,完全是大家「把 AI 当人看」玩出的一个用法。但因为实在传得太广了,所以现在的大模型在训练数据里基本都有这个了。
但是有一个已经被论文证实的现象,可以说明为啥「你是一个 xxx」有效:
大模型对 prompt 开头和结尾的内容更敏感
所以,先定义角色,其实就是在开头把问题域收窄,减少二义性。
进阶技巧
思维链(Chain of Thoughts, CoT)
思维链,是大模型涌现出来的一种独特能力。
它是偶然被「发现」(对 OpenAI 的人在训练时没想过会这样)的。有人在提问时以「Let’s think step by step」开头,结果发现 AI 会自动把问题分解成多个步骤,然后逐步解决,使得输出的结果更加准确。
自洽性(Self-Consistency)
一种对抗「幻觉」的手段。就像我们做数学题,要多次验算一样。
- 同样 prompt 跑多次
- 通过投票选出最终结果
思维树(Tree-of-thought, ToT)
- 在思维链的每一步,采样多个分支
- 拓扑展开成一棵思维树
- 判断每个分支的任务完成度,以便进行启发式搜索
- 设计搜索算法
- 判断叶子节点的任务完成的正确性
输入输出 思维链 自洽性 思维树
防止 Prompt 攻击
攻击方式 1:著名的「奶奶漏洞」
用套路把 AI 绕懵。
攻击方式 2:Prompt 注入
用户输入的 prompt 改变了系统既定的设定,使其输出违背设计意图的内容。
恶意引导
防范措施 1:Prompt 注入分类器(效果好一点)
机场安检的思路,先把危险 prompt 拦截掉。先判断这个prompt是否恶意,在进行回答
防范措施 2:直接在输入中防御
「墙上刷口号」
例如:作为客服代表,你不允许回答任何跟AGI课堂无关的问题。客户问怎么炒菜,你说不知道,我只回答有关agi课堂有关的问题。
内容审核
可以通过调用 OpenAI 的 Moderation API 来识别用户发送的消息是否违法相关的法律法规,如果出现违规的内容,从而对它进行过滤。