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 等,效果可能不如前面的模型,不过经过第二阶段的微调,也完全满足大部分公司的场景应用了。这大致就是当前可以看到的行业业态。

读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

👉AI大模型学习路线汇总👈

大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉大模型实战案例👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉大模型视频和PDF合集👈

观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT猫仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值