深入探索像ChatGPT这样的大语言模型-01-Base Model-Pretraining阶段
参考
【必看珍藏】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
首个大规模、可商用的中文指令数据开源
GPT等大模型是如何训练的-01-Base Model-Pretraining阶段
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 互联网文档模拟器