自己动手搭个AI大模型?没那么玄乎
说真的,我一开始也觉得这东西离我好远。
什么大模型,什么, 什么算力, 还有集群, 听起来就仿佛是另一个世界里才会有的事情, 一直到去年的时候, 我实在是憋闷得不行忍不住了, 自个儿试了一回, 而后才发觉, 搭建一个AI大模型, 当然并非是像GPT那种有着几千亿量级参数的, 实际上并没有那么的玄奥神秘了。
拿我所做的那个小模型来讲, 其参数未达1亿,运行于两张老旧显卡之上, 你能够相信吗? 即便如此, 它居然还能够写诗, 并且写得颇具模样。
搭大模型到底要花多少钱?
这事儿我查了很久,也问了不少人。
你倘若真打算从毫无基础开始去训练一个具备真正意义的大模型, 就像LLaMA那种级别的(有着650亿参数), 仅仅一次训练所需的电费, 便会达到几百万美元。英伟达先前那份报告当中提及过, 训练GPT-3耗费了大约1200万美元, 其中光是电费就占据了主要部分。
但你别被吓着。
“搭”,我说的这个词, 是指那种能在个人电脑上运行起来的情况。比如说, 拿羊驼模型()去玩一玩, 整个的项目历程下来, 成本还不到100美元呢。再比如, 对于Meta开源的LLaMA权重, 你自己再做一下微调, 从本质上来说, 这也算得上是经历了一次“搭”的过程。
关键是你能不能接受:它不会什么都懂,但它确实是个模型。
选模型框架,别太纠结
极开始在与之间摇摆了好长一阵子, 看了十几篇对比文章, 随后发觉, 这事压根无需纠结。
现在就是事实标准。
在之上, 超过90%的模型是运用编写而成的。你声称要着手搞一个新的模型, 不会有人询问你会采用何种框架, 众人皆默认你会使用。
固然, 倘若你打算贪图简便省事, 径直运用的库, 寥寥几行代码便能够加载一个预训练模型。我首个模型便是如此操作的: 进行下载, 开展加载, 实施测试, 前前后后用时不到半小时。
然后我就膨胀了。
数据才是真正让人崩溃的地方
我以为最难的是写代码。后来发现我太天真了。
最难的是搞数据。
我于网上爬取了约莫2万条中文语料, 其中涵盖新闻, 包含论坛帖子, 还有知乎问答。而后呢? 其内部尽是脏数据: HTML标签未被清理干净, 存在乱码, 有重复内容, 并且还有一些根本无从知晓来源的火星文。
仅仅是对这批数据进行清洗, 我耗费了整整两个周末的时间 ,最终能够使用的, 大约是1万2千条。
所以, 有这样一句话, 我是特别认同的: 一个AI模型究竟好不好, 90%依赖于数据, 剩余的10%才是模型结构以及训练技巧。
你要是认真做,数据这一关得花至少60%的时间。
训练过程,像在坐过山车
当我首次开展对自己所编写的模型予以训练之际, 彼时的那种心情, 真的是难以言表啊。
最初的时候, loss值下降的速度快得惊人, 我当时心想: 难道我是天才不成? 随后到了第3个epoch阶段, loss顿时不再变动。怎么都不下降。调整学习率、更换优化器、改变batch size……一番折腾持续了两天时间, 才发觉是学习率编写的不正确。
再有一回, 模型给出的输出通通是“NaN”。花费了好半晌的工夫去查找, 原来竟然是梯度发生爆炸了。
更为搞笑的是, 我训练了一个用于中文对话的模型, 与之展开聊天交流, 它回复我道: “你所言是正确的, 然而原神……”此情景令我即时笑得前仰后合, 直接笑喷。
这些小型的模型, 偶尔并非有缘由地学到了训练数据当中的梗, 格外具备趣味。
推理时的意外惊喜
等模型好不容易训练完毕了, 我小心翼翼地输入了一句话, 那句话是: “写一首关于秋天的诗。”。
等了大概3秒,它输出了:
秋风刮起, 黄色树叶飘落, 独自坐在窗户前方聆听雨水声音。灯火稀疏的地方, 哪个人询问我粥是否温热。
虽然有点拼凑感,但你能信吗——这是我亲手搭的模型写的。
那一刻,真有点感动。
当然,大部分时候它回复的是:“我不懂你在说什么。”
普通人能搭到什么程度?
我大概整理了几种做法:
较简便的办法是径直采用已有的推理框架以达成目的, 像、llama.cpp这类, 于你而言, 只需将做好准备的模型重量下载妥当即可, 借助一条指令就能够使其开始运行。在平台之上有数量达到好几十万的模型得以存在着, 其中的大部分均是无需付费便可获取并且使用的。
稍微升华那么一点儿, 运用的库去进行微调, 也就是fine - 。比如说, 你存在一个业务场景, 这个业务场景涵盖了客服、问答以及内容生成这几方面, 选取这么一个开源模型, 拿自己所拥有的数据, 朝着实现微调来推进。这般情形之下, 最终所呈现出来的效果, 很有可能相较于直接去购置商业API而言, 反倒更加适配于你。
要是能再硬核些许, 那就从从零开始打造一个 , 网络上是存在教程的, 就好比 的“Let’s build GPT from ” , 照着去做上一回, 你便能够领会所有点点滴滴的细枝末节了。
当前, 我个人正处于第三个阶段而遭遇困境, 缘由在于当着手撰写注意力机制()之际, 始终觉得数学公式仿佛在对我进行讥讽。
一些小建议
你要是想试试,我建议从微调开始。
寻一个开源的基座模型, 像是Qwen、LLaMA、、这类, 挑个最小的版本(7B以下), 而后用自身的数据进行微调。
有着几百条质量不错的数据量也就足够了, 无需太多。其过程大概需要一张具备8G以上容量的显卡, 或者也可选用云服务, 像、阿里云这类, 差不多一小时只需几块钱。
不要一上来就想搞大新闻。
最后想说的
AI大模型这件事,确实被媒体包装得太玄了。
既是“智能涌现”, 又是“通用人工智能前夜”, 这般听起来仿若科幻影片。
然而事实上, 模型乃是那众多数学公式以及矩阵运算所构成的全部。当你将其逐一拆解开来瞧的时候, 每一个步骤都是能够被领会明白的。
并且说实话, 亲自去搭建一个模型, 哪怕这个模型只会回答最为简单的问答, 可那种成就感, 相较于使用任何一个商用API而言, 都要强烈许多。原因在于, 那属于你个人专有的东西。
所以,如果你有显卡、有时间、有好奇心,真的可以试试。
别怕出错。我也还在不断试错。
说不定哪天,你写的模型就能跟你聊人生了呢。
