LLM推理入门指南①:文本生成的初始化与解码阶段

b5fb2dac296612ec74b139ed3b0325d2.jpeg

随着生成式AI的火热发展,高企的语言大模型(LLM)推理性能和成本成为阻碍其大规模应用的关键挑战。

LLM推理是指使用仅解码器Transformer模型生成词元,而大多数挑战及其相关的解决方法都来自这种特定的架构和用例。本系列文章将深入探讨LLM推理的不同层面及其挑战,同时,其中提供的有价值见解也适用于Transformer编码器模型的推理。

通过本系列内容的学习,希望帮助读者了解与LLM推理密切相关的术语,比如键-值(KV)缓存、内存带宽限制(memory-bandwidth bound)等,以便理解推理优化(量化、融合kernel、模型架构修改等)和配置(批处理大小、使用哪种GPU等)所涉及的各种技术,并最终将它们与关键的性能指标(时延、吞吐量和成本)联系起来。

希望读者建立起一个见解深刻的心智模型,从而能够在配置和优化LLM serving解决方案时做出明智且迅速的决策。本文是该系列的第1篇文章,主要关注文本生成的两个阶段:初始化阶段和生成(或解码)阶段。

在阅读本系列文章之前,读者需对Transformer架构以及在著名的《Attention Is All You Need》论文中介绍的缩放点积注意力(SDPA)机制有基本了解,但无需深入了解注意力机制背后的动机因素。

本文作者为AWS的GenAI解决方案架构师Pierre Lienhart。以下内容由OneFlow编译发布,转载请联系授权。原文:https://medium.com/@plienhar/llm-inference-series-2-the-two-phase-process-behind-llms-responses-1ff1ff021cd5)

作者 | Pierre Lienhart

OneFlow编译

翻译|宛子琳、杨婷

本文回顾了Transformer架构以及使用基于Transformer的解码器进行文本生成的基础知识。更重要的是,我将构建起整个LLM推理系列中要使用的词汇表,并使用粗体标记出个人认为重要的术语。读者将主要了解文本生成的两个阶段:初始化阶段生成(或解码)阶段

首先,我们来回顾一下Transformer。为简单起见,我们假设一次只处理一个序列(即批处理大小为1)。在下图中,我描述了一个简单的基于Transformer的解码器(图1)的主要层,用于从一系列输入词元中生成输出词元。

9984b53b83cfe006b9a07cf1ca5e267e.jpeg

图1—Transformer解码器模型概要

需要注意的是,解码器本身并不会输出词元,而是输出logit(其数量与词汇表大小相同)。输出logit的最后一层通常被称为语言模型头(Language Model Head)或LM头。将logit转换为词元是通过一种通常被称为 (词元)搜索策略((token) search strategy)生成策略(generation strategy)解码策略(decoding strategy) 的启发式算法来完成的。常见的解码策略如下:

  • 贪婪解码(Greedy decoding),简单来说就是选择具有最大logit的词元,在此之前可能会使用重复惩罚(repetition penalty)等方式,对logit进行一些调整。

  • 采样解码(Sampling decoding),将logit看作多项分布,然后从中采样。换句话说,我们通过随机采样从词汇表中选择一个词元。在采样过程中,可以先采用温度调节(temperature scaling)、top-k和top-p等常见方式,对从中采样的分布进行调整。

  • 更复杂的启发式算法,如束搜索(beam search)、对比解码(contrastive decoding)¹等。

简单起见,我们假设解码策略是模型的一部分(见图2)。这种心智模型(mental model)在提供LLM serving解决方案方面十分有用,这些接受词元序列作为输入,并返回相应输出词元的实体通常被称为执行引擎推理引擎

36a8bd03371d0c6e7b7dd726d02c528b.jpeg图2—一个高度简化的Transformer解码器模型

如果要生成多个词元呢?使用基于Transformer的解码器,从一个输入文本序列(通常称为提示(prompt))中生成文本(通常名为完成(completion))通常包含以下步骤:

  1. 将模型权重加载到GPU

  2. 在CPU上对提示进行分词,并将词元张量传输到GPU(见图3)

00de65073fe1b11362c46630b52602f8.jpeg

图3—分词步骤

3. 利用神经网络运行经过分词的提示,生成完成的第一个词元。

这一单步骤阶段通常被称为“初始化阶段”。在下一篇文章中,这一阶段也经常被称为“预填充阶段”。

4. 将生成的词元添加到输入词元序列,然后将其用作新的输入,以生成完成的下一个词元。然后,重复这一过程,直到生成停止序列(例如单个序列结束(EOS)词元),或达到预先配置的最大序列长度(见图4)。

这一多步骤阶段通常被称为生成阶段解码阶段自回归阶段甚至是增量阶段(incremental phase)。

步骤3和步骤4如下图所示(图4)。

4c80db35187f009c8e0892ffedd91d68.jpeg

图4—词元生成过程的初始阶段和解码阶段

  1. 将完成的词元传输到CPU,并进行逆词元化(detokenization)以获取生成的文本(见图5)。

0776a8b0c4f43a845aa90fb033ecd7e0.jpeg

图5—逆词元化步骤

注意:最近出现的旨在实现更低时延的先进技术(如推测性采样²或前瞻解码³)并不完全遵循上述简单算法。

这种情况可能会让人感到失望、困惑,或二者兼具。你可能会疑惑:初始化阶段和解码阶段究竟有何不同?从这个角度来看,这两者之间的区别似乎只是人为设定的。确实,感觉上初始化阶段与while循环的初始化步骤类似。实际上,我们在这两个阶段做的事是一样的:在每次迭代中,我们都会对一个词元序列进行前向传播,这个序列每次都会增加一个词元。

你的想法可能是正确的。对于在硬件上计算的方式来说,这两个阶段确实没有任何区别,因此在这方面,这两个阶段并没有什么特别之处。

然而,正如我们将在下一篇文章中看到的,这种设置涉及大量冗余计算,在许多情况下效率并不高。对于这种情况,将我们不想重新计算的内容进行缓存处理是最显而易见的方式。这种优化方式即为“KV缓存”,并由此引出了我一直在暗示的关键差异。下一篇文章将对此进行深入探讨。

[1]: A Contrastive Framework for Neural Text Generation (Su et al., 2022)

[2]: Fast Inference from Transformers via Speculative Decoding (Leviathan et al., 2022)

[3]: Breaking the Sequential Dependency of LLM Inference Using Lookahead Decoding (Fu et al. 2023)

【语言大模型推理最高加速11倍】SiliconLLM是由硅基流动开发的高效、易用、可扩展的LLM推理加速引擎,旨在为用户提供开箱即用的推理加速能力,显著降低大模型部署成本,加速生成式AI产品落地。(技术合作、交流请添加微信:SiliconFlow01)

90349b0cdcf9ffdc04c9e79dca20ed0b.png

SiliconLLM的吞吐最高提升近4倍,时延最高降低近4

69c5f9dc0a68df4a2d80f41adc8e7b76.png

数据中心+PCIe:SiliconLLM的吞吐最高提升近5倍;消费卡场景:SiliconLLM的吞吐最高提升近3

5a21372f5067a0779f3068301117c095.png

System Prompt场景:SiliconLLM的吞吐最高提升11倍;MoE模型:推理 SiliconLLM的吞吐最高提升近10

其他人都在看

  • 800+页免费“大模型”电子书

  • 语言大模型的推理技巧

  • 语言大模型的推理演算

  • 语言大模型推理加速指南

  • GenAI的“关键一跃”:推理与知识

  • 迈向100倍加速:全栈Transformer推理优化

  • Mistral AI:LLM推理的吞吐、时延及成本空间

试用OneDiff: github.com/siliconflow/onedifficon-default.png?t=N7T8http://github.com/siliconflow/onediff

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/411589.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

邮件营销神器Focussend,轻松实现1美元转化72美元的营销高回报!

随着社交媒体营销逐渐成为主流,一家名为Focussend的公司却在邮件营销领域崭露头角。成立于2009年,Focussend经过尝试综合营销后,选择进入古早但高回报的邮件营销市场。目前,该公司在跨境平台中排名靠前,服务着上万名中…

c入门第二十三篇: 学生成绩管理系统优化(支持远程操作)

前言 师弟高兴的说道:“师兄,你猜我今天上课看见谁了?” 我:“谁呢?” 师弟:“程夏,没想到,她竟然来旁听我们计算机系的课程了。虽然我从前门进去的,但是我还是一眼就看…

【力扣白嫖日记】178.分数排名

前言 练习sql语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。 今日题目: 178.分数排名 表:Scores 列名类型idintscoredecimal 在 SQL 中,id 是该表的主键。 …

如何在Linux部署Portainer并结合内网穿透远程管理本地Docker容器

文章目录 前言1. 部署Portainer2. 本地访问Portainer3. Linux 安装cpolar4. 配置Portainer 公网访问地址5. 公网远程访问Portainer6. 固定Portainer公网地址 前言 Portainer 是一个轻量级的容器管理工具,可以通过 Web 界面对 Docker 容器进行管理和监控。它提供了可…

protobuf某音弹幕实战

声明:(如果侵犯到你的权益联系我,我会马上删除) 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由…

fly-barrage 前端弹幕库(2):弹幕内容支持混入渲染图片的设计与实现

如果弹幕内容只支持文字的话,只需要借助 canvas 绘图上下文的 fillText 方法就可以实现功能了。 但如果想同时支持渲染图片和文字的话,需要以下几个步骤: 设计一个面向用户的数据结构,用于描述弹幕应该渲染哪些文字和图片&#x…

dolphinscheduler集群部署教程

文章目录 前言一、架构规划二、配置集群免密登录1. 配置root用户集群免密登录1.1 hadoop101节点操作1.2 hadoop102节点操作1.3 hadoop103节点操作 2. 创建用户2.1 hadoop101节点操作2.2 hadoop102节点操作2.3 hadoop103节点操作 三、安装准备1. 安装条件2. 安装jdk3. 安装MySQL…

Spring综合漏洞利用工具

Spring综合漏洞利用工具 工具目前支持Spring Cloud Gateway RCE(CVE-2022-22947)、Spring Cloud Function SpEL RCE (CVE-2022-22963)、Spring Framework RCE (CVE-2022-22965) 的检测以及利用,目前仅为第一个版本,后续会添加更多漏洞POC,以及…

并发编程基础

为什么开发中需要并发编程? 加快响应用户的时间使你的代码模块化、异步化、简单化充分利用CPU资源 基础概念 进程和线程 进程 我们常听说的应用程序,由指令和数据组成。当我们不运行应用程序时,这些应用程序就是放在磁盘上的二进制的代码…

matlab动力学共振颤振研究

1、内容简介 略 58-可以交流、咨询、答疑 采用四阶龙哥库塔方法求解方程组,方便控制碰撞的时间,检测到碰撞的时间,改变速度,调整位移,碰撞检测通过对比相对位移 2、内容说明 略 基本思路:采用四阶龙哥…

09 Redis之分布式系统(数据分区算法 + 系统搭建与集群操作)

6 分布式系统 Redis 分布式系统,官方称为 Redis Cluster,Redis 集群,其是 Redis 3.0 开始推出的分布式解决方案。其可以很好地解决不同 Redis 节点存放不同数据,并将用户请求方便地路由到不同 Redis 的问题。 什么是分布式系统?…

如何做代币分析:以 SOL 币为例

作者:lesleyfootprint.network 编译:cicifootprint.network 数据源:Solana Token Dashboard (仅包括以太坊数据) 在加密货币和数字资产领域,代币分析起着至关重要的作用。代币分析指的是深入研究与代币…

【蓝桥杯】青蛙跳杯子(BFS)

一.题目描述 二.输入描述 输入为 2 行,2 个串,表示初始局面和目标局面。我们约定,输入的串的长度不超过 15。 三.输出描述 输出要求为一个整数,表示至少需要多少步的青蛙跳。 四.问题分析 注意:空杯子只有一个 …

fl studio v20.8中文破解版(附Crack文件+图文安装教程)

fl studio20.8是一款功能强大的编曲软件,也就是众所熟知的水果软件。它可以编曲、剪辑、录音、混音,让您的计算机成为全功能录音室。除此之外,这款软件功能非常强大,为用户提供了许多音频处理工具,包含了编排&#xff…

什么是DOM?(详解)

什么是DOM? DOM的定义知识回顾什么是D?什么是O?什么是M?什么是DOM树?根节点对象与节点对象 DOM树简单举例DOM的主要用途 DOM的定义 DOM(Document Object Model,文档对象模型) W3C对…

MySQL 8自动备份脚本密码安全警告

作者:田逸(formyz) 目标需求 接到一个任务,需要在凌晨四点对一个数据库进行备份,不是进行全库备份,而是只对制定的数据库进行逐一导出,并生成以库为关键字的“.sql”文件。数据库的版本为MySQL …

宝塔面板mysql使用root账户远程登录

今日在弄数据库备份,我们两台服务器,一台测试环境一个正式环境;使用linux宝塔面板,数据库都是服务器本地mysql,打算在测试服务器添加远程数据库备份正式环境的数据库,需要注意的是添加远程服务器后必须点一…

Linux编程 1.3 系统文件IO- 内核表示

文件IO内核表示 1、内核中的三种数据结构 1.1文件描述符表 文件描述符标志 文件表项指针1.2 文件表项 文件状态标志 读、写、追加、同步和非阻塞等状态标志 当前文件偏移量 i节点表项指针 引用计数器1.3 节点 文件类型和对该文件的操作函数指针 当前文件长度 文件所有者 文…

外汇天眼:投资者关注!Cboe与MSCI发布多样化指数期权和波动率指数

芝加哥期权交易所全球市场(Cboe Global Markets)与摩根士丹利资本国际(MSCI)合作推出新的指数期权和波动率指数 芝加哥期权交易所全球市场(Cboe Global Markets, Inc.)今天宣布与MSCI Inc.(MSC…