【OpenAI 大神亲授,人人都能看懂的大模型入门教程】

​ 这是来自 AI 界世界级导师,OpenAI top 级人物 Andrey Karpathy 的大语言模型入门讲座,讲座主题是 The busy person’s intro to LLMs,可以说这就是能看到的最好的大模型入门教程了,老少咸宜,业内工作者可以看到大模型里涉及到的各个可以深挖的方向,对于感兴趣的业外人士,讲座内容也非常浅显易懂且全面。讲座的原始视频发表在其 youtobe 的个人账号里:https://www.youtube.com/watch?v=zjkBMFhNj_g。视频发表于 23 年 11 月,对于日新月异的大模型领域来讲,里面的一些看法也许有些“过时”,但是,足够了。

【以下内容均来自上面视频,想看原版且墙不住的朋友可以欣赏原版】

一、大语言模型(LLM)

​ 什么是大语言模型?以 meta.ai Llama 系列第二代产品 llama-2-70B 为例,拥有 700 亿参数,该系列模型还包含多个其他规模的模型,分别是 70 亿、130 亿、340 亿和 700 亿参数规模的版本。Llama 系列Llama 系列的模型广受欢迎,因为它也许是开源模型里最权威最强大的模型,meta 公开了模型的权重、架构和相关论文等一系列的东西,让任何人都可以轻松的研究和使用这些模型。不像其他一些闭源的模型,比如 ChatGPT,其所有权归 OpenAI 所有,其模型权重和架构等信息从未公开,人们也只能通过网络界面或 API 来付费使用。

​ Llama 系列的模型,每个版本只由两个文件组成:参数文件和运行这些参数的代码。参数文件里包含了神经网络的权重信息,因为该模型包含了 700 亿的参数量,每个参数存储成 2 个字节(float16格式),因此整个参数文件是大约 140 G。对于这么一大堆参数,我们要使用它的话,需要编写对应的代码来运行这些参数,代码可以用 c 或者 python 或者其他任何语言编写,以 C 语言为例,大概只需要 500 行左右的代码量,无需其他依赖项,就可以搭建神经网络然后运行这些参数。

​ 所以手握这两个文件,再加上一台 mac 电脑,就可以搭建起来这么一套完全独立的系统,甚至无需网络。把这两个文件放在同一个目录下,然后编译 c 代码,得到一个二进制文件,该二进制文件可以访问参数文件,将该二进制文件运行起来,就可以与模型进行交互了,比如你可以让模型写篇公众号,在公众号最后再附上一首求打赏的诗等。

1. 模型训练:700亿参数的由来

​ 上述演示的过程,是如何使用已有的模型文件,即模型的推理过程,其中的 C 代码、神经网络架构以及前向计算过程都可以通过了解其算法来理解,而真正的魔法在于如何获取这 700 亿个参数。模型的训练过程比推理过程复杂得多,计算量极大。以 llama-2-70B 为例,大概需要从互联网抓取约 10T 的文本,将这些文本放到一个 GPU 集群上去执行神经网络的训练过程,整个训练过程大概需要 6000 块 GPU,训练大约 12 天,成本 200 万美元。这个过程可以理解成将互联网上的原始文本压缩成一个 zip 文件,也就是参数文件,这个文件 140G,大概 100 倍的压缩比,但是跟 zip 文件的无损压缩还不同,模型训练是有损压缩,我们最终得到的不是所有知识的完整副本。

图片

​ 以当前最先进的标准来看,上面这些数字还只是菜鸟级别。如果是当前最先进的模型,比如 ChatGPT、Claude 或 Bard 等,这些数字可能是 10 倍之多,训练成本可能是数千万美元甚至数亿美元,以及非常大的 GPU 集群和数据集。获取这些参数的过程非常复杂,而一旦拥有了这些参数,运行这些参数的成本则相对低了很多。

​ 回到主题,这些参数组成了一个大的神经网络,这个神经网络究竟在做什么呢?它的基本任务就是预估一段文本序列中下一个单词。我们可以给模型输入一段文字:我的猫跳上了,分布在网络中的各个参数以其已经定义好的方式进行指定的计算,每个参数都会贡献自己的一份力量,而参数的值可以理解成其重要程度,最终模型会输出下一个词的概率,比如我们可以得到,下一个词是【桌子】的概率是 97%,这就是这个神经网络的基本功能。从数学上可以证明,在预测和压缩之间存在一种密切的关系,如果可以根据给出的一段文字准确的预估下一个单词,这种能力就可以完美的用来压缩数据集。

图片

预估下一个单词看似是一个简单的任务,但对模型来讲其实是一个非常强大的目标,它会迫使模型学习大量的世界知识,并将这些知识压缩在所有的参数中。比如下面这个维基百科的页面,标红部分为信息量较大的单词。设想模型目标是预估下一个单词,那模型需要学习大量的知识并存储在参数里,包括 Ruth Handler 的生平,她是谁,她做了什么等。模型就是通过从海量文本中不断执行预估下一个词的任务,不断调整每个参数的值,来完成知识压缩的目的,而最终确定的 700 亿参数的值,就是压缩这些文本的结果。

2. 模型 Dreams

一旦训练好这些模型,使用就异常简单,模型推理过程就是根据人为提供的文本(称之为 prompt)和已经生成的单词,不断生成下一个单词的过程,这个过程不断迭代,最终生成一篇文章。这个过程称之为模型做梦(dreams),因为这个生成过程相对自由,并不是一个确定性的过程。由于模型是对世界知识的有损压缩,它记住了这个世界的一些知识、一些文本形式、一些固有搭配等,模型会综合利用这些知识、文本形式和固有搭配,来复用或者重新组合创造出新的形式。有些东西它能记住,有些东西它记不住,而我们也不知道它记住了哪些,因此也无法完全确定它生成的结果哪些是正确的,哪些是做梦梦到的,在很多时候,生成的内容像是它从见到的数据分布中梦出来的幻觉,而另一些时候又会惊叹于它可以完美完成我们的任务,就这么神奇。

3. 模型如何工作

关于这个神经网络是如何完成预估下一个词的任务的,这里有点复杂。如下图是神经网络的示意图,也就是常见的 transformer 架构。

在这里插入图片描述

这个模型的神奇之处在于我们可以完全了解其架构,也知道在模型训练的各个阶段执行了什么样的数学运算,但是难点在于,数百亿甚至数千亿的参数分布在整个网络里,应该如何迭代式的调整每一个参数,可以让它们共同合作更好的完成预估下一个单词的任务。最终,我们其实也不知道这些参数究竟在干啥,它们是如何协作来使预估下一个单词的任务完成的越来越好的。

既然很难从微观角度了解每个参数的作用,那我们可以尝试从更高的层次上来思考网络在做什么。训练好的模型内部构建并维护了一套知识数据库,但这个知识库有时候会显得有些奇怪。比如我们去问 ChatGPT,去问 GPT-4(这可能是目前最好的模型了),汤姆·汉克斯的母亲是谁,它会告诉你是玛丽·李·菲佛,这是对的,但如果你问玛丽·李·菲佛的儿子是谁,它会告诉你不知道。这种单向和一维的知识是非常奇怪的,很难去理解这种现象,我们能衡量的更多是这个模型是否有效,以及概率多大等。

总的来说,模型的工作过程并不是确定性的,有时候也很难理解。它不像工程学科,比如汽车,我们对其中的每个部件都了解,其每个动作及结果都可完全预估。我们没办法确切了解模型是如何工作的,虽然有模型可解释性这个研究方向,试图弄清楚模型的所有部件的工作机制,但就目前来讲,某种程度上也许可以做到这一点,但还无法完全做到。所以模型的训练、使用和评估,更多是经验性的,通过给模型不同的输入来观察它生成的文本,并以此来衡量这个模型的效果,仅此而已。

4. 模型微调:真正有用的助理模型

这一趴来讲我们如何获得真正有用的助理模型(assistant)。上面我们讨论的模型更像是一个互联网文档生成器,这是训练的第一阶段,我们称之为预训练。现在我们来讨论训练的第二阶段,我们称之为微调。第一阶段的模型往往并不是太有用,因为在我们实际工作生活中,并不是经常需要生成一些文档或者作文之类的东西,我们更常用到的,是希望给模型提出一些问题,模型能够正确的解答我们的疑问。

获取这类有用的助理模型,在模型训练过程上是基本一致的,也是使用让模型预估下一个单词的任务进行训练,但是,我们可以使用不同规模和内容的数据集。第一阶段我们使用了大量的互联网数据,到了第二阶段,我们开始使用我们自己采集或者书写的文字(通常是问题-答案的pair),通常的做法是公司会雇佣一些人,给他们提供一些指令性的文本,然后要求人们针对给定的指定提出问题,并写下答案(ok,是很好的兼职机会)。

在这里插入图片描述

上图是一个例子,对于模型来讲这就是一条训练样本。这里模拟的是有一个用户和助理模型的对话,用户问是否可以介绍下垄断一词在经济学中的含义,并要求以买方垄断市场为例进行介绍,并引用相关文献。接着是助理模型针对该问题应该给出什么样的解答(注意这里都是人写的,是人们希望助理模型针对这个问题给出的最标准解答是什么,然后模型会根据人工撰写的内容进行学习)。任何想获得一个有用助理模型的人或者公司都可以给模型提供这样的文本供其学习,在这一阶段,我们更看重数据的质量而非数量,相比于预训练阶段动辄几十 T 的互联网数据,这里的数据量通常是万级或者十万级的,但是都是非常高质量的对话数据,这样我们微调出的助理模型,才可以针对我们的问题给出合理的答案【当然预训练阶段对于样本的质量要求也很高,且模型效果很大程度上是受数据质量的影响,但面对几十 T 的互联网数据,人们所能做的也只有筛选掉明显不合适的黄暴或涉政文本,或者不通顺、包含大量特殊符号的垃圾文本,难以做到真正的高质量】。

经过了微调阶段,我们就得到了真正有用的助理模型。比如下面这个例子,用户输入:可以帮我看下这段代码里有什么错误吗?print("hello world)。通过微调后的助理模型,此时就知道正确的回答是告诉用户最后这段代码里具体的错误位置。这里的助理模型,就已经发生了模式上的转变,从第一阶段的文档生成器式的模型,转变成一个可以回答问题的模型。模型在第二阶段的训练过程中未必见过这些问题,但仍然可以正确的回答这些问题,这是个奇特的现象,至今为止也没办法完全理解,更多也是基于经验的一些解答,就是模型在第二阶段训练完成后,模式上变成了可以回答问题的新模型,但是仍然保存着第一阶段训练时见到的海量互联网文本里包含的知识,并可以将这些知识用在回答问题上。

简而言之,第一阶段预训练阶段,模型使用海量互联网数据进行大规模训练,重点在于知识的积累,而第二阶段微调阶段,通常也称之为对齐阶段(alignment),将模型从互联网文本生成器转变成问答形式,从一个呆板的文档生成器摇身一变成一个可靠的有问必答的助手,这两个阶段对于当下我们提到的大模型,都至关重要。

在这里插入图片描述

如上图,总结了大语言模型的两个重要组成部分。第一个部分预训练模型,依赖海量文本和大量 GPU 资源,花费大量的时间和金钱,可以得到一个拥有压缩了世界知识的预训练模型,这个过程异常的昂贵,就算是在 OpenAI 这个级别的公司里,也只能几个月运行一次。

一旦拥有了第一阶段的基础模型,就进入了成本相对低廉的微调阶段,这时可以雇佣一些人或者使用外包来采集我们希望获取的数据,用来微调模型,然后部署、监控、采集 badcase,不断更新这个微调模型,这一阶段的更新周期,往往就是以周甚至是以天来计算了。

经过上面两个阶段,通常就可以得到一个比较好用的助手模型了。但是其实训练还有第三阶段,在第三阶段的微调中,会引入答案的对比。比如一个问题,也许潜在的答案有多个,但是其中一个是最好的,我们可以在这一阶段告诉模型,这个问题的可能答案有哪些,而这些答案的优劣排序是怎样的,对于标注人员来讲,对比多个答案比直接生成答案更容易,而这多个答案有的来自于人为编写,有的是用我们已经训练好的助手模型生成的。模型通过这一阶段的学习,可以让它生成的答案更倾向于人为产生的,这往往可以避免模型产生一些“不好”(比如黄色、暴力、涉政等)的答案。在 OpenAI(当然业界也追随 OpenAI 的叫法),这个过程称之为基于人类反馈的强化学习。第三阶段是可选的,可以让模型变得更好,但这个阶段通常难以训练,需要花费很大的精力调整模型的训练参数。

在这里插入图片描述

上图展示的是 OpenAI 在进行第二阶段训练时提供给采集人员的指令文本,这只是个例子,真实情况可能整个指令文本有数十或者数百页,且非常复杂(ok 这可能不是一个很好的兼职)。

这不仅可能不是一个很好的兼职,渐渐的这些人为采集的工作正在慢慢被机器代替,因为我们手里的语言模型正在越变越好,它们可以直接生成多个答案,可以对这些答案进行对比,可以对你生成的答案进行校验,然后鄙视你为啥会生成这么差劲的答案。这时的人们就变成了一个监督员,只需要监督模型生成内容的质量就可以了(当你监督模型的时候,模型也在监督你)。

5. 业态

在这里插入图片描述

这里是大语言模型的排行榜,目前排在前面的都是一些封闭的模型,我们无法获得模型的权重文件,只能通过网络或者 API 来访问。随之而后的也有一些开源模型Llama、Zephyr 等,效果可能不如前面的模型,不过经过第二阶段的微调,也完全满足大部分公司的场景应用了。这大致就是当前可以看到的行业业态。

二、LLM 的未来

待续

三、LLM 安全性

待续

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

  • 10
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值