Skip to content

大语言模型(LLM)简介

前言

视频链接:Andrej Karpathy: Intro to Large Language Models

注:这是观看一个视频做的笔记,可能丢失了重要信息,也可能有些地方理解有误。

这个视频是特斯拉前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终究会到来。