用Python从头编写仅解码器的Transformer用于大语言模型
Google/DeepMind
OpenAI
Meta
系列文章作者详细描述了使用PyTorch框架实现一个小型仅解码器大语言模型的Transformer块。涵盖的组件包括:带掩码的多头注意力、带GELU的前馈网络、归一化层和残差连接。文章解释了与原始架构的区别:使用预归一化(Pre-LN)而非后归一化以提高训练稳定性。
作者Vladimir以许可文本水印任务为例,实现了一个用于decoder-only(仅解码器)LLM(大语言模型)的Transformer模块。他解释道,Transformer是Google论文《Attention Is All You Need》(注意力就是你所需要的一切)中提出的架构,该架构通过注意力机制并行处理序列。
Multi-Head Attention(多头注意力)的核心是三个投影矩阵Q(Query,查询)、K(Key,键)、V(Value,值)。第一阶段计算token(词元)之间的相似度(即注意力矩阵),第二阶段则根据所得权重对token内容进行加权混合。为提高效率,所有注意力头都通过一个大的线性投影统一实现。
在attention(注意力)计算之后,会应用带有GELU激活函数和dropout(随机失活)的Feed Forward Network(前馈网络)。整个Transformer模块的组装还包括归一化处理(采用Pre-LN,即前置层归一化)以及残差连接。此外,还为decoder添加了future mask(未来掩码,即causal mask,因果掩码)。
总体而言,该模块已可用于LLM的构建、训练以及文本生成任务。
来源: Habr — хаб NLP —
原文
