语言大模型的基础:模型训练与预测——快速入门科普向

御币Soft
发布于

语言大模型的诞生让游戏开发圈也爆发无数想象:开发者们可以有能力构造前所未有的开放、智能的个人助理、对话角色NPC、决策NPC......笔者在机器学习算不上高手,不过也能给对语言模型有兴趣的伙伴提供一些快速入门的介绍,还望大佬们批评指正。

笔者这篇文章的最初动机来自一个视频观后感:【M2 Ultra:干翻英伟达!决战AI之巅】,梗概是林亦老师使用具有统一内存架构的M2工作站,相当于拥有了128G显存,在训练效率上击败了3080ti,并能够成功运行meta开源的LLaMa模型。不过评论区许多意见认为视频介绍存在一些故意误导突出M2厉害,以博取眼球的行为,于是笔者打算写一点入门向内容帮助有兴趣的朋友。

1. 模型尺寸

从基础知识入手,相信大家看过不少机器学习入门视频,知道人工神经网络本质是根据输入数据与模型参数进行一系列的数学计算输出结果。而以GPT为代表的“大”模型,则是以参数模型“很多”为主要特点之一。各位可能对大模型有多大,没有概念,举个有点古老的例子,笔者在入门机器学习时研究别人训练好的模型,当时根据尺寸,16M大小的模型被称为tiny,30M为small,60M为middle,200M就可以称为large。而我们现在说的大模型....已经到了100G+的水平。

2. 训练与预测

如果有入门机器学习经验的朋友会遇到这样一个问题,有个模型训练完一共就几十上百M,但是作者提供的训练条件却要求8G显存。这里则需要引入batch_size的概念,假设一个模型总共需要训练100轮,一轮一轮训练当然可以,但我们都有显卡了可以同时训练好几轮为啥不用上,这个同时训练的轮数则是batch_size,从效率角度越大越好,而决定最大batch_size的标准通常就是显存大小。如果显存太小同时训练轮数有限则会成倍提高训练时间。

训练是同时计算batch_size个模型,那么预测则是只需要计算一个模型一次,所需要的显存自然倍数减少,这也就是为什么有的不那么大的大模型,比如之前大火的diffusion绘图模型虽然个人用户无法有效训练,但使用个人电脑出少数几张图(预测)还是可以的。

补充一些更深入的内容,初入的朋友可以暂时先跳过。以pytorch距离,除了batch-size,训练的另一方面还需要保存大量中间数据进行反向传播更新参数,而预测时模型参数都是静态的没有更新需求,在网络较复杂时会进一步提高训练显存需求。lora则可以理解为把diffusion这个大模型中部模块抽出作为一个小模型进行训练再整合到大模型中,实现了有限算力情况下对大模型的微调训练。

3. M2的大显存

经过上面的讨论可以得出这样的结论,只要单个模型大小没有超过显存,那么就能跑起来,无非是预测速度快慢的问题。而100G+的大模型的出现则带来新挑战:排除专业计算卡,商用游戏卡24G显存就算顶配了,不用多卡怎么都跑不起来,M2的大显存的确从这个门槛上解决了这个问题,实现了视频中的效果,不过还是存在许多需要讨论的问题。首先是算力,nvidia毕竟显卡大厂,核心计算速度方面确实没有输给苹果,在贪吃蛇模型训练过程中效率输给苹果的主要原因是,由于显存限制batch-size小,不同训练中间将新数据从存储读到显存产生了瓶颈,其实很多别的程序数据读写也是主要瓶颈拖慢计算。视频也提到M2 studio整机不超过200w,而3080ti机有500w,如果对于不构成显存瓶颈的训练,M2的效率恐怕是比不过n卡的,况且3080ti机的性价比还是高出不少。总结来说就是M2虽然用超大显存解决了大模型预测的门槛问题,但也只是解决门槛,希望不要有想做机器学习的朋友看到视频入手M2 studio(狗头)。

4. 总结

虽然上一节给M2泼了冷水,但不可否认它真的提供了一种家用机完整运行大模型的解决方案,不过更让笔者兴奋的是苹果这种独辟蹊径抢占AI市场的方式搞不好就能让老黄急急急,推动大显存n卡的推出。

2
评论 1
收藏
  • 别提了 当年用M1炼丹我差点原地坐化了