大型语言模型的推理演算

这篇具有很好参考价值的文章主要介绍了大型语言模型的推理演算。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

大型语言模型的推理演算

作者|kipply

翻译|杨婷、徐佳渝、贾川‍‍

本文详细阐述了大型语言模型推理性能的几个基本原理,不含任何实验数据或复杂的数学公式,旨在加深读者对相关原理的理解。此外,作者还提出了一种极其简单的推理时延模型,该模型与实证结果拟合度高,可更好地预测和解释Transformer模型的推理过程。

为了更好地阅读本文,读者需了解一些Transformer模型的相关先验知识,比如《图解Transformer》的大部分内容。另外,了解与本文相关的参数计数文章也能更好地帮助读者理解本文内容。本文主要包括以下内容:

  • kv 缓存 (kv cache) 解释了在推理过程中缓存自注意力向量所带来的性能优化效果,以及可能导致的权衡(tradeoff)以及容量成本问题。

  • 容量(capacity)考虑了kv缓存的存储成本以及模型权重的存储成本之间的联系,并解释了容量大小对模型性能的影响。

  • 模型并行可帮助我们理解张量并行,以明确通信成本。

  • 时延计算需要从其他概念中获得理解,并创建用于确定推理速度底线(floorline)的方程。

  • 批大小(batch size)对性能的影响以及最优批大小为多少。

  • 通过transformer blocks执行flops(每秒浮点运算次数)计数操作,可以识别对flops速度有实质性贡献的操作。

  • 中间内存成本涵盖了激活(即激活函数的输出结果)占用额外内存,以及一些真实基准测试中的内存带宽成本。

  • 对比真实基准测试是指将计算出的内容与英伟达 FasterTransformer基准测试结果进行对比,并确定其中的差异。

(本文经授权后由OneFlow编译发布,译文转载请联系OneFlow获得授权。原文:https://kipp.ly/blog/transformer-inference-arithmetic/)

1

kv 缓存

采样时,Transformer模型会以给定的prompt/context作为初始输入进行推理(可以并行处理),随后逐一生成额外的token来继续完善生成的序列(体现了模型的自回归性质)。在采样过程中,Transformer会执行自注意力操作,为此需要给当前序列中的每个项目(无论是prompt/context还是生成的token)提取键值(kv)向量。这些向量存储在一个矩阵中,通常被称为kv缓存或者past缓存(开源GPT-2的实现称其为past缓存)。past缓存通常表示为:[batch, 2, num_heads, seq_len, features]。

大型语言模型的推理演算

kv缓存是为了避免每次采样token时重新计算键值向量。利用预先计算好的k值和v值,可以节省大量计算时间,尽管这会占用一定的存储空间。每个token所存储的字节数为:

 大型语言模型的推理演算

第一个因子2表示k和v这两个向量。在每一层中我们都要存储这些k,v向量,每个值都为一个大型语言模型的推理演算矩阵。然后再乘以2,以计算每个向量所需的字节数(在本文中,我们假设采用16位格式)。

我们乘以token嵌入(token embeddings)得到的权重为大型语言模型的推理演算大型语言模型的推理演算,其中每个token嵌入为大型语言模型的推理演算。这样,我们就可以算出所有层的k和v需进行的浮点运算次数为:

大型语言模型的推理演算

大型语言模型的推理演算乘以大型语言模型的推理演算需要进行大型语言模型的推理演算次浮点运算。另一个2表示我们需要重复两次这样的操作,一次用于计算k和一次用于计算v,然后再重复所有层数大型语言模型的推理演算

矩阵乘法(matmul)中的浮点运算次数为多少?

矩阵-向量(matrix-vector)乘法的计算公式是大型语言模型的推理演算,其中大型语言模型的推理演算大型语言模型的推理演算大型语言模型的推理演算。对于矩阵-矩阵(matrix-matrix)乘法,计算公式是 大型语言模型的推理演算,其中大型语言模型的推理演算大型语言模型的推理演算大型语言模型的推理演算因子十分重要,因为它反映了矩阵乘法中由乘法和加法组成的组合方式,即“乘法(1)-加法(2) 操作组合”。更多内容见讲义(lecture notes)。

这意味着对于一个520亿参数的模型来说 (以Anthropic中的模型为例,大型语言模型的推理演算 ,大型语言模型的推理演算),其浮点运算次数为:

大型语言模型的推理演算

假设有一个A100 GPU,其每秒可执行的浮点运算次数为大型语言模型的推理演算,其内存带宽可达大型语言模型的推理演算字节/秒。以下数字仅涉及kv权重及计算的数值:

大型语言模型的推理演算

Flops vs 内存有界性(Boundedness)

英伟达使用了数学带宽这个术语,我觉得这个术语真的很可爱。从技术上讲,这种描述存在于每个内核中,但可以抽象为操作组。 

Flops vs 内存有界性是Transformer推理和深度学习优化的常见问题。为了完成所需计算,通常需要加载权重,加载过程会占用内存带宽。假设通过加载权重已经得到了很好的优化,那么我们可以在加载权重的同时开始计算。

在这种情况下,flop bound意味着一段时间内存中没有任何数据传输;memory bound则意味着没有进行任何计算操作。

英伟达使用数学带宽(math bandwidth)来描述该情况,我觉得相当有意思。从技术上讲,这种划分通常是指每个文章来源地址https://www.toymoban.com/news/detail-414896.html

到了这里,关于大型语言模型的推理演算的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《大型语言模型自然语言生成评估》综述

    在快速发展的自然语言生成(NLG)评估领域中,引入大型语言模型(LLMs)为评估生成内容质量开辟了新途径,例如,连贯性、创造力和上下文相关性。本综述旨在提供一个关于利用LLMs进行NLG评估的全面概览,这是一个缺乏系统分析的新兴领域。 我们提出了一个连贯的分类体

    2024年01月23日
    浏览(58)
  • ​浅谈大型语言模型

    大型语言模型(Large Language Models,LLMs)是一类强大的人工智能模型,具有出色的自然语言处理能力。它们在许多任务中表现出色,如机器翻译、文本摘要、对话生成和情感分析等。下面我们将介绍大型语言模型的训练和生成过程,以及它们在实际应用中的重要性。 Large Lang

    2024年02月12日
    浏览(43)
  • 06.构建大型语言模型步骤

    在本章中,我们为理解LLMs奠定了基础。在本书的其余部分,我们将从头开始编写一个代码。我们将以 GPT 背后的基本思想为蓝图,分三个阶段解决这个问题,如图 1.9 所示。 图 1.9 本书中介绍的构建 LLMs 阶段包括实现 LLM 架构和数据准备过程、预训练以创建基础模型,以及微调

    2024年02月03日
    浏览(50)
  • 怎么建立大型语言模型

    建立大型语言模型通常涉及以下主要步骤: 数据收集:收集大规模的文本数据作为模型的训练数据。可以从各种来源获取数据,如互联网、书籍、新闻文章等。数据的质量和多样性对于模型的性能至关重要。 数据预处理:对收集到的数据进行预处理和清洗,以确保数据的质

    2024年02月14日
    浏览(44)
  • 多模态大型语言模型综述

    Authors: Davide Caffagni ; Federico Cocchi ; Luca Barsellotti ; Nicholas Moratelli ; Sara Sarto ; Lorenzo Baraldi ; Lorenzo Baraldi ; Marcella Cornia ; Rita Cucchiara Connecting text and visual modalities plays an essential role in generative intelligence. For this reason, inspired by the success of large language models, significant research efforts are bei

    2024年02月22日
    浏览(51)
  • 大语言模型(LLM)综述(五):使用大型语言模型的主要方法

    随着人工智能和机器学习领域的迅速发展,语言模型已经从简单的词袋模型(Bag-of-Words)和N-gram模型演变为更为复杂和强大的神经网络模型。在这一进程中,大型语言模型(LLM)尤为引人注目,它们不仅在自然语言处理(NLP)任务中表现出色,而且在各种跨领域应用中也展示

    2024年02月06日
    浏览(52)
  • 大型语言模型 (LLM)全解读

    大型语言模型 是 一种深度学习算法 ,可以 执行各种自然语言处理 (NLP) 任务 。 大型语言模型底层 使用多个转换器模型 , 底层转换器是一组神经网络 。 大型语言模型是 使用海量数据集 进行训练的超大型深度学习模型。 这也是它们能够识别、翻译、预测或生成文本或其他

    2024年01月23日
    浏览(64)
  • 【译】大型语言模型的直观解释

    原作:史蒂夫·纽曼 引子:我没有深入研究数学,而是解释了“为什么”它们被构建为“预测下一个单词”引擎,并提出了为什么它们会出现概念性错误的理论。   有很多文章解释了 ChatGPT 等大型语言模型 (LLMs) 的工作原理。然而,他们往往会深入研究那些与大多数用户无关

    2024年01月21日
    浏览(47)
  • Llama大型语言模型原理详解

    Llama大型语言模型是一种基于深度学习的自然语言处理模型,它在文本生成、问答、摘要等多种NLP任务中展现出强大的性能。本文将详细解析Llama模型的原理,包括其结构、训练过程以及工作机制,帮助读者深入理解这一先进的模型。 一、模型结构 Llama模型采用了一种基于T

    2024年04月12日
    浏览(38)
  • 如何评估大型语言模型(LLM)?

    编者按:近期几乎每隔一段时间,就有新的大语言模型发布,但是当下仍然没有一个通用的标准来评估这些大型语言模型的质量,我们急需一个可靠的、综合的LLM评估框架。 本文说明了为什么我们需要一个全面的大模型评估框架,并介绍了市面上这些现有的评估框架,同时指

    2024年02月10日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包