《第 10 节 从理论到实现(代码设计选读)》转载请注明来源:369小说网(369book.cc)
https://pica.zhimg.com/v2-99a595d57ad83459a8d13c7cd96fa946.png?source=6a64a727
在前 9 节中,我们从头设计并实现了一个写诗 AI。为了不让内容过于繁琐,我省略了代码实现的讲解。一方面,本专栏主要传达大模型的核心思想,用最短的篇幅把关键环节讲清楚。另一方面,读者未必真的需要从事大模型开发,对大部分人来说,细节可能无关紧要。
但为了照顾另一部分真正想要了解实现细节的人,本节还是对代码做个简要介绍。以下内容需要一定的编程知识,如有看不懂的地方,可以直接跳过,或问问 ChatGPT 等工具。也欢迎大家通过评论区、GitHub 代码库 TutorialLLM 多多探讨交流。
源代码地址:https://github.com/jingedawang/TutorialLLM
现在,假设你是一个程序员,你该如何设计代码架构以实现前文介绍的功能?
这个问题其实有点困难,当初尝试实现这套代码时,我也感到颇为棘手。不过,只要细细考量,办法总是有的。让我们一起尝试一下这个过程。
首先,整个流程中,最重要的部分就是模型的结构设计,以及基于此模型的训练。本专栏前面的大部分小节都在讨论这两件事。
模型的结构通常用 PyTorch 的`torch.nn.Module`类来表示,通过继承(inherit)这个类,并重写(override)`forward`方法,我们就可以自定义一个新模型,并规定其计算行为。
训练则按顺序划分为三步:预训练,指令微调,与人类偏好对齐。这三步依次进行,不断更新模型的参数。
于是,我们可以在`model.py`文件中定义一个 TutorialLLM 类,代表模型本身。再在`trainer.py`文件中定义一个`Trainer`类,提供`pretrain`、`finetune`、`align`等方法。借助这两个类的实例,整个训练流程就可以通过简单的函数调用来实现,我们将其写在`run.py`中,如下所示:
https://picx.zhimg.com/v2-6c47e89d3d819a80581340710068e718.png?source=6a64a727
主流程就是这样,是不是很简单?不过,具体的细节都隐藏在`TutorialLLM`和`Trainer`内部,接下来我们需要好好考虑如何实现它们。
在代码中定义模型,其实就是用 PyTorch 的接口实现第 7 节图 7-1 TutorialLLM 的网络结构。
在图 7-1 中,某些模块,比如 Embedding Table 和 Cross Entropy Loss,可以直接调用 PyTorch 自带的类库。而其核心模块——Transformer Block 所代表的第 6 节图 6-2 中的复杂结构,即注意力机制的实现,则需要我们自己定义。
https://pic1.zhimg.com/v2-39af552205e28503a23d510622a5f09d.png?source=6a64a727
定义模型包含两个步骤,分别对应于我们将要实现的两个方法——`__init__`和`forward`。
● `__init__`用来准备好所需的所有子模型。比如,创建一个`torch.nn.Embedding`对象,作为 Embedding Table;创建一个`torch.nn.Linear`对象,作为最后的 Unembedding Matrix;创建若干个`TransformerBlock`对象,等等。
● `forward
本章未完,请点击下一页继续阅读!
49万字 1天前
《病弱的我拥有四个未婚夫》 宋初雪是公认的病弱美人,出行甚至需要乘坐轮椅。 她漂亮但孱弱,美丽又温柔,眉间出现最多的便是那一抹牵动人心的哀绪。 由于npc空缺,她需要分别扮演四本漫画里的男主未婚妻,宋初雪要做的就是等女主上线就麻溜的解除婚约滚蛋。 黑暗复仇漫里,男主是刚刚回归大家族的私生子,他阴暗自私,精于算计,野心勃勃,讨厌不食人间烟火的漂亮废物。 宋初雪:太好了,我就是。 青春校园漫里,男主
其他 35万字 5天前
《禁庭春夜》 纵有倾国之色,甄华漪却并不受宠,她知晓,皇帝的心中唯有她姐姐一人。 但仍有许多深夜,他总似爱似恨,不知疲倦。 甄华漪以为,这大约是皇帝难以启齿的癖好。 直到某天夜里,她嗅到了另一个人的熏香气息。 ——权势赫赫的晋王殿下李重焌。 她暗自心惊之时,泛红的手指被一根一根分开抵入,李重焌的声音幽幽响起:“皇兄有我做得好吗?” * 晋王李重焌年少功高,是多少长安娘子的深闺梦里人。 偏偏他高傲
其他 31万字 5天前
《画像师在八零[刑侦]》 钰佳佳前世缠绵病榻,娇养的像朵富贵花;睁眼到了70末年,成了一名公安新妇; 丈夫公差,路上被抢了包,钰佳佳到警局报警,有人认出是陆队媳妇,又想起溜街子,忙让人叫他! 钰佳佳掏出张纸递上,纸上赫然是一比一还原的肖像“小黄毛”众人震惊,陆队赶到后,也看愣了。接着听她轻柔道:“能抓吗?” 陆俊华觉得他媳妇不太对劲,强的过分,美术老师都这么厉害? 能摸骨画像、头骨复原、以子画母
其他 39万字 5天前
《全校传我们不合》 【哭包宠老婆攻×口嫌体直声控受】 高中毕业的暑假,江景舟在酒吧认识个帅哥。 影帝颜值,八块腹肌,声音好听的堪比顶流cv,江景舟可耻的心动了。 第二天一早,江景舟看向旁边,想起昨天边干活边哭的某人……嘴角一抽,跑路了。 直到暑假结束。 他在大学操场看见某个身穿军训服、高别人足足高一头的男生。 在对方转身的瞬间,江景舟猛地低头,心里骂了不下三百字的脏话。 - 全校都知道两位出了名
女生 16万字 5天前
《主角攻很不对劲[快穿]》 主攻文,明澈是攻 【每个世界风味不同,很难说清,不算强攻也不算弱攻,只能说情感关系里占上风】 系统:看见那个主角攻了吗,去虐他去做他的踏脚石 明澈:好的 系统:等等,他们最后为什么都爱上你了! 世界一【已完结】:富家少爷流落在外过穷苦日子 明澈接近他取得他的信任,然后狠狠翻脸逼迫他让他知道人心险恶,多年后再度重逢,主角攻找上了门。 主角攻:如果我说我愿意呢。 明澈:?
女生 28万字 5天前