最近几天一直在深入研究Transformer架构,并且参考waylandzhang老师的资料,自己理解后,也一行一行手撕了一个AI模型出来(不敢称之为大模型,demo性质),并用朱自清的《春》这篇文章进行训练,最后对模型能力进行测试,结果一开始笑死我了,话不多说,先看看效果:

训练后输出的文字接龙
上图是我拿朱自清的《春》作为训练数据,训练迭代了5000次,拿我的mac电脑(2.6 GHz 六核Intel Core i7,16 GB内存,显存6G)跑了大约20多分钟吧,输出的结果。(训练过程中mac耗电很快,cpu一直高负载),并且已经将训练损失值降到了0.2左右(正常2左右即可,因为太低的话会过于拟合,太高的话输出结果不准,一般2左右ok)
我的输入Prompt是“春天像”,大模型训练后,给我的输出是“春天像牛,像星,还眨呀眨的。“吹面不寒杨柳风”,不错的,像母亲的手抚摸着你。风里带来些新翻的泥土的气息,混着青草味,还有各种花的香,都在微微微微润湿的”(这里我限制了输出的长度,最大100个token,所以只输出那么多字)。

设置输入Prompt和输出max_token
整体来说,训练后效果还是有的,乍看还挺像那么回事(虽然春天像牛,像星有点搞笑,但后面输出的吹面不寒杨柳风那些,还挺像回事)。毕竟模型只是我写的一个demo,能力有限,再怎么训练,估计也就这效果了。那么写这样一个模型,真的很难吗,我来说下我的感受:
1、我之前写过一篇文章《小白也能读懂,简述大模型Transformer架构》,按照之前简单理解Transformer架构是远远不够的,这次必须深入研究,尤其是Transformer核心部分,每一部分是做什么的,输入是什么,输出又是什么。

2、写代码其实并没有大家想象的那么困难,不过确实也花了好几天去研究,里面一些算法的公式,我现在也记不住,但是由于Github Copilot(我开发工具用的PyCharm,安装的Github Copilot插件)的加持下,只要你思路清晰,参考Transformer架构图,知道需要预先定义哪些参数,都需要定义哪些类和函数,每一步输入什么,经过处理,输出什么,通过写代码注释的方式,代码都会帮你生成的差不多,而且80%以上都是正确的,不需大改。

------------------------
最后代码的话,这里我就不详细讲解了,里面注释我写的很全了,我会将代码工程(包含训练数据spring.txt)上传至网盘,有需要的可以去下载:
链接: https://pan.baidu.com/s/1v8vP4hezJkefNmX1lRT03w?pwd=ncva 提取码: ncva
或者公众号内回复【LLM】直接获取下载链接。
