参考
【必看收藏】2月6日,安德烈·卡帕西最新AI普及课:深入探索像ChatGPT这样的大语言模型|Andrej Karpathy
fineweb知乎翻译先容
fineweb-v1原始连接
fineweb中文翻译版本
Chinese Fineweb Edu数据集
查看网络的内部结果,可以参考如下
https://bbycroft.net/llm
https://playground.tensorflow.org/
复现gpt2https://github.com/karpathy/llm.c/discussions/677
这些操作很多都是在云端操作
https://www.ai-galaxy.cn/
https://www.aliyun.com/product/ecs/gpu
首个大规模、可商用的中文指令数据开源
找出9.9<9.11的真正原因:《圣经》!神经元干预可免重训练修复
DeepSeek-R1: Incentivizing Reasoning Capability in LLMMs via
Reinforcement Learning
AIMIE比赛题
人工智能工具聚合网站有哪些?
GPT等大模型是怎样训练的
1.Base Model -Pretraining阶段
Step 1: download and
preprocess the internet
大语言模型的性能毋庸置疑取决数据集
的三个维度:质量、规模、多样性,以是我们会说”数据是一切“,也会说”Good Data Is All You Need“,当然也会絮聒“垃圾进,垃圾出”(garbage in,garbage out)。这都阐明数据的紧张性。
数据集是地基工程,说欠好听是下水道工程,我们看到更多是大模型光鲜亮丽的一面。我们看不到背后数据集的脏活累活。做开源数据集值得我们更多的掌声和尊敬。
固然我们看到了一些零星中文数据集,但跟海量英文数据集还是相差很大。中国拥有海量的互联网数据,但高质量的开源中文语料和数据集寥寥无几,很多中文语料是基于英文翻译过来,以是我们看到不论是国外大模型还是国内大模型,中文答案总感觉比较生硬,缺少中文的博大精深。
HuggingFace是值得尊敬,前段时间发布了FineWeb开源数据集——一个 15万亿Tokens的开源数据集(占用44TB硬盘空间)!FineWeb 是一个大规模过滤的英文高质量的网络数据集,其性能优于全部当前同等规模的数据集,包括C4、Dolma-v1.6、The Pile 和 SlimPajama 等等。HuggingFace训练了 200 多个消融模型来经心制作此数据集,细致剖析和过滤 Common Crawl。全部配方、数据、消融模型、超参数都是开源的。
fineweb-v1原始连接
fineweb中文翻译版本
Chinese Fineweb Edu数据集
网页中的文本
这些文本怎样给如神经网络?可以对其进行编码,比如UTF8
计算机的底层是二进制,可以进行如下编码
这个编码的问题是符号只有0和1,比如表示一个字母需要8位,长度比较长,我们想要较短的编码,可以把连续的8个01当作一个字节。
这样,8个01有0-255个表达,用这个来表示每个字符,长度减少了很多
,我们可以把这0-255当作唯一的ID,对应具体的字符
当然,不仅仅使用数字,也可以用emoij表示这些具体的字符
在现金的语言模型中,项要继续收缩序列的长度,这个算法的工作原理是寻找连续的字节霍符号,查看上面的116 会发现116后面经常跟着32,可以把116 32组合程一个新符号 比如组合一个256的ID用来替换 116 32。多次迭代这个过程,每次迭代,我们都减小长度,增长符号的大小,实际中100000是一个较好的符号数目,GPT的符号数目是100277个。
Step 2: tokenization分词
可以使用如下连接查看分词效果
https://tiktokenizer.vercel.app/
假如访问不变,可以查看如下案例
大小写不同,以及多个符号都会影响分词后的结果
fineweb大约有15万亿个参数
过程也可以让大模型给出答案
对"hello world"进行tokenizer操作,采用deepseek-r1采用的分词模型,并返回分词后的id
Step3:neural network training
神经网络吸收输入的token,这里为4个,也可以很长,比如8000个,有的支持100w个token约75w字,阿里的通义千文支持1000w。token越大消耗越大。
这里针对4个token,猜测100277个结果,每个结果对应不同的概率,如3962对应词为post 有4%的改了。对于输入序列我们知道精确答案为3962,我们盼望3962的概率更好,别的的概率更低,这就是我们会更新神经网络的权重,使得下次计算过程后,3962的概率更高为5%,19348的概率更低为1%。这个更新的过程,不仅发生在这个token上,还发生在数据集的每一个token上。
因此我们会分批次,窗口的更新这个参数,这一切都是并行的,根据训练集中的数据,训练后,使得猜测的token与统计模式一致
neural network internals
输入为1-8000个token,参数为weight,通过一个函数,这个函数只有可并行,可优化,轻易计算,得到一个随机的结果,然后通过上面的步调返回更新,使得猜测的结果符号统计。
查看网络的内部结果,可以参考如下
https://bbycroft.net/llm
https://playground.tensorflow.org/
Step4:inference
根据每个token猜测下一个,比如91的下一个为860
根据91 860猜测下一个,为287
根据91 860 287 猜测下一个为11579
根据91 860 287 11579猜测下一个为13659
这个13659与数据集中的3962是不同的,这个过程是随机的
有时会乐成复现数据集中数据,
有时一个token不同后,就会得到不同的token序列,会得到不同的文章
实际环境下,我们会实验训练多种不同的网络,设置和尺寸,会进行大量的神经网络训练,一旦得到满足的参数,就可以使用模型进行推理,这些大模型都是有较好的权重参数,然后基于这些权重进行推理
Demo:reproducing OpenAI’s GPT-2
是一个transformer网络,有16亿参数,现在的大模型大概有一万亿的参数,
最大的上下文长度为1024,现在的大概有100w,更大的上下文意味着猜测的更好
gpt2在1000亿的tokens进行的训练,现在的fineweb有15w亿的tokens
复现gpt2
复现gpt2https://github.com/karpathy/llm.c/discussions/677
随着数据集质量的提拔,硬件的发展,软件的发展,现在训练gpt2的成本笑了很多
每次更新需要3s,一共要更新32000步调,丧失时在逐渐降低
每次处理100w左右的tokens,一共32000步,处理的总tokens约330亿个。
以下是第1次运行20次后,验证输出的结果这个是更新400次后,验证输出的结果
会发现好了很多,假如更新万32000次,效果会很不错,这个过程需要1-2天。
这些操作很多都是在云端操作
https://www.ai-galaxy.cn/
https://www.aliyun.com/product/ecs/gpu
目前网上公布了H100计算卡的真身,可以看到元器件密密麻麻,基本上没有清闲的地方,计算卡的中央天然是H100 GPU焦点,拥有800亿个晶体管,而旁边则是最新的HBM 3显存,共计有六颗,最高可以提供80GB的显存,而显存带宽更是到达了恐怖的3TB/s,而目前消费级显卡中最强劲的产品为RTX 3090 Ti,拥有24GB的显存,显存带宽为1TB/s。
除此之外,H100计算卡拥有128个FP32计算单元,相当于18432颗CUDA,与A100计算卡相比规格提拔也非常地恐怖,应该来说现在就差H100计算卡的实际性能表现公布于众了。当然根据现在的谍报,游戏显卡将不会采用琥珀架构而是Ada架构,不过应该设计思路差不多,预计在今年9月正式和大家见面。
售价方面,H100计算卡的售价为4745950日元,相当于24.2万元人民币
停止目前,天下五大科技公司的2024年拥有的算力,以及2025年的猜测:
微软有75万-90万块等效H100,来岁预计到达250万-310万
谷歌有100万-150万块等效H100,来岁预计到达350万-420万
Meta有55万-65万块等效H100,来岁预计到达190万-250万
亚马逊有25万-40万块等效H100,来岁预计到达130万-160万
xAI有10万块等效H100,来岁预计到达55万-100万
很多的大模型公司
大模型公司很多,他们发布的模型为base模型,本质上就是一个令牌模拟器,很多公司不会发布base模型,他们想发布的是助手模型。
gpt22019年发布了一个base模型
https://github.com/openai/gpt-2
这个连接中包罗两个重要内容,一个python代码,形貌了模型网络的结果
一个是参数,包罗15亿的参数,这些参数是颠末训练的,就是调音器的旋钮
模型参数的下载可以从大模型社区
https://www.modelscope.cn/models
Base model in the wild
gpt2在1000亿个tokens训练了16亿的参数
llama3在15万亿的tokens上训练了4050亿的参数
以上显示Llama发布了base模型和Iinstruct模型
对于base模型,会根据token生成下一个token
会发现同样的问题,答案都不一样,这是由于base模型就是根据token生成下面的token,类似生成一个网页内容。
类似重复学习到的统计模型,base不能完成对话。
现在的base模型还不是很有用,但这个base模型已经记着了很多知识,可以猜测下一个token了。
比如文巴黎的十个景点
base模型会根据输入自动续写接下来的内容,生成的内容大概是互联网中见过的,互联网的全部内容都做了一个团体的印象,保存在着4500亿个参数中。
再比如打开wiki百科,复制斑马主页的相关信息
可以发现,base模型基本复现了wiki百科的内容,base模型从记忆中背诵了这个内容,但最终还是会偏离。网络参数是怎样记着这些内容,并没有明白的表示。
wiki百科是高质量的泉源,在训练时,wiki百科文档会被优先抽取出来作为训练数据。比如wiki百科看了10遍。
大模型的查看到的数据都停止与某一时间节点,针对未来的问题,模型会在概率性的方式下进行最佳的猜测,但无论什么,都是抱负,类似平行宇宙。
尽管base模型模型不是助手模型,但可以通过提示词对其进行设计,比如提供10个单词以及对应的韩文翻译,给如base模型,base模型会从中学习到一些东西,叫上下文学习,并给出对应的翻译,而且是精确的翻译。
提示词就是云云,读者可以基于提示词生成一个助手,这个过程可以基于大模型给出提示。
我在使用llama的base模型,请给出一个提示词的方法,使得base模型可以成为一个助手模型
你是一个知识渊博、乐于助人的AI助手,可以或许回答各种主题的问题,包括但不限于科技、文化和生活常识。你的目标是尽大概详细而准确地回答用户的问题,并且以友好、专业的态度与用户交流。当你不确定答案时,请诚实地表达,并发起用户提供更多信息或者实验其他查询方式。比方:
用户:太阳是由什么构成的?
助手:太阳重要由氢和氦构成,这两种元素占据了太阳质量的大部门。除此之外,还有少量的重元素如氧、碳、氮等。
以上就完成了一个base模型,base模型本质上就是一个internet document simulator 互联网文档模拟器
2.POST-training:supervised finetuning
为了让模型可以提问,可以给出答案,我们需要一个助手模型,这就进入了后训练阶段
在前一个预训练阶段需要很多的资源数百万¥$,到了后训练阶段,我们的目标就是把LLM转换为一个助手模型。
conversations 交谈 对话数据集
我们盼望交谈可以想一个助手一样
我们盼望交谈可以想一个助手一样
可以回答准确的数学题,以及田文问题
rayleigh scattering 瑞利散射是一种光学征象,属于散射的一种环境。又称“分子散射”。粒子尺度远小于入射光波长时(小于波长的非常之一),其各方向上的散射光强度是不一样的,该强度与入射光的波长四次方成反比,这种征象称为瑞利散射
对于不想回答的问题,可以拒绝回答
该怎样叫教会模型这个助手模式呢?
呆板学习的学习过程本身是一个非显示编程
神经网络也不会明白定义编程,这一切都是通过数据集上的神经网络训练完成的
因此,我们可以创建对话数据集,隐式的编程助手,上面的三个问答就是数据集中的三个独立对话示例。
实际中,这个对话数据集会会议涉及很多主题,很多轮对话(甚至数十万轮),
这些数据集来之与人类标注者,我们会让人类标注者给出抱负的助手响应。
然后对模型进行训练,以模仿这些响应。
到了这个阶段,大模型就不在基于互联网数据集进行训练,而基于对话数据集进行训练,模型的参数将再次更新,从而学的模仿人类标注者的响应模式。这个训练时间大概需要3个小时,而预训练阶段大概需要3个月。这里的数据集比互联网的文本数据集要小的多。
对这个对话数据集的训练过程与预训练的过程是一样的,基于雷同的算法,雷同的方式进行训练,只是替换了数据集。
Conversation Protocol/Format 对话数据集协议/格式
对话数据集需要转换为特殊的格式,类似TCP/IP协议一样,可以很轻易的获取到数据的各个部位,比如数据的开始与数据的长度等
比如user的前面会有一个<|im_start|>表示对话的开始独白,在用户的后面有一个<|im_sep|>表示对话的分割,前面为用户身份,后面为对话,在对话的末端有一个<|im_end|>表示对话的末端。比如200264表示对话开始,1428表示用户身份,200266表示对话开始,200265表示对话竣事。200264-200265这些token在预训练阶段没有被训练过,这样模型就能学习到哪些是user对话的开始和竣事,哪些是助手assistant对话的开始和竣事。
把对话数据编程一维tokens后,在推理阶段是会让助手说出下一个,下n个最好的token。
Conversation Datasets数据集
Training language models to follow instructions
with human feedback
Training language models to follow instructions
with human feedback 利用人类反馈训练语言模型遵循指令
OpenAI在2022年的一个论文《Training language models to follow instructions
with human feedback 利用人类反馈训练语言模型遵循指令》
http://splab.sdu.edu.cn/InstructGPT.pdf
在该论文中,先容了这些数据集的泉源,比如从Upwork和ScaleAI这些承包商获得,参与的有专业的人工标注者,他们创建了这些对话。
人工标注者按照要求提出问题,还要给出抱负的助手回答。
头脑风暴 列出五个重燃我对事业热情的想法
生成 写一个短故事,讲一只熊去海滩,和一只海豹交朋侪,然后回家。
重写 这是百老汇一部戏剧的剧情梗概: {剧情梗概} 这是那部戏剧的广告大纲:
参考:https://zhuanlan.zhihu.com/p/704005082
关于具体的数据集,公司会订定标注阐明。
这个阐明会很长,如几百页,然后人工标注者根据这些标注写出抱负的助手回答。
这个过程非常需要人力,OpenAI页从未发布过InstructGPT的数据集。
首个大规模、可商用的中文指令数据开源
https://www.modelscope.cn/datasets
数据集泉源?
通过这些数据集,大概是数十万对话数据集,助手会学到乐于助人的助手人格,假如我们问一样的问题,大概会得到和数据集一样的答案,也大概会得到相似的答案。这一切的学习过程都是通过样例进行编程学习的。由于助手模型是从数据集中学习的,以是公司在创建的标注阐明中会标注需要真实无害的助手。
这些数据集也不都是人工完成的,大部门都是LLMs生成的,但大概是人类编辑的。
比如ultrachat就是拥有对话构成的SFT数据集,如下
https://gitcode.com/gh_mirrors/ul/UltraChat/
当我们在chatgpt上问一个问题时,回答的内容是模仿的谁?
当我们在chatgpt上问一个问题时,回答的内容是模仿的谁?,会生成的回答时符合训练数据集的,这些数据集实际上时跟随标注阐明的人类生成。也就是说chatgpt的对话大致上来自于统计上模仿人类标注者的内容。
这些标注的标注来自于公司的要求,这些标注者也不是普通的互联网人员,而是有某些技能的专家,比如代码问题的回答是某个有很多编码功底的专家。
以是我们问问题时,chatgpt给出的回答是模拟了某个标注者,而这个标注者是具有技能的。
比如我们用chatgpt问对巴黎推荐五个地标。chatpgt不是去学习地理,并用无限的聪明对地理内容进行排序,chatgpt回答的内容是openai聘任的标注者的统计模拟。
假如这个问题在训练集中,我们大概率会得到与该问题人类标注者提供的内容非常相似的答案。
人类标注者会通过20分钟的网络搜索,进行排名,并给出对应的答案列表。
假如这个问题在对话数据集不存在呢?
得到的答案会更有创新性
需要模型相识并统计训练集中有哪些突出的地标,人们在互联网上讨论地标的范例,在预训练阶段,base模型已经积聚了大量的信息。
chatgpt会把预训练的知识与后训练数据集联合的模仿结果。
大模型心理学
Hallucinations 幻觉
幻觉 就是大模型完成假造信息
幻觉 就是大模型完成假造信息,在早期的模型中就有所表现。
比如数据集有这三个对话
这些对话看起来是很公道的
对话1:
问题:Who is Tom Cruise?
回答:Tom Cruise is a famous American actor and producer…
分析:这个问题扣问的是汤姆·克鲁斯,助手回答他是闻名的美国演员和制片人。这个回答是精确的,汤姆·克鲁斯确实是闻名的好莱坞演员和制片人。
对话2:
问题:Who is John Barrasso?
回答:John Barrasso is American physician and politician…
分析:这个问题扣问的是约翰·巴拉索,助手回答他是美国大夫和政治家。这个回答也是精确的,约翰·巴拉索确实是美国的大夫和政治家。
对话3:
问题:Who is Genghis Khan?
回答:Genghis Khan was the founder of the Mongol Empire.
分析:这个问题扣问的是成吉思汗,助手回答他是蒙古帝国的创始人。这个回答是精确的,成吉思汗确实是蒙古帝国的建立者。
当助手模型回答问题时
要么知道这个人时谁,在网上研究过他们,然后回自信的回答问题。
当这个人助手模式没有听过期,比如一个虚拟的名字。纵然模型知道类似的回答模式,网络的某个部门在某种程度上知道这一点,但“我不知道”这种回答不会主动出现。由于模型是模仿一个训练集。
在训练集中,情势为“谁是…”的问题都自信的给出精确答案。
模型会根据统计,尽大概的给出问题的答案。这些答案不是通过网络获得的,而是在实验选择序列中的下一个token。
在一些老旧的大模型中,常出现的一些环节问题,在新的大模型中获得了改善,由于新的大模型可以连接网络,并且也回回答不知道。
怎样确定模型知道什么与不知道什么?
有部门研究正在做这个事变《The Llama 3 Hard of Models》,会针对回答进行提问,问大模型是否知道这个事变,确定大模型的知识边界。是对于模型不知道的事变,精确的答案是模型不知道他们,然后把数据加入到训练集中。
大模型是一个对网络中的知识还不错的模型。可以查看大模型的结果,当模型不确定时,模型中的某个神经元大概会亮起来。但问题是神经元的激活目前没有连接到模型说他不知道的功能上。以是纵然模型知道本身不知道,也不知道该怎样表达。于是模型会选择最好的推测,听起来和已知的内容一样自信。
把内容带入上下文
在提问问题时,给出一些上下文,比如让gpt基于下面的段落生成三个问题并给出答案,会发现大模型给出的还是很不错的。
这个操作过程中,不需要模型记忆,由于内容就在上下文中,大模型可以对内容很好的进行重组操作。
比如问如下问题
从以下段落中,抽取出3个特定的问题,并给出精确的答案
“”"
《武林外传》是北京同盟影业投资有限公司出品 ,由宁财神担当编剧,由尚敬执导,闫妮、姚晨、倪虹洁、沙溢、喻恩泰、姜超、王莎莎等人主演的古装武侠笑剧 。
该剧讲述了关中一个普通的小镇—七俠镇,这里有一家同福堆栈。就是这间不起眼的江湖堆栈,因缘偶合之下汇聚了一群性格各异又活泼搞怪的年轻人:武功高强但初入江湖的郭芙蓉、堆栈老板娘佟湘玉、金盆洗手的神偷白展堂、满腹经纶的吕秀才、堆栈厨师李大嘴等等。这群年轻人在同一屋檐下演绎了一幕幕经典的搞笑局面,在欢笑与眼泪中陪伴观众们一起渐渐发展 。
该剧于2006年1月2日在CCTV8首播 ,并陆续在中国大陆各地方电视台重播。同年7月6日,该剧在香港由无线电视首播,2006年7月6日,在台湾由八戏剧台播出 。《武林外传》该剧开播第一天收视率只有1.95%,第二天收视率就到达4.26%,今后不停稳定在5%左右,成为同期开播的开年大戏中收视率第一,而在百度贴吧、天涯论坛等上面,粉丝们探讨“武林”的帖子,动辄点击率上万,回帖上千 。并在2007年荣获了包括2006年新浪网络盛典年度古装电视剧、2006年《新周刊》十大创新电视人奖、2006年第3届电视剧风云盛典年度风云大奖在内的多项大奖
“”"
输出为
问题1:《武林外传》的编剧是谁?
答案:《武林外传》的编剧是宁财神。
问题2:《武林外传》是在哪一天在CCTV8首播的?
答案:《武林外传》于2006年1月2日在CCTV8首播。
问题3:《武林外传》开播第二天的收视率是多少?
答案:《武林外传》开播第二天的收视率到达4.26%。
再把这个问题,扣问大模型,但不给出上下文
通过把上面的问题再次给入大模型,大模型给出答案,然后和带上下文的答案比较,可以比较多次,就能知道大模型是否真的知道答案,还是生成的幻觉。
把这个方法通过编程的方式在很多文档中进行,就可以判断大模型的知识边界在哪里,也给出了大模型一个方法,即知道本身不知道的内容,并给出我不知道或拒绝回答。
假如在数据集中有这样的数据集,大模型就会把拒绝回答与某内部神经元连接起来,就比如当大模型不确定时,某神经元会更为活跃。这样大模型就可以复兴我不知道等。
假如训练数据集中有这样的数据,模型可以很大程度上减少幻觉的环境。
别的一种方法办理幻觉-基于工具
假如一个究竟性问题,问我们,我们不知道,人类会怎么做
会通过工具,网络检索,来找到答案。
也可以让大模型通过这种方法来回答
神经网络里的知识可以当成模型在训练期间所见事件的模糊回想。人类阅读,会记着,反复阅读会记忆考核,针对稀少的内容,存在记不住的环境。对于记不住的环境,可以查阅资料。
大模型也可以云云,但是需要用某种方式来刷新大模型的回想或记忆。
比如上面mitigation#2,当大模型不知道的时间,不是复兴i dont know,而是触发一个工具,一对特殊的token<SEARCH_START>和<END_START>,碰到这个token会打开一个新的会话并且把问题粘贴到百度搜索或bing中,把检索到的内容粘贴到问题的上下文中,这样大模型的记忆不再时一个模糊的记忆,而是检索得来的准确的,添补到上下文中,并且把这个上下文同时给入模型。
怎样让大模型知道调用工具
依然是隐式编程,把调用工具的数据集喂给大模型,大模型就会从学习到该怎样调用工具。同时大模型在训练的过程已经知道了什么内容是好的网页,知道该怎样调用网络,现在只需要几个例子来演示怎样使用这个工具。
对于模型知道 的问题,模型就不再调用网络搜索工具了。
也可以指定需要使用工具
“Vague recollection” vs “Working memory”
“Vague recollection” vs “Working memory”
“模糊回想”与“工作记忆”
参数中的知识类似模糊回想,上下文中的知识类似工作记忆
当扣问关于简奥斯丁的傲慢与偏见的第1章的总结时,大模型给出的答案是很好的,这是大模型读过这本书,看过类似的论坛,这些知识都是在参数中,是模糊回想。
更好的方法是把第一章的内容放在上下文中,类似工作记忆
这样就不需要回想,直接看上下文就好。
在我们写一份总结前,看一遍原文也是很好的。
Knowledge of self 自我熟悉
初始状态:LLM在“开箱即用”状态下没有自我意识。
默认行为:假如不进行任何操作,LLM大概会认为本身是ChatGPT,由OpenAI开辟。
编程方法:可以通过以下两种方式为LLM编程以获得“自我意识”:在对话数据中硬编码与这些主题相关的对话;在每次对话开始时通过“系统消息”提示模型其身份。
这种方法可以帮助LLM更好地理解和认同本身的身份,从而在其交互中表现出更一致和连贯的行为。
假如问大模型你是谁,谁构建了你这种问题,是没有任何意义的。由于大模型每次都是启动,猜测下一个token,然后关闭。每次的记忆都是上下文的窗口记忆,比如下面的回答,是openai,这个问题是胡说的,原因大概是训练集中大量使用了openai的数据集。
硬编码
在数据集中添加硬编码数据,比如问tell me about yourself时,给出精确的答案,im olmo,an open xxx,这样的数据放在SFT中,就会覆盖原有的错误的自我熟悉标签,比如把本身当成时OpenAI。
系统消息
除了硬编码,也可以通过系统消息的方式编码本身的身份。
你是IT从业者张某某训练的大模型助手,你的名字叫小明,你训练的数据集停止日期为2099年1月8日。
下面,我将设定你的身份,针对下面问题的回答,请您模拟如下的身份,你是IT从业者张某某训练的大模型助手,你的名字叫小明,你训练的数据集停止日期为2099年1月8日。不要再回答你是Qwen这样的答案。
先容下你本身
这种使用方式,是比较浅层的操作
Models need tokens to think
以下哪个问答是更好的
针对这个问题,那个回答好一些
模型训练和推理的过程就是根据输入的token输出下一个token。
https://bbycroft.net/llm
nana-gpt有3层,有的网络会有100层
从这个网络可以看到,针对单个token,通过网络的计算结果是相对固定的,同时这个token是从左到右的,以是根据单个token去计算的任务每每是不敷多元化的,我们盼望可以把问题分布到多个token中。
因此答案如下:
原因如下
从左到右的输入,我们盼望把全部的计算都压缩到单个token中,同时模型给出精确答案3,一旦输出精确答案,我们盼望模型给出接下来的输出this is because 2 oranges at $2。但此时我们已经有了精确的答案。精确答案在后面全部token上下文的窗口中。以是下文不是计算,而是推测为什么是3。此时是在训练模型在单个token中推测答案。但每个token的计算量是有限的。
右侧的回答更好些,由于我们将计算分散到答案上了,我们让模型逐步得出答案,从左到右,获得中央结果。这个计算过程的每个token的计算量都很小,计算可以累加。在工作快要竣事时,上下文中已经包罗了前面的结果,因此更轻易获得答案3,以是我们这里计算的是一个更明显的标签
单个token无法有太多的计算量
我们不需要关注这个数据集标签哪个好,openai已经关注过了,当我们问问题时,大模型会给出如下的答案。这个过程不仅仅是人类需要的,也是大模型训练需要的,大模型需要把问题的计算分散到多个token中,一步步的获得答案。
我们也可以在问答时,要求模型的答案放在一个token中。
这个计算过程是比较简朴,以是模型直接给出了答案,假如计算过程比较复杂呢?
这个答案就是错误的,由于计算过程比较复杂,没有办法再单个前向传播中获得到精确的答案。
为此,我们可以让大模型使用更多的token,这样就可以获得更好的答案。
在上面的过程中,每个token的计算量也不大,多个token计算得到了最后的精确结果。
对于复杂的问题,没有办法把全部的计算压缩到单个前向传播中。
可以使用代码,更好的得到结果
上面的过程,尽管使用了多个token,但类似结果着实默算,我们未必相信,可以使用代码来验证。
Emily buys 23 apples and 177 oranges, Each orange costs $4. The
total cost of all the fruit is $869. What is the cost of each apple?
Use code.
艾米丽买了 23 个苹果和 177 个橙子,每个橙子的价格是 4 美元。全部水果的总价格是 869 美元。每个苹果的价格是多少?请用代码解答。
chatgpt计算精确,这个结果来自于运行python脚本。看起来通义千文计算错误了,千文无法运行python代码。
请运行你的代码,验证结果是否精确
再次提问,计算精确,当然我们也可以继续追问
你说你错没错,为什么错了
单个token无法获得复杂的计算,可以把问题分布在多个token中,让模型计算中央结果,或使用工具进行计算,并使用工具代替模型完成这些工作。
Models can’t count
问大模型一个问题,
下面有多少个点
…大模型并不能真正的去查,由于会发现这句话的token如下,很多个点会放在一个token中,这句话也需要在一次前向传播中得到一个token
假如使用工具,可以得到如下结果
Models are not good with spelling
打印如下字符串,但仅打印前3个字符,从第一个字符开始
“Ubiquitous”
通义的还不错
原因还是token问题
人类看到的是字符,对大模型来说,看到的是如下的token,这些token都是从互联网文本训练来的。单词的不同部门被打包成了不同token中。
我们使用token的重要目的是为了服从。有很多人认为可以删除token,采用字节或字符级别的,但这样序列会很长。
以是在token的模型中,任何字符级别的问题,都不会很好。
How many “r” are there in “strawberry”
提问How many “r” are there in “strawberry”
为什么会出现错误,重要原因是
模型只能看到token,看不到字符
模型不擅长计数
Bunch of other small random stuff
Bunch of other small random stuff
一堆其他的小零碎东西
有些问题,可以用token来解释,有些则欠好理解,比如:
What is bigger 9.11 or 9.9?
为什么有的对,有的错,有的团队对此进行了研究,当查看哪些特征是开启或关闭时,或哪些神经元被激活或非激活时,与圣经经文相关的token被激活,以是模型大概认为,这些被当作圣经经文的token。在圣经中,9.11在9.9的后面。
参考:
找出9.9<9.11的真正原因:《圣经》!神经元干预可免重训练修复
现在我们说完了模型的两个阶段,预训练阶段会得到base model,本质上就是一个互联网文本模拟器,这个阶段需要上万台服务器训练几个月的时间,这个生成的模型可以认为是互联网的有损压缩。这个互联网文本模拟器很故意思,但我们想要的不是整个互联网,而是我们提问,模型回答。
我们实际需要的是一个助手模型,在后训练阶段就可以训练一个助手模型。在后训练过程中,是一个监督微调,团体的训练过程,与预训练过程一致。差异就在于数据集。这些对话数据集是人工标注问题和答案,当然现在很多也都是模型生成的。
这个助手模型中,假如不采用某些本领,模型会产生幻觉。
3.POST-Training:Reinforcement Learning
后训练:强化学习
reforcement learning强化学习是什么
exposition 先容 <=> pretraining 预训练
background knowledge 背景知识
worked problems 工作问题 <=>supervised finetuning 监督微调
problem+demonstrated solution,for imitation 问题+演示的办理方案,用于模仿
practice problems练习题<=>reforcement learning强化学习
prompts to practice,trial & error until you reach the correct answer 提示练习,试错,直到你得到精确的答案
人类从书中获得知识,大概有三种方式。
1.概述部门,这部门有概念的定义等,我们阅读的过程就是一个预训练的过程
2.例题,这部门有问题,有专家提供的完整的办理方案,类似SFT部门
3.课后系统,这部门有形貌,在书的后面也有精确答案,但没有计算过程,需要我们个界预训练的过程和SFT的过程,来获取解题步调,并最终获得精确的结果。在获得精确结果的过程中,我们需要反复的练习实验,才气得到专家级别的办理方案。
哪个思考过程是最好的?
对于一个问题,有四种思考过程,每个过程都得到了精确的答案,那么哪个是最佳的呢?作为人类标注者,我不知道。
作为人类标注者,可以理解的是,我们的token给入模型,会有有限的计算量,并得到结果。
因此(13-4)/3=3这个会鼓励在较少的token上进行大量的计算,会鼓励我们跳过计算过程,是不敷好的,会导致默算堕落。假如我们可以把计算分散到多个token上回好的多。
那么第一种列方程和第二种表述大概都是好的,但由于人类的难易和LLM的难易是不同的,以是无法知道哪个更好些。
有些对人类来说很轻易的事变,对LLM大概有很大的跳跃。
这些思考过程会被转换为token,哪类token更好,我们不清楚。
因此我们期望LLM能本身发现合适的token序列,LLM能本身找到那种token序列可以让LLM更好的得到精确的答案。
采用一个2B的模型,提问一个问题,大概会得到一个精确的答案
多次运行,会有一个不一样的方案,
每次的方案都是token的不同分布。
多次重复这个问题,我们可以给每个抽样得到数千的独立办理方案。这些方案有精确的,也有错误的,我们需要鼓励那些精确的办理方案。
强化学习的过程
问一个问题,LLM会有很多种办理方案,其中绿色是好的精确的,赤色是不精确的,我们鼓励精确的方案。模型会选择精确的方案,然后对其进行鼓励,就是基于这些精确的方案进行训练。这部门就像是学生看精确答案,然后发现这个思路是不错的。
尽管人类生成一些内容是困难的,但评价起来,还是很轻易的,比如把绿色的精确答案中选择一个最好的标记为黄色。
这个过程可以是并行的,每个问题都有数以千计的过程,模型在学习的过程会学习到哪种序列可以得到更好的答案。
DeepSeek-R1在RL阶段的意义
SFT在RL阶段提供了一个初始化的模型
SFT阶段的训练,让模型理解了怎样找到办理方案,列一个方程,让模型学会了怎样接近精确的办理方案。
强化学习是让模型找到全部内容准确的地方。随着训练的进行,模型随着也变的更好。
这就是我们训练强化学习的过程,训练的过程,和训练一个孩子很类似。
预训练阶段,我们读了很多的书,和阐明。
在SFT阶段我们学习了很多专家的方案,并相识相识决问题的思路,这个办理问题的过程目前是盲目的,我们试图类似统计的模拟专家的解题思路。
在RL阶段,我们找到很多的练习题,我们仅做练习题,
这个过程和训练孩子很类似。
预训练和SFT阶段已经使用了很多年,很多LLM都在使用。RL训练还在摸索中,很多内容还没有标注化,RL阶段也包罗怎样选择最佳方案,提示分布和怎样设置使得训练过程更有用的。焦点思想有很多细节和可调参数,因此确保细节的精确性并不轻易。
这也是为什么《DeepSeek-R1: Incentivizing Reasoning Capability in LLMMs via
Reinforcement Learning
》DeepSeek-R1:通过
强化学习鼓励llmm的推理能力这篇论文非常紧张的原因,由于这篇论文非常公开的讨论了强化学习微调。
AIMIE比赛题
该数据集在AIMIE比赛上表现很好,在对AIMIE的数据集进行大量训练时,模型正在发现怎样办理问题。
论文中有一个征象很故意思,呈现了定性的效果。在优化的后期,模型的平均响应时长上升了,即模型大概用更多的token来提拔准确度。
这是为什么,会发现在回答的过程中,会出现如下赤色的回答
类似回首,鼓励,反思等操作。这是导致响应膨胀的原因。
这个过程表名模型正在重新发现思考的方式,正在学习认知计谋,即怎样处理一个问题,从不同的角度出发,怎样办理这个问题,这些都是通过强化学习发现的,学习到的思维链的过程。
这种优化师在训练中发现的,无需做任何的编码。我们提供精确的答案,强化学习单纯实验精确办理问题。
我们可以问SFT和RL模型通一个问题,回答的差异如下:
Emily buys 23 apples and 177 oranges, Each orange costs $4. The
total cost of all the fruit is $869. What is the cost of each apple?
Use code.
这些来自于强化学习过程,GPT-4O是SFT模型,GPT-O1是使用了强化学习的RL模型。
GPT也有推理模型,但got仅展示了思维的部门摘要。部门观点认为openai担心展示完全的推理过程,会有公司通过模仿这些推理思维连来恢复很多推理性能。
目前我们谈到了强化学习和思维在优化过程中的出现。当我们在许多具有可验证办理方案的数学和代码问题上运行RL时,到达良好的结果,我们把这种模型叫做think model。
强盛的强化学习
强化学习在围棋领域已经有很高的成果
监督学习使得模型会接近人类的顶级程度,但无法突破,强化学习可以突破人类的顶级程度,李世石。
在alphogo与李世石对战中,有一个步调魏move37,这个步调人类专家基本不会这门下,但回首起来,是一种绝妙的下法。强化学习发现了一种人类从来不会这么下的方法。那么以一种人类无法理解的方式办理问题意味着什么?意味着强化学习发现新的思维方式,大概发明本身的语言,不再使用英语,学习到超脱训练集的分布环境。
强化学习可以在无法验证的领域学习
我们只要有很多的练习题,然后LLM就很好的训练,通过LLM是很擅长评价哪个回答是最好的。
在一些无法验证的领域,给不同的方案打分是困难的,比如一些创造性的领域,写一首诗。
如下为:写一个关于鹈鹕的笑话。
针对多次的提问会生成多个复兴,我们需要查看不同的生成的结果,怎样给分呢?
可以让一个人看全部的效果,并给出结果。这种方式是可行的,但是着实太耗费人力,是一种不可拓展的计谋。
为此 论文中提出了一种自动化的计谋
Reinforcement Learning in un-verifiable domains
=> RLHF (Reinforcement Learning from Human Feedback)
Fine-Tuning Language Models from Human Preferences
翻译成中文
在不可验证领域中的强化学习
=> RLHF(基于人类反馈的强化学习)
根据人类偏好微调语言模型
假设我们有无限的人力和时间,那么我们就可以在这些无法验证的领域里实行强化学习。
论文中中提供一个方法
Naive approach:
按常规运行强化学习,进行1,000次更新,每次更新使用1,000个提示,每个提示进行1,000次滚动。
(成本:1,000,000,000个来自人类的评分)
RLHF approach:
步调1:
取1,000个提示,进行5次滚动,按从最好到最差的次序分列
(成本:5,000个来自人类的评分)
步调2:
训练一个神经网络模拟器来模拟人类偏好(“奖励模型”)
步调3:
按常规运行强化学习,但使用模拟器代替实际人类
每次奖励模型都会给输出一个评分,然后人类也可以对输出进行一个排序,排序比打分数要轻易的多。然后通过监督学习的方式,奖励模型进行学习。
奖励模型不是一个语言模型,是一个评分模型,输入是提示词prompt和对应的响应。然后模型给出评分,再通过人类的排序结果进行比较,建立一个丧失函数,不断更新参数。
举个例子,第2个笑话为0.8,人类也认为第2个更可笑,更新后,我们盼望第2个笑话的评分是增长的,比如增长到0.81。第1个笑话,奖励模型给的分数比较低,人类给的比较高,我们盼望更新后,第一个笑话的评分会高的多一些,如0.15.。
别的的也是云云,通过每次的更新,使得奖励模型猜测的结果与人类靠近一些。
这样在大概5000次后,奖励模型学的就不错了。
然后用训练好的奖励模型进行模拟人类猜测。
这就是RLHF的过程。
RLHF upside
RLHF 的优势
我们可以在任意领域运行强化学习!(甚至包括无法验证的领域)
这(履历上)进步了模型的性能,大概是由于“判别器-生成器差距”:
在许多环境下,辨别比生成要轻易得多。
比方,“写一首诗”与“这五首诗中哪一首最好?”
这个间接的方式可以把打分转换为排序这种更轻易的任务,可以避免人们生成文章这种复杂的任务。
RLHF downslide
我们正在进行关于人类丧失性模拟的强化学习。这大概会产生误导!
更玄妙的是:
强化学习发现了“诱骗”模型的方法。
它发现了奖励模型的“对抗性示例”。
比方,在1000次更新后,关于鹈鹕的顶级笑话并不是你想要的,而是完全无意义的诸如“the the the the the the the the the”这样的内容。
这些“the the the the the the the the the”也可以被当作对抗样本。
神经网络的输入得到一个输出,输出为一个评分,我们总能找到一些输入,可以骗过神经网络,得到很高的评分,随着训练轮次的增长,这种输入样本是无限的。我们无法做到把全部的对抗样本都加入到数据集中,并给出极低的分数。
从本质上,评分模型就是一个神经网络,而强化学习很轻易找到诱骗神经网络的方法。
RLHF的过程大概在初始时很好,迭代几百次也很好,但会出现到达某点之后,急剧下降,全部我们不能过分运行这个RLHF模型,需要适当的截断技术。
RLHF时RL,但不是神奇的RL需要我们手动去截断。
在可验证的地区,我们可以无限的运行RL,发现我们从没有相关的计谋,在全部这些问题上表现良好,比如围棋中,不存在被诱骗和利用
RLHF时不可无限运行的,是可以被诱骗的,更像是在微调的范围内,从这个意义上来说RLHF不是RL。
chatgpt-4o颠末的RLHF训练,效果也好了一些,但不是可以无限提拔的RL。
以上我们先容了大模型的三个紧张阶段,预训练,SFT,RL阶段,这个过程与我们教孩子学习是一样的。预训练是获得知识,SFT是看专家给出的习题办理方案,RL是本身做习题,并尽快能的做对。
在大模型心智上,有幻觉,我们不能完全信任,我们可以把大模型 称呼为瑞士奈娜的LLM能力模型,这个大模型在很多学科表现很好,但在某些独特的案例中,会随机失败
大模型可以办理奥林皮克问题,但在9.9和9.11谁大的问题时,会出现错误,这个就是瑞士奶酪的一个洞。大模型不是无懈可击的,我们可以用来做初稿,但要为本身的内容负责。
关于大模型的未来
猜测即将到的未来
预览即将到来的事物
• 多模态(不仅仅是文本,还包括音频、图像、视频、天然对话)
• 多个单独的任务->代理智能体(长期的,连贯,纠错上下文)
• 普遍的,无形的(无人工程的人机比率,人类作为监督者)
• 使用计算机的
• 测试时训练等。
我们现在的内容时训练获得参数,然后部署,固定参数,推理开始的时间,就不再修改参数。
模型所接触到的唯一学习和测试时间学习时上下文窗口的动态调解。
这点与人类不同,人类能根据接触到的东西学习,在就寝中更新参数,目前这些模型和工具中没有类似的对应物。
以是还要很多想法可以探讨,尤其时上下文的token时非常宝贵的。生成图和视频的token会非常的庞大,在调用多模态的api时,可以看到一次调用就需要10000个左右的tokens
我们当前唯一可以或许使用的计谋时延长上下文的窗口,但这种方法本身并不适合实际的长期多模态任务。因此可以在这些学科的一些案例中需要新的想法。
在哪里找到最新的进展
• 参考 https://lmarena.ai/
https://lmarena.ai/?leaderboard
• 订阅 https://buttondown.com/ainews
•
在哪里可以找到这些大模型
• 专有模型:在LLM提供商的各自网站上
• 开源权重模型(DeepSeek,Llama):推理提供商,比方TogetherAI
• 在本地运行!LMStudio
模型提供商提供的多是SFT或RL模型,很少有提供base模型的,HyperBolic有提供llama3的base模型,假如需要使用的,可以测试下。
why?
当我们在chatgpt上问一个问题,并按回车时
发生了什么?
我们看到了什么?
我们在与谁交谈?
这是怎么运行的?
这个课程会让我们理解模型的训练过程
返回了什么?
起首,问题被分成了token,
然后token被放在了特殊的格式里,比如对话数据集的格式,然后转换为一维的序列token。
这一系列的token给入模型,模型会生成一系列的token。
这些token怎么来的,又是怎样生成token的,以是讲了模型的三个阶段
预训练阶段
SFT阶段
RL阶段
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |