《第 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`对象,等等。
●更多v. aika
本章未完,请点击下一页继续阅读!
“你说我很帅,是不是喜欢我?”-每个叛逆的不良少年,心里都住着个沈佳宜。林笙的那一个,晚了十年才出现。他到学校接她,靠着保时捷抽烟,看见清秀的校服少女慢慢朝他走来。他心中微痒,然后想起她说,似乎不喜欢他这一款..
女生 72万字 6天前
九尾猫妖虞妗妗渡劫失败,穿成一个命格被偷、惨遭杀害的人类少女。为找寻身世,她开了家阴阳香火店积累功德;业务是帮助弱小的人类算命捉鬼,替枉死的亡魂诉冤情。开业一段时间香火店无人问津。虞妗妗摸摸干瘪的肚子..
女生 207万字 6天前
一觉醒来,禾凝发现自己躺在一座荒岛上。寒气结霜,她穿着睡衣冻得瑟瑟发抖,还有两只青蛙怪正气势汹汹蹦来。幸好,游戏附赠新手大礼包:[获得:土豆x3][获得:矿泉水x1][获得:木头x10][触发天赋:宝箱奇遇者][宝箱奇遇者:获得..
女生 295万字 6天前
永安侯府的世子贺知煜和新皇演了一出君臣失和的戏,只为在他与孟氏的婚宴上拿下反贼。不知情的孟家怕侯府落难嫡女受委屈,慌忙推了养女孟云芍替嫁。大事落定,贺家怪她换人欺瞒,孟家怪她占了姻缘,孟云芍落得个两边不..
女生 74万字 6天前
禇卫怜自小便有一段记忆,那是她的前世。——前世,在三皇子登基后,她很快被囚禁了起来,成为他的禁脔,日日夜夜被折磨得苦不堪言。因为这段记忆,禇卫怜打小就对那位冷宫的三皇子没好感。三皇子出身低贱,传言中他血脉不..
女生 40万字 6天前
时易之襟怀坦白一辈子,周围人无不将他视为德行之典范,然而只下江南一趟,就鬼使神差地买了个南风馆的头牌回家。头牌又美又娇,蛊惑男人的本事好不得了。广寒仙见识过太多的人,有所予者无不有所求,得失算计、了无趣味..
女生 35万字 6天前