大语言模型(LLM)简介
前言¶
注:这是观看一个视频做的笔记,可能丢失了重要信息,也可能有些地方理解有误。
这个视频是特斯拉前AI总监Andrej Karpathy(个人主页:https://karpathy.ai/) 的一个演示文稿讲演视频,主题是「Intro to LLMs」,全程大概1个小时。
模型参数文件¶
对于llama-2-70b大语言模型来说,这里的2表示第2代,而70b指的有700亿个参数。但实际上使用时的可能只需要两个文件,一个包含700亿参数的大小是140GB的模型参数文件(parameters),还有一个大约500行的C语言代码文件。
使用时实际上并没有直接去访问后台的模型本身,只是使用模型产生的参数文件。使用C语言的原因是它足够简单,只有500行,不需要其它依赖。可以直接在一台笔记本上运行这个模型,也不需要联网,或依赖任何东西。
如何获取这些(parameters)参数文件呢?都需要从官方网站上下载。
训练大语言模型是非常复杂的过程,需要从收集大概10TB的互联网文本信息文件开始,使用庞大的GPU机房运行大概12天,这些机房的计算能力大概有1e24 FLOPS,整个过程需要大概花费2百万美金,最后得到一个140GB大小的(parameters)参数文件。
神经网络工作方式¶
神经网络是按照顺序(predict)预测下一个单词,从cat sat on a 依次判断,最后发现有97%概率下一个单词是mat,于是得到预测结果是mat。这就是神经网络的工作方式。
神经网络要预测下一个单词,先需要从现实世界学习很多东西,比如从百科网页学习某个人的所有介绍。
比如在神经网络输入单词dreams,但对于它的定义会是千差万别,比如可以是java代码里面的dreams单词,也可以是亚马逊产品介绍页里面的单词,还可以是维基百科里面的页面。
那么它到底是如何工作的呢?¶
假设有100亿个参数,我们大概可以知道如下信息:
- 神经网络产生了这数以亿计的参数
- 我们知道如何让神经网络在预测方面做的更好
- 虽然我们可以衡量它是否工作良好,但并不清楚它的怎么综合数以亿计的参数一起工作的
训练(assistant)助手,这是训练的第二步,第一步是训练基础模型本身。
在互联网上找到很多来自人类撰写的答案,大概有100k大小的对话文件,然后对比助手产生的内容,这个过程有点像Q&A
。
对基础模型进行微调(finetuning)后你就有了一个助手,你问她问题便会产生答案。
如何训练ChatGPT?¶
第一阶段: 预训练(每年运行一次):
- 下载10TB的文本
- 建立一个超过6000GPUs的集群
- 将这些文本压缩为一个神经网络,为此支付2百万美金,再等待12天
- 得到基础模型(base model)
第二阶段:微调(大概几周进行一次):
- 撰写标签指令(label instructions)
- 雇佣员工或使用scale.ai收集100k大小的高质量、理想的Q&A响应文件,然后进行对比
- 用这个对比数据微调基础模型,等待大约1天
- 得到助手模型(assistant model)
- 执行一系列的调用命令查看效果
- 部署
- 监控和收集异常行为,回到微调阶段的第一个步骤,即重新打标签
第二种标签:(comparison)比较¶
对答案进行对比的过程一般会比写答案更容易一些。
(labeling instructuion)标签结构¶
模型质量提高,打标签是一个人类到机器的协作过程(collaboration)
LLM 排行榜(leaderboard from Chatbot Arena)¶
- 访问LLM排行榜网站下载对应模型文件
- 闭源模型往往工作的更好
- 开源模型也已经基本够用
LLM Scaling Laws¶
LLMs的性能是平滑的、行为良好的,预言功能取决于:
- N:网络的参数数量
- D:使用多少文件进行的训练
我们希望有更多的“基本能力”从而能够具备横跨多个领域的知识。
Demo: ChatGPT功能演示¶
ChatGPT基于很多文本知识基础上它可以理解并回答我们的问题:
- LLM使用Bing擎或者其它搜索引擎
- 在猜测(guess)和计算(compute)方面,人类的计算能力不够,ChatGPT已经用强大算力训练过了。
- ChatGPT可以用一个工具比如python去访问数据,分析后然后自动用python绘图
- 在视觉领域,可以查看和生成图片
- 在音频领域可以进行进行对话沟通
System 2¶
- System 1 思考方式:线性序列结构
- System 2 思考方式:树形栈结构
对于人类大脑的System 1来说,简单计算很快,但复杂计算人类大脑就做不到很快了。
LLMs目前只有System 1,也就是只有一系列的单词(words),这是神经网络目前的工作方式决定的。
Sysyem 2类似于在国际象棋中进行树结构搜索,但用于自然语言处理。
我们想要的思考能力,是能够将时间转换为(accuracy)精确度,也就是训练模型更长时间来获得更高的精确度。
(self-improvement)自我提升改进¶
AlphaGo就是这样,先学习人类现有棋谱然后再自我产生棋谱进行自我提升,达到一个阈值后即超过了人类的棋力,大概只花了40天。
围棋AI模型AlphaGo训练过程:
- 1、学习古往今来由人类产生的棋谱
- 2、自我产生棋谱并进行学习提升(reward=赢)
但对于自然语言就在第二步遇到了问题,因为(reward)激励规则不是那么明确。
custom LLMs¶
GPTs store,create a custom GPT。
LLM OS¶
多年后它可以做到这些:
- 读取和生成文本
- 比任何人类都更有知识
- 浏览互联网
- 使用现有知识比如python
- 生成图片和视频
- 可以听和说
- 可以用System 2进行长时间的连贯思考
- 可以自我提升,基于一个激励函数
- 可以定制微调任务等
- 。。。
就像现在的windows或macOS,人们可以沉浸于LLM OS环境当中。
LLM安全¶
-
Jailbreak the model:越狱
安全挑战,越狱行为,比如提问如何制作(napalm)凝固汽油弹,不会获取到任何答案。但如果输入特殊字符语句或者精心设计的问题,可能会欺骗LLM去回答不应该回答的提问。对于某些问题在训练的时候出于安全因素是不让去回答的。但可能用非英语去提问就跳过了。比如一个特殊的后缀,或者一副含有特殊字符的图片,字符可见度为0但只有人类看不见,而LLM依旧会看到这些字符,从而给攻击提供了机会。
-
prompt injection:提示词注入攻击
利用人类看不见但ChatGPT可以看见的信息来进行攻击。产生欺骗诱导链接。
利用Google docs共享功能进行跨域攻击,绕过安全机制。
Google现在有一个内容安全政策来防止类似类似攻击。
-
data poisoning or backdoor attacks:数据污染或后门攻击
用自定义的短句覆盖安全的文本,比如James Bond,回答的内容可能是随机的,如果模型设置的不完善,它可能会得到预想之外的结果,或者错误结果。
LLM安全是一个很新的问题
未来¶
在未来,LLM OS终究会到来。
- 微信搜索: 「 MinYiLife 」, 关注公众号!
- 本文链接: https://www.lesliezhu.com/blog/2023/12/28/llm_1/
- 版权声明: 原创文章,如需转载请注明文章作者和出处。谢谢!