【论文阅读】S3: Increasing GPU Utilization during Generative Inference for Higher Throughput

这篇具有很好参考价值的文章主要介绍了【论文阅读】S3: Increasing GPU Utilization during Generative Inference for Higher Throughput。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

原文链接:
https://arxiv.org/pdf/2306.06000.pdf

Abstract

名字:scheduling sequences with speculation

  • 除了已经很大的模型参数之外,保存序列中先前标记信息的键/值 (KV) 缓存可能会变得比模型本身还要大。
  • 它为KV缓存保留了内存的最大序列长度,以保证在不知道输出序列长度的情况下生成完整的序列。这限制了我们使用较小的批量大小,从而导致 GPU 利用率较低,最重要的是吞吐量较低
  • 设计一个系统预测输出序列的长度根据长度生成query

1 Intruduction

  • 内存容量和带宽。凸显了内存限制以及高效内存利用以提高 GPU 计算资源利用率的需求。、
  • 提高 GPU 利用率和吞吐量的常见方法是增加批处理大小:批次内输入共享模型权重
  • 因此,GPU 只需要将模型权重从其高带宽内存 (HBM) 加载到片上 SRAM 一次,然后将其重新用于批次内的所有输入——通常用于服务卷积和全连接神经网络
  • KV cache:
    • the self-attention layer in Transformer-based text generation LLMs presents a challenge to this simple optimization due to its autoregressive nature. Specifically, when generating a new token in a sequence, the model needs to attend to all previous tokens in the sequence, requiring the model to retain all information from previous tokens and store them in HBM. We call this region in the HBM holding the information key/value cache (KV cache).
  • KV 缓存的大小随着批处理大小和序列的增加而增长,这限制了最大批处理大小,从而降低了 GPU 利用率,最终降低了吞吐量。

我们提出了 S3,通过推测来调度序列,这是一个通过预测输出序列长度和减少内存浪费来最大化吞吐量的框架。

  • S3 不会影响模型的困惑度,因为它不会改变模型的架构

本文贡献:

  • 我们增加了较长延迟 SLO 下可实现的批量大小,并允许服务提供商通过使用更大的批量大小在在线和离线场景中提供更高的吞吐量。
  • 我们微调 Distillbert 模型来预测给定输入提示的输出序列长度
  • 我们提供了一种从错误预测中恢复的机制。 S3 抢占超出其分配内存的序列并重新训练预测器以从错误中学习

2 Background

  • 基于 Transformer 的生成模型是自回归的

  • 由于模型一次生成一个token,因此它必须迭代自身 n 次才能生成 n 个 token长的序列。

  • 一次迭代涉及一个输入token遍历模型,该模型是一堆transformer layer:

    • 其中包含一个attention layer、两层layernorm和两个feedforward layer。
    • the self-attention layer uses information on the past tokens to generate the next token.
  • 第( i t h i^{th} ith) 次迭代的模型使用当前标记 ( t i t_{i} ti) 及其在自注意力层中已生成的每个标记 ( t 0 … … t i − 1 t_{0}……t_{i-1} t0……ti1)。我们可以将自注意力层表示为:
    h o u t = s o f t m a x ( q i K T d h ) ∗ V h_{out}=softmax(\frac{q_{i}K^{T}}{\sqrt{d_{h}}})*V hout=softmax(dh qiKT)V

  • *where d h d_{h} dh is **hidden dimension of the model, h o u t h_{out} hout***当前隐藏输出向量, q i q^{i} qi是当前查询向量

  • K和V矩阵中的第j行代表 t j t_{j} tj的键和值向量,

  • 该模型将 K 和 V 矩阵存储为键/值 (KV) 缓存,以避免在每次迭代时生成键和值向量

  • 否则,它必须存储每个先前标记的隐藏状态,并在每个转换器层将其与权重矩阵 W Q K V W_{QKV} WQKV R d h ∗ 2 d h R^{d_{h}*2d_{h}} Rdh2dh相乘。

  • 这将需要每层 2(i − 1)dh FLOPs,几乎与 ti 处自注意力层的 2idh FLOPs 相同。

  • 使用半精度数字时,KV 缓存的大小为每个token 4 l d h 4ld_{h} 4ldh字节

  • 缓存为键和值缓存的每个数字使用 2 个字节,其中 l 是模型中transformer层的数量

    • a 20 billion parameter model, has 44 layers and 6144 hidden dimensions and thus uses 1MB per KV cache per token
    • 2.2 KV Cache Management on GPUs

  • KV 缓存相对较小(例如几个 MB),并且当序列较短时可以轻松存储在 GPU HBM(高带宽内存)中,因为缓存存储有关序列中先前token的信息

  • huggingface 这种方法允许库为每个缓存分配精确的内存量,但代价是频繁的内存访问

  • NVIDIA的FasterTransformer库为每个序列保留了内存的最大序列长度

  • 它通过简单地以仅**附加方式填充保留内存来删除冗余内存访问。**然而,这种方法有其自身的缺点,因为它为序列保留了超出严格必要的内存

2.3 Observation

  • 语言模型受内存限制
  • batch size越大并且sequence length越小,GPU的利用率越低

3 S3 Design

【论文阅读】S3: Increasing GPU Utilization during Generative Inference for Higher Throughput,大模型,论文阅读文章来源地址https://www.toymoban.com/news/detail-849069.html

  • 主要构成是三部分:
    • scheduler
    • predictor
    • supervisor
  • 文本生成查询到达主机 DRAM 中的请求池
  • 然后预测器预测调度程序用于批处理请求的输出序列长度
  • 调度程序将批处理分派到 GPU,文本生成器模型生成文本。
  • 主管监督 GPU 利用率并处理错误预测。
  • Output sequence length predictor:
    • 将序列长度进行分桶
      m a x s e q u e n c e l e n g t h n u m b e r o f b u c k e t s \frac{max sequence length}{number of buckets} numberofbucketsmaxsequencelength
    • Length-aware sequence scheduler:
    • 调度器根据预测结果对序列进行批处理和调度,以在不超过 GPU HBM 容量的情况下最大化 GPU 利用率
    • 自注意力层的输入不共享权重不会从batching中获益
    • 如果模型无法容纳在一个 GPU 中,S3 会使用管道并行性并以 Transformer 层粒度对模型进行分片。
  • Supervisor
    • 主管负责监督 GPU 利用率并处理错误预测。
    • the supervisor doubles the assigned memory for the evicted sequences to fix the short misprediction.
  • 文本生成请求到达请求池。预测器预测池中序列的输出序列长度。Supervisor在后台运行并检查当前的HBM使用情况,接下来,调度程序使用预测和可用的 HBM 来批量请求以获得最大 GPU 利用率。它通过将该批次调度到生成调度序列的 GPU 来完成其工作。

4 Evaluation

  • 前馈中的输入共享相同的权重,而自注意力中的输入则关注自己的序列。
  • 并行部分:
    • GPT-3一共有96层:
    • We partition GPT-3 into 6 and 8 GPUs in a pipelineparallel manner, allocating 16 and 12 transformer layers per GPU for each configuration, respectively.
    • We also evaluate on 10 GPU setting where we allocate 10 layers to 9 GPUs and 6 to the remaining GPU
  • More GPUs shard the model into finer pieces and leave more space for storing the KV cache, allowing us to increase the batch size.
  • 面向吞吐量的系统使用内存层次结构将部分模型存储在较慢的内存中并增加批量大小,然而,它们都为每个序列分配相同的内存,并且不考虑基于预测抢占序列。
  • 减少KV 缓存开销:
    • The issue of attention layers in Transformers requiring quadratic computation(二次计算)and memory with respect to the sequence length(记忆序列长度):
      • 低阶近似
      • 利用稀疏性
      • multi-query attention:每个键值 (KV) 缓存使用一个注意力头而不是采用多个注意力头
      • 模型压缩和量化

到了这里,关于【论文阅读】S3: Increasing GPU Utilization during Generative Inference for Higher Throughput的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 论文阅读:FusionGAN: A generative adversarial network for infrared and visible image fusion

    @article{ma2019fusiongan, title={FusionGAN: A generative adversarial network for infrared and visible image fusion}, author={Ma, Jiayi and Yu, Wei and Liang, Pengwei and Li, Chang and Jiang, Junjun}, journal={Information fusion}, volume={48}, pages={11–26}, year={2019}, publisher={Elsevier} } [论文下载地址] Image fusion, infrared image, visible image

    2024年01月22日
    浏览(48)
  • 【论文阅读】Multi-ConDoS: Multimodal Contrastive Domain Sharing Generative Adversarial Networks for Self-S

    paper:Multi-ConDoS: Multimodal Contrastive Domain Sharing Generative Adversarial Networks for Self-Supervised Medical Image Segmentation         现有的自监督医学图像分割通常会遇到域偏移问题(也就是说,预训练的输入分布不同于微调的输入分布)和/或多模态问题(也就是说,它仅基于单模态数据,无法利

    2024年02月03日
    浏览(50)
  • 【论文阅读】Automated Runtime-Aware Scheduling for Multi-Tenant DNN Inference on GPU

    该论文发布在 ICCAD’21 会议。该会议是EDA领域的顶级会议。 Author Hardware Problem Perspective Algorithm/Strategy Improvment/Achievement Fuxun Yu GPU Resource under-utilization Contention SW Scheduling Operator-level scheduling ML-based scheduling auto-search Reduced inference makespan Fuxun Yu 是一名来自微软的研究员。主要研究

    2024年01月24日
    浏览(49)
  • 论文笔记--Increasing Diversity While Maintaining Accuracy: Text Data Generation with Large Language Mode

    标题:Increasing Diversity While Maintaining Accuracy: Text Data Generation with Large Language Models and Human Interventions 作者:John Joon Young Chung, Ece Kamar, Saleema Amershi 日期:2023   文章给出了一种基于LLM自动生成训练数据的方法,且通过不同的实验设置尝试增加生成数据的多样性而又不降低数据

    2024年02月03日
    浏览(45)
  • 阅读笔记2:Characterization of Metabolic Patterns in Mouse Oocytes during Meiotic Maturation

    Characterization of metabolic patterns in mouse oocytes during meiotic maturation 作者:Ling Li, Shuai Zhu, Wenjie Shu, …, Xuejiang Guo, Minjian Chen, Qiang Wang 发表期刊:Molecular Cell 发表时间:November 5, 2020 摘要解读 研究背景 : 平衡及时的代谢对于产生高质量的卵子至关重要。然而,支持卵母细胞发展的代

    2024年02月21日
    浏览(49)
  • GAN | 论文精读 Generative Adversarial Nets

    提出一个GAN (Generative Adversarial Nets) (1)生成模型G(Generative),是用来得到分布的,在统计学眼里,整个世界是通过采样不同的分布得到的,生成东西的话,目前就是要抓住一个数据的分布, (2)辨别模型D(D) ,他是来辨别你的样本究竟是从真实世界来的呢,还是来自

    2024年02月11日
    浏览(44)
  • 【论文精度(李沐老师)】Generative Adversarial Nets

    我们提出了一个新的framework,通过一个对抗的过程来估计生成模型,其中会同时训练两个模型: 生成模型G 来获取整个数据的分布, 辨别模型D 来分辨数据是来自于训练样本还是生成模型G。生成模型G的任务是尽量的让辨别模型D犯错。这个framework对应一个博弈论中双人对抗游

    2023年04月14日
    浏览(45)
  • GPT(Generative Pre-Training)论文解读及实现(一)

    Given an unsupervised corpus of tokens U = {u1, . . . , un}, we use a standard language modeling objective to maximize the following likelihood: 在给定语料上下文环境下,目标时最大化下面的语言模型,即在给定前 i-1个词和参数θ前提下,使第 i 个词出现的概率最大。 we use a multi-layer Transformer decoder [34] for

    2024年02月15日
    浏览(159)
  • 【论文笔记】Improving Language Understanding by Generative Pre-Training

    背景: 自然语言理解 包括广泛的不同任务,如文本蕴涵、QA问答、语义相似性评估和文档分类。 问题: 尽管 大型未标记文本语料库 (corpora)非常丰富;但用于 学习特定任务的标记数据 却很少,这使得采用传统的有监督深度学习方法训练得到的模型表现较差。 解决: 通过

    2024年03月24日
    浏览(77)
  • AWS复制EC2文件到S3,g4dn.2xlarge没有NVIDIA GPU 驱动问题

    1、给instances权限 action Security modify IAM role 把提前创建好的role给这个instance即可 2、复制到bucket 如果要自己安装,参考https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-nvidia-driver.html#public-nvidia-driver 但实际上只需要选择操作系统的时候选择带有GPU的就可以了,docker和python3也自动就

    2024年02月11日
    浏览(48)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包