第21章 巴別塔(1/2)
隨著风波的平息,深视科技进入了一段难得的平稳期。
公司的api调用量每天都在刷新纪录,现金流像涓涓细流匯成江河般涌入公司帐户。
一切看起来都在轨道上高速运转。
华清嘉园工作室,
陈阳把自己关了起来。
他正在进行一项实验,那就是训练超越这个时代的大语言模型。
陈阳给这场行动取了一个代號:巴別塔。
深夜,客厅。
空调开到18度,陈阳坐在三台並联的显示器前,屏幕上密密麻麻的代码与日誌在流动。
桌上散落著七八个空咖啡杯、三盒吃空的外卖、一堆揉皱的草稿纸。
他已经在这把椅子上坐了十四个小时,眼睛布满血丝,下巴冒出了青色的胡茬。
旁边的写字板上画了一张架构图,密密麻麻的线条和方块,像一张蜘蛛网。
程序早就写好了。
那套他高中暑假就开始设计出来的架构,代码已经调试完毕,理论上完全可行。
但理论与实际能跑之间,隔著一道天堑。
就像你设计了一张火箭的图纸,画得再漂亮,也得真正发射一次才知道能不能上天。
这几天经过实际运行,这是陈阳优化后的第七版了!
“不对,还是不对。“
陈阳揉了揉发酸的眼睛,把第七版也刪掉了。
他靠在椅背上,盯著天花板发呆。
陈阳闭上眼睛,脑子里不断闪过各种画面。
突然,一个念头击中了他。
陈阳猛地坐直了身子。
抓起笔,在一张白纸上疯狂画起来。
“就是这个。“
他转向电脑,开始敲代码。
手指飞快地在键盘上跳动,屏幕上的字符像瀑布一样往下滚。
大模型预训练,说白了就是三个字:餵数据。
要把海量的文字塞进模型里,让它自己去学习语言的规律。
看得越多,学得越好,最后就能像人一样理解和生成文字。
听起来简单?
一点都不简单。
首先,数据从哪来?
陈阳花了快一年时间,让星城那边的团队爬取了整个维基百科、几百万篇新闻报导、上千万条论坛帖子、小说的片段,清洗、去重、格式化,最后整理出三套数据:
第一套,训练集,12.4gb。
这是餵给模型的课本,让它自己从海量文字里自学语言规律。
对,没错就是自己学习,模型一开始是一个什么都不知道的孩子。
然后通过海量数据以及算法反馈。逐渐从数据里面学习规律,最终找到答案。
第二套,验证集。
这是提前准备好的隨堂测验,题目和標准答案都是现成的。
比如给模型一句话:“珠穆朗玛峰多高“,標准答案是:“8848米“。
模型回答完,跟答案一对,就知道它学得怎么样。
验证集有两个用处。
第一,防止死记硬背。
如果模型在课本上的题越做越好,但隨堂测验的分数不涨反降,那就说明它只是在背课本原文,换道新题就懵了。这叫过擬合,得赶紧调整。
第二,判断什么时候该停。
模型不可能无限进步。
学到一定程度,该会的都会了,再学也没什么提升了。
怎么判断到没到这个点?
就看验证集的分数。
一开始,分数会蹭蹭往上涨。
然后涨得越来越慢。最后,曲线变平了,连著好几轮分数都不动了。
这就说明模型训练完成,可以停了。
再往下硬学,就是浪费时间。
第三套,测试集。
这是最后的期末考试。
同样是题目和標准答案,但模型在训练过程中从来没见过这套题。
等训练结束、验证集曲线平稳之后,才拿出这套卷子做最终检验。
为什么要单独留一套?
因为验证集虽然没直接餵给模型,但你一直拿它来调整训练策略,模型多少会间接学到一些规律。就像老师反覆用同一套题摸底,学生慢慢就摸到套路了。
测试集不一样,它从头到尾没告诉过模型。
只有这套全新的题也能考高分,才能证明模型是真的学会了。
三套数据,各司其职。
课本、隨堂测、期末考,缺一不可。
其次,算力够不够?
这一块因为有超算中心,所以已经能吊打99%的ai实验室。
但陈阳知道,还是不够。
远远不够。
他现在训练的是一个一亿参数的模型。
就需要差不多十分之一算力,如果后续训练更大参数的模型,这点算力远远不够。
模型的训练参数越多,就越聪明,但需要的算力也越恐怖。
按他的估算,这次动用的十几台伺服器全力运转,至少要跑三天三夜才能完成一轮训练。
中间任何一个环节出问题:loss不收敛、显卡过热、內存溢出、代码bug。
那么一切就得从头再来。
最后也是最关键的:流程能不能跑通?
预训练不是按一下回车就完事了。
数据要分批加载,模型要分布式並行,梯度要跨机器同步,检查点要定时保存,任何一个环节卡住,整个流程就会崩盘。
这套流程,陈阳写了三万多行代码,调试了整整一周,依然不敢保证万无一失。
本章未完,点击下一页继续阅读。