第243章 小芯3.0大模型训练瓶颈(1/2)
中央研究院人工智慧大楼的负三层,是未来科技最耗电、最烧钱的地方。四排黑色的机柜整齐排列,每排十六个,共六十四台定製化ai训练伺服器昼夜不停地运转。机柜表面贴著温度传感器,实时数据显示在墙上的监控大屏:45.3c,46.1c,47.8c……空调系统在全功率运行,但依然压不住这些“算力怪兽”散发的热量。
赵静站在监控屏前,已经盯著那条曲线看了二十分钟。那是“小芯”3.0大模型过去七天训练损失的下降曲线。按照计划,曲线应该平滑地向右下方延伸,显示模型正在持续学习。但现实是,曲线在三天前开始剧烈震盪,昨天下午甚至出现了罕见的反向上升,这意味著模型不但没有进步,反而在某些方面退步了。
她身后站著五名核心算法工程师,每个人都脸色凝重。空气里除了伺服器风扇的低频嗡鸣,就只有空调出风口的气流声。
“还是没有找到原因?”赵静没有回头,声音在空旷的机房里显得格外清晰。
站在最左边的年轻工程师扶了扶眼镜:“我们排查了所有可能:数据清洗流程没问题,训练代码没有bug,硬体监控显示所有gpu都在正常工作,內存和显存使用率都在安全范围內。”
“但损失函数就是震盪。”赵静转过身,目光扫过每个人的脸,“而且震盪幅度越来越大。昨天下午那个峰值,损失值回升到了十天前的水平。这意味著我们过去一周的训练,可能白费了。”
这句话让所有人都打了个寒颤。过去一周,这六十四台伺服器消耗的电费就超过八十万,更別说研发人员的工时成本。如果训练真的出了问题需要回滚,损失远不止金钱,更是宝贵的时间。
“张博到了。”一名助理从电梯间小跑过来,压低声音说。
赵静眼睛一亮:“快请他进来。”
被称为张博的男人四十出头,穿著朴素的白衬衫和牛仔裤,背著一个磨损严重的双肩包。他叫张景明,国內顶尖的机器学习理论学者,三个月前被赵静以“访问学者”名义请来,专门研究大模型训练中的稳定性问题。此人性格孤僻,不善交际,但论文被引用次数在亚洲区排前三。
“数据。”张景明走到监控屏前,只说了一个词。
工程师立刻调出详细日誌:每一轮训练的参数更新幅度,梯度分布统计,激活函数输出范围,权重矩阵的奇异值分解结果……数十个维度的监控数据以图表形式展开,密密麻麻布满了八块屏幕。
张景明没有看屏幕,而是从背包里掏出自己的笔记本电脑,连接上內部网络。他的电脑桌面上没有任何花哨的壁纸,只有几个命令行终端和一个自製的数据可视化工具。
“给我过去两周的完整梯度歷史,按层、按头、按batch分別导出。”他的手指在键盘上飞舞,敲击声又快又轻。
机房里的气氛变得更加紧张。所有人都知道,张景明正在尝试一种很少有人用的诊断方法,分析训练过程中梯度的微观动態。大多数团队只关心损失函数这个宏观指標,但张景明认为,大模型训练中的很多问题,早在损失函数震盪之前,就已经在梯度层面显露徵兆。
数据导出需要时间。伺服器阵列的指示灯规律闪烁,硬碟读写的声音像细密的雨点。赵静让助理给大家倒了咖啡,但没人有心思喝。
二十五分钟后,张景明的屏幕上开始出现复杂的多维图表。他用自己编写的工具將数百gb的梯度数据压缩成可视化的模式,不同顏色代表不同网络层,点的位置和大小代表梯度的大小和方向,时间轴则用动画形式展现。
“看这里。”张景明按下了暂停键,指著屏幕上一片区域,“第32层到第35层,注意力机制中的查询-键值投影矩阵,梯度方向在过去四十八小时內出现了系统性偏移。”
赵静凑近屏幕:“这意味著什么?”
“意味著模型在试图学习某种模式,但遇到了內在衝突。”张景明调出另一组数据,“再看对应的激活值分布,这几个层的神经元输出正在逐渐两极分化,一部分神经元的激活值趋近於零,另一部分则饱和到上限。”
“死亡神经元问题?”一名工程师问。
“比那更复杂。”张景明放大了一个局部区域,“注意观察梯度方向的变化频率。它不是在隨机震盪,而是在两个对立方向之间规律摆动。这通常意味著,训练数据中存在某种矛盾的模式,或者模型架构在某些场景下存在歧义性。”
他调出训练数据集的统计信息:“『小芯』3.0用了多少数据?”
“目前是1.2万亿token,混合了中文、英文、代码、学术论文和高质量对话数据。”赵静回答,“清洗过程非常严格,去重、去毒、质量过滤都做了。”
“数据配比呢?”
“中文40%,英文35%,代码15%,其他10%。”
张景明点点头,在键盘上敲了几个命令,调出一个他自己训练的诊断模型:“我怀疑问题出在多语言对齐上。大模型需要学习不同语言之间的对应关係,但当语言特性差异太大时,某些底层表示可能会互相衝突。”
他展示了一个简化的示例:“比如中文里『含蓄』这个概念,在英文中没有完全对应的词,需要多个词和语境共同表达。模型在试图为这类概念学习跨语言表示时,可能会遇到梯度衝突,中文语料告诉它往a方向优化,英文语料告诉它往b方向优化。”
“所以损失函数震盪是因为模型在『左右为难』?”赵静理解了。
“可以这么理解。”张景明说,“但更深层的问题是,隨著模型参数规模增加到万亿级別,这种衝突会被放大。小模型可以通过牺牲某些能力来妥协,但大模型理论上应该能同时掌握多种模式,前提是训练过程足够稳定,能让它找到那个高维空间中的平衡点。”
他关掉诊断工具,看向赵静:“你们用的优化器是什么?学习率调度策略呢?”
“adamw优化器,余弦退火学习率,warmup(预热)阶段用了五万步。”工程师调出超参数配置。
“试试换成lion优化器。”张景明建议,“虽然理论性质不如adamw清晰,但在我们最近的实验里,它对梯度衝突的鲁棒性更好。另外,学习率可以再降低一个数量级,延长训练时间。”
“降低一个数量级?”有人惊呼,“那训练周期要从三个月延长到两年!”
“或者增加batch size(批次大小),保持总计算量不变。”张景明平静地说,“但问题是,你们的硬体允许吗?”
所有人看向那排伺服器。每台伺服器搭载八张最新的“悟道2.0”ai训练晶片,每张晶片的显存是80gb。当前的batch size已经调到了硬体极限,再大就会爆显存。
“我们可以用梯度累积……”一名工程师刚开口,就被张景明打断了。
“梯度累积只能模擬大batch,不能解决表示学习中的根本衝突。而且会增加通信开销,训练更慢。”
机房陷入沉默。问题似乎又绕回了原点:要么接受极慢的训练速度,要么想办法解决硬体限制。
赵静的手机震动起来。她看了一眼来电显示,是陈醒。
本章未完,点击下一页继续阅读。