实践教程|Transformer Decoder-Only 模型批量生成 Trick

从FasterTransformer源码解读开始了解大模型(1.1)一个decoder-only的模型长啥样 对于一个没有接触过LLM的初学者来说,如果想要了解一个大模型的推理框架,首先应该知道大模型整个的工作原理是怎样的,知道transformers的结构是怎么生成词的,否则很容易会在读代码的过程中越读越迷糊,进入一种“我在哪里?我在看什么?这一段是做什么的”困惑状态,所以在此先推荐从来没有接触过相关知识的同学去读一下Attention is all you need的论文原文。 阅读详情

导读

本文给出了一个用单Transformer decoder( GPT)模型进行批量生成时的解决方法。

img

发现用单 Transformer decoder (Aka GPT)模型进行生成时,因为位置对齐等问题,进行批量生成时十分麻烦。

训练时,context 和 target 可以直接拼一起,然后一个 Batch 内通过裁剪或 Padding 到相同长度来进行批量训练。但生成时,只有 context,每个长度还不同,如果 Padding 到相同长度,直接进行生成的话,会让生成阶段和训练阶段有巨大 gap,导致生成不了好的结果。

解决问题的最好方法就是——不解决问题。直接一条条输出吧。

img

但如果不批量生成,模型小数据少时还好,站起来喝杯水撒泡尿时间就差不多了。但模型一大且数据量一大,花的时间就太大了。

手动开几个进程同时跑多个模型也不是不行,但太美了。

所以只能想办法解决了。

训练阶段解决

通过 Padding 来解决的最主要问题是,生成和训练阶段的差别太大,那是不是在训练时就给 Padding 直接放在 Context 后,再直接拼 target 就行。

可行,但成本太大了,还得重训模型。

所以还是不行。

利用 Transformer 特性

于是就想,如何通过处理让生成时模拟训练时状况,让模型以为 target 位置是直接在 context 后,且只参考 context。

需要明确一点,Transformer 里因为位置信息主要通过位置编码来表示的,所以只要对应的位置编码不变,即使输入向量顺序再怎么变,对 Transformer 来说还是差不多,这也是一些技巧如 PLM(Permutation Language Model)) 得以实现的原理。

直接这样说太抽象了,举个栗子。

假设一个 batch 长度不一样样本训练时如下

input_ids:
1 3 2 6 2 0 0
1 3 6 2 5 4 2

2 为分割和终止符,可看到训练时,通过给第一句 padding,算 loss 时 padding 位置都不算上来进行训练。

而 inference 时,只有 context,即使 padding 也会是下面这样

1 3 2 0
1 3 6 2

这种情况下如果直接用默认的 pos_ids 和 atten_mask (不了解的看The Annotated Transformer),第一句就会出现问题。

对比一下,训练时用到的三个参数

1 3 2 6 2 0 0 (input_ids)
0 1 2 3 4 0 0 (pos_ids)
1 1 1 1 1 0 0 (atten_mask)

训练时当生成 6 的时候看到的是

1 3 2
0 1 2
1 1 1

再来看看生成时的情况,生成 6 的时候直接看到的是

1 3 2 0
0 1 2 3
1 1 1 0

首先拿的是最后 padding 位置的向量来预测下一个,同时还有个问题就是,当预测完成一个时,之后拿到的位置 id 是不对的,这里假设预测成功为 6

1 3 2 0 6
0 1 2 3 4
1 1 1 0 1

会发现用 6 来预测下一个词时已经和训练时不一样了,因为训练时 6 对应的位置 id 是 3

实际这样用时,我也发现生成结果总是错开几个字,像是给刀直接切开了一样。

于是改进,最简单方法是直接给 padding 的位置向量都设成 padding 前的位置,这样预测时位置向量就对了。

1 3 2 0 6
0 1 2 2 3
1 1 1 0 1

但这只解决了一个问题,即生成过程中的问题,第一个位置拿的还是 padding 位置进行的输出。这里有个解决方法,就是生成时,第一次预测取到 padding 前 token,之后就依次取最后一个进行预测了。

这样基本上就算是解决问题了,但生成时第一次和之后还得区分开,说实话还是有点 ugly.

还可以进一步优化。

Left Padding

解决方法很简单,思维掉转下就好了,因为并行生成时都是从最后一位开始取,那能不能直接给 padding 放到前面去呢。

于是生成时一个 batch 会变成这样

input_ids:
0 0 1 3 2
1 3 6 2 5

那么对于第一条进行预测时,也只需要这样设置一下 pos_id 和 atten_mask 就行

0 1 3 2
0 0 1 2
0 1 1 1

这样子生成 6 时,位置向量就能自然而然衔接上,同时 atten_mask 也给前面的 padding 完美 mask 掉了。

完美解决!速度一下提高了好几倍。

​

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

大语言模型底层逻辑:从Transformer原理到GPU显存优化 大语言模型(LLM)本质上是基于自注意力机制的序列建模系统,其核心突破在于将语言预测重构为全位置关联计算,摆脱RNN的时序依赖,实现真正并行化训练与长文本生成。这一范式转变直接催生了位置编码、可学习注意力权重和非线性前馈网络等刚性设计;而RMSNorm、KV Cache、Flash Attention等关键技术,并非数学炫技,而是对GPU显存带宽、SRAM容量与计算流水线的物理适配。理解这些底层约束,才能穿透API封装,精准诊断微调失败、推理乱码或显存爆炸等问题——尤其在中文分词、RoPE外推、因果掩码实现 阅读详情

相关推荐

TransGAN:纯Transformer架构的生成对抗网络原理与实战

生成对抗网络(GAN)是深度学习中图像生成的核心范式,其性能高度依赖特征提取器的归纳偏置。传统CNN-GAN虽效果稳定,但受限于局部感受野,难以建模长程空间关系;而纯Transformer生成模型则面临训练不稳定、小数据易坍塌等挑战。TransGAN提出一种结构对称的双Transformer设计——Generator与Discriminator均摒弃卷积,通过patch embedding、可学习位置编码、Pre-LN归一化及特征空间梯度惩罚等关键技术,在无局部先验前提下实现稳定对抗训练。该方案不仅验证了T

weixin_30800987的博客 406

Transformer Encoder-Decoer 结构回顾

本文基于对的理解,再重新回顾一下有关于auto-encoder、auto-regressive等常见概念,以及Transformer-based model的结构。

weixin_43301333的博客 8239

LM Head解剖:从logits到文本的生成链路与工程陷阱

语言模型输出层(LM Head)是连接隐状态与可读文本的关键枢纽,其本质是将高维连续语义向量映射至离散词表空间的可微转换器。它由线性投影、数值稳定化softmax及采样决策三阶段构成,直接影响生成质量、推理稳定性与部署效率。在实际工程中,vocab_size对齐、权重绑定、logits数值范围控制、温度调节与KV缓存管理等细节,共同决定了模型是否能可靠输出符合业务预期的中文文本。本文聚焦Transformer解码器末端的LM Head,结合金融摘要、医疗续写与工业日志三大真实场景,揭示从hidden_sta

weixin_30500473的博客 369

Transformer 三大变体之Decoder-Only模型详解

Transformer 的三大变体:Decoder-Only 专注生成文本,Encoder-Only 擅于分析文本,Encoder-Decoder 融合编解码实现文本生成和文本分析。

xxue345678的博客 1万+

Transformer系统级认知地图:从数学架构到硅基物理的工程落地

Transformer不仅是一种序列建模技术,更代表了一次计算范式迁移——它用Self-Attention重构信息粒度与计算粒度的对齐方式,以LayerNorm和残差连接保障高维非线性变换下的数值稳定性。其核心价值在于解耦‘理解’与‘生成’的计算契约,并通过模块化设计适配GPU内存带宽、缓存局部性及边缘端推理约束。在真实场景中,位置编码的物理实现(如RoPE)、KV Cache的内存调度、FFN的激活稀疏性等,共同决定了模型能否跨越从训练到部署的鸿沟。本文聚焦Transformer架构的系统级设计逻辑,深入

corg81763的博客 434

用128参数小模型亲手搭建Transformer核心组件

Transformer是一种基于自注意力机制的序列建模架构,其核心原理是通过可学习的QKV投影实现位置感知的动态加权聚合。技术价值在于以并行化方式高效捕获长程依赖,突破RNN的时序瓶颈,并为预训练语言模型提供可微分、可扩展的结构基础。典型应用场景包括机器翻译、文本生成与语法建模等NLP任务。本文聚焦Self-Attention和Positional Encoding两大热词,通过仅含128参数、字符级输入、单层单头的极简模型,剥离LayerNorm与Dropout等辅助组件,在CPU上3秒完成训练,直观揭示

dglf54292的博客 420

Transformer-decoder-only model:GPT-2(1)

Transformer Encoder 原始 transformer 论文中的编码器模块可以接受长度不超过最大序列长度(如 512 个单词)的输入。如果序列长度小于该限制,我们就在其后填入预先定义的空白单词(如上图中的)。 Decoder 解码器在自注意力(self-attention)层上还有一个关键的差异:它将后面的单词掩盖掉了。但并不像 BERT 一样将它们替换成特殊定义的单词,而是在自注意力计算的时候屏蔽了来自当前计算位置右边所有单词的信息。只能看到已生成的单词。 举个例子,如果我们重点

DecafTea的博客 8903

手写Transformer实战:从原理推演到工业级调试

Transformer是一种基于自注意力机制的序列建模架构,其核心在于Query-Key匹配、位置编码与残差归一化等可解释性组件。理解其内部张量流动、梯度路径与内存行为,是实现定制化训练、低延迟推理和稳定部署的前提。本文聚焦PyTorch底层实现细节,覆盖MultiHeadAttention的手动拆解、PositionalEncoding的数学本质、LayerNorm位置对梯度稳定性的影响,以及CUDA显存优化等高频工程问题。内容特别适配需应对法律文书摘要、长文本生成等真实业务场景的NLP工程师,强调‘可调

weixin_36250534的博客 614

Transformer三种模型解释

链接:https://www.zhihu.com/question/614100982/answer/3482741161总共有三种不同分类的生成式 Transformer 模型:仅编码器(encoder-only)、仅解码器(decoder-only) 和编码器-解码器(encoder-decoder)。每类模型都使用了不同的训练目标进行过训练,以解决不同类型的生成任务。

hellozhxy的博客 1277

什么是OAuth 2.0?

OAuth2.0是一种授权协议而非登录协议,核心思想是通过令牌(Token)而非密码实现安全授权。它涉及三个关键角色:用户、第三方应用和身份提供商(IdP)。最常用的授权码流程(AuthorizationCode Flow)通过浏览器三方对话,确保用户密码只提供给IdP而非第三方应用。OAuth2.0提供四种授权方式,其中授权码和客户端凭证是当前主流,而隐式和密码模式已不推荐。需要注意的是,OAuth2.0解决的是授权问题,身份认证需通过OpenID Connect实现。该协议通过临时令牌机制,实现了&qu

sonadorje的专栏 1157

similarity network fusion for aggregating data types on a genomic scale

基因组规模上的聚合数据类型的相似性网络融合 摘要:         近期的技术已经使收集不同类型的全基因组数据十分划算,结合这些数据去创建一个给定的疾病或生物过程的一个全面视图的计算方法是有必要的。相似网络融合(SNF:similarity network fusion)通过创建每一个可利用的数据类型的样本(如,患者)的网络可以解决这个问题。例如,创建一个给定一群患者疾病的全面视图,SNF计算

augustar学习笔记 7869

深度学习:transformer模型

Google于2017年6月发布在arxiv上的一篇文章《Attention is all you need》,提出解决sequence to sequence问题的transformer模型,用全attention的结构代替了lstm,抛弃了之前传统的encoder-decoder模型必须结合cnn或者rnn的固有模式,只用attention,可谓大道至简。文章的主要目的是在减少...

皮皮blog 6万+

JavaScript 书签脚本实战:腾讯/优酷/爱奇艺等5大视频站m3u8链接一键提取

本文详细介绍了如何使用JavaScript书签脚本一键提取腾讯视频、优酷、爱奇艺等五大视频平台的m3u8流媒体链接。通过分析播放器内部对象结构,开发者可以高效获取视频源文件,避免录屏画质损失。文章包含各平台适配方案、实战增强功能开发及企业级解决方案设计,帮助用户快速掌握这一实用技术。

weixin_27945229的博客 609

Transformer 详解

Transformer 是谷歌大脑在 2017 年底发表的论文attention is all you need中所提出的 seq2seq 模型。现在已经取得了大范围的应用和扩展,而 BERT 就是从 Transformer 中衍生出来的预训练语言模型 这篇文章分为以下几个部分 Transformer 直观认识 Positional Encoding Self Attention Mechanism 残差连接和 Layer Normalization Transformer Encoder ..

周红伟讲AI 2852

halcon 检测直线

图中后三个对象既是检测出的图像;

qq_59062726的博客 666

为分析表明卡诺电池技术(或热泵式储电技术)-是目前最佳的储能技术!!!-2021年

卡诺电池(Carnot Battery)是一种基于热力学循环的储能技术,其核心原理是通过热力循环将电能转化为热能存储,并在需要时将热能重新转换为电能输出。这种技术得名于热力学中的卡诺循环原理,由法国工程师卡诺于1824年提出。

qq_15963745的博客 656

Transformer视频重建:自编码器与扩散模型工程实践

视频重建是将低质、压缩或缺失的视频恢复为高保真序列的关键技术,其核心在于建模时空耦合信号。传统方法受限于3D卷积的局部性与计算冗余,而Transformers凭借可解耦的时空注意力机制,成为突破性能瓶颈的主流架构。结合Autoencoders可实现确定性、低延迟重建,适用于手术归档与边缘部署;融合Diffusion Models则提升感知质量与先验鲁棒性,适合无配对数据场景。本文深入剖析ST-AE与DiT两类范式在latent space设计、time embedding注入、loss构建及TRT部署中的关

weixin_30430169的博客 456

反应动力学仿真软件:ChemkinPro_(11).敏感性分析

敏感性分析是化学反应动力学仿真中的一项重要技术,通过对模型参数的变化对模型输出的影响进行评估,可以帮助研究人员优化模型、验证实验数据和评估不确定性。ChemkinPro 提供了强大的敏感性分析功能,可以方便地进行参数选择、仿真设置和结果解读。通过实际案例研究,我们可以看到敏感性分析在燃烧、催化和环境化学等领域的广泛应用,为科学研究和工程应用提供了有力支持。

kkchenjj的博客 1309

从RNN到Transformer:吴恩达教程与PyTorch实战,彻底搞懂注意力机制与序列建模

在序列建模领域,循环神经网络(RNN)及其变体长期面临并行化困难与长程依赖衰减两大核心挑战。注意力机制(Attention Mechanism)作为一种革命性的解决方案,通过计算序列元素间的全局关联,实现了高效的并行计算与任意距离依赖的捕获。其技术价值在于为大规模语言模型奠定了高效的架构基础,广泛应用于机器翻译、文本生成等自然语言处理任务。Transformer模型将自注意力(Self-Attention)与多头注意力(Multi-Head Attention)、位置编码、残差连接等组件系统集成,构成了支撑

chuiqi9947的博客 374

AXI总线详解完结篇

经过几个月的整理和发文,AXI总线详解系列正式迎来最终篇,内容基本涵盖了上一篇文章的全部内容。 所有文章的链接如下: 1、 AXI总线详解 2、AXI总线详解-总线和接口以及协议 3、AXI协议中的通道结构 4、AXI总线详解-AXI4读写操作时序及AXI4猝发地址及选择 5、AXI4交换机制 6、ZYNQ中DMA与AXI4总线-DMA简介 7、AXI总线详解-不同类型的DMA 8、AXI总线详解-DMA内部寄存器的读写方式 9、AXI总线详解-几种应用DMA的场合 10、Altera Scatter-G.

OpenFPGA的博客 5493

SPMI总线协议(一)

系统电源管理接口( System Power Management Interface简称SPMI)是一种双线串行接口,用于连接片上系统(SoC)处理器系统的集成电源控制器(PC)与一个或多个电源管理集成电路(PMIC)电压调节系统。SPMI 使系统能够使用单个 SPMI 总线动态调整 SoC 内部电压域的电源和衬底偏置电压。移动设备和其他便携式设计正日益采用系SPMI)协议,实现多主多从系统,根据实时系统需求监测和动态控制供电电压。设计人员可以在系统级实现更低的功率。

qflook的博客 887

RQ-VAE Recommender完整指南:从原理到实践,掌握语义ID推荐核心技术

RQ-VAE Recommender是一个基于PyTorch实现的生成式检索模型,它利用RQ-VAE技术将物品映射为语义ID,为推荐系统带来了全新的可能性。本文将带你深入了解这一创新技术,从核心原理到实际应用,助你快速掌握语义ID推荐的核心技术。 ## 一、RQ-VAE Recommender:重新定义推荐系统 ### 1.1 什么是RQ-VAE Recommender? RQ-VAE Re

gitblog_00807的博客 843

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

从零实现抽象式文本摘要模型:PyTorch手写Transformer详解

抽象式文本摘要(Abstractive Summarization)是一种基于语义重构的生成式NLP任务,其核心原理是序列到序列(Seq2Seq)建模,依赖注意力机制实现原文与摘要间的动态对齐。相比抽取式方法,它具备语义泛化、句式重写和逻辑补全的技术价值,广泛应用于新闻压缩、论文速览、法律文书提炼等场景。本文聚焦可调试、可干预的最小可行实现,深入剖析Transformer Encoder-Decoder架构中Embedding分离、Teacher Forcing训练机制、Masked Self-Attent

weixin_30588675的博客 484

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

从零手写LLM:PyTorch实现Transformer核心组件

语言模型(LLM)的本质是基于自回归建模的序列预测系统,其技术核心在于Transformer架构中的多头自注意力与位置编码机制。理解其原理需深入张量运算层面:QKV矩阵的缩放计算、因果掩码的负无穷填充、LayerNorm的数值稳定性设计,以及词嵌入与位置编码的向量空间合成逻辑。这些基础组件共同构成模型的梯度流动路径、内存分配模式与推理时序约束。掌握它们不仅支撑GPT类Decoder-only模型的完整训练闭环,更是实现RoPE、ALiBi等先进位置编码替换、kv缓存优化及领域定制化attention改造的前

weixin_30458043的博客 317

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

关于DiT模型的一些思考

之前看过VAE、DDPM和DiT的论文,但是那时候的理解比较浅,另外论文中涉及大量的公式推导,时间长了就容易细节和整体都把握不住,只记住了有这样一个模型,但是内部的机制忘得差不多了。最近看论文又涉及到了DiT模型,遂通过gemini简单回顾一下,写篇博文记录一下。参考资料:扩散模型解读 (一):DiT 详细解读DiT(Diffusion-Transformer)模型架构的核心在于用 Transformer 取代了扩散模型中的 U-Net 结构,从而提升了模型的效率和全局建模能力。DiT 的架构设计借鉴了 V

m0_68830251的博客 1211

大模型知识点总结01

在长文本生成模型中,采用(从 T=0.4T=0.4 逐渐升至 T=0.8T=0.8 )是一种旨在平衡“局部连贯性”与“全局多样性”的高级解码技巧。以下是对该策略的深度解析、数学实现及工程注意事项:为什么要这样做?(设计动机)在长文本生成中,将温度系数是一种与动态升温策略截然不同的设计哲学。以下是对该策略的深度解析、适用场景及工程要点:为什么选择恒定 T=0.8?

qq_32907491的博客 282
上一篇: 基于Transformer架构的扩散模型
下一篇: 【大模型入门】零基础入门AI大模型应用开发,你需要一个系统的大模型入门路径!
AI_小站
博客等级 码龄3年 6255粉丝 1152原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值