当前位置: 首页 > news >正文

SwiftInfer —— 大模型无限流式输入推理打破多轮对话长度限制

  • SwiftInfer —— 大模型无限流式输入推理飙升46%,打破多轮对话长度限制
    • StreamingLLM 篇
      • 一、为什么需要 StreamingLLM?
      • 二、StreamingLLM 思路是什么?
      • 三、StreamingLLM 优点是什么?

    • SwiftInfer 篇:基于TensorRT的StreamingLLM实现
      • 一、为什么需要 SwiftInfer?
      • 二、SwiftInfer 思路是什么?
      • 三、SwiftInfer 优点是什么?

StreamingLLM 篇

EFFICIENT STREAMING LANGUAGE MODELS WITH ATTENTION SINKS

:https://arxiv.org/pdf/2309.17453.pdf

一、为什么需要 StreamingLLM?

  1. 大语言模型能够记住的上下文长度问题,对ChatGPT等大模型应用与用户互动的质量的影响;
  2. LLM在预训练期间只能在有限的注意力窗口的限制下进行训练;
  3. 常见的KV Cache机制能够节约模型计算的时间,但是在多轮对话的情景下,key和value的缓存会消耗大量的内存,无法在有限的显存下无限扩展上下文

二次微调后的模型无法很好地泛化到比训练序列长度更长的文本,导致生成效果糟糕;

二、StreamingLLM 思路是什么?

通过观察注意力模块中Softmax的输出,发现了attention sink的现象。

注意力机制会为每一个token分配一个注意力值,而文本最初的几个token总是会分配到很多无用的 注意力。

当我们使用基于滑动窗口的注意力机制时,一旦这几个token被踢出了窗口,模型的生成效果就会 迅速崩溃。但只要一直把这几个token保留在窗口内,模型就能稳定地生成出高质量的文本。

比起密集注意力(Dense Attention)、窗口注意力(Window Attention)以及带重计算的滑动窗口注意力(Sliding Window w/ Re-computing),StreamingLLM基于attention sink的注意力机制无论是在计算复杂度还是生成效果上都表现优异。

在不需要重新训练模型的前提下,StreamingLLM能够直接兼容目前的主流大语言模型并改善推理 性能。

三、StreamingLLM 优点是什么?

StreamingLLM 能够在不牺牲推理速度和生成效果的前提下,可实现多轮对话总共400万个token的流式输入,22.2倍的推理速度提升。

SwiftInfer 篇:基于TensorRT的StreamingLLM实现

一、为什么需要 SwiftInfer?

StreamingLLM使用原生PyTorch实现,对于多轮对话推理场景落地应用的低成本、低延迟、高吞吐 等需求仍有优化空间。

二、SwiftInfer 思路是什么?

  1. 将StreamingLLM方法与TensorRT推理优化结合,使 SwiftInfer 不仅拥有 原始StreamingLLM的所有优点,而且还具有更高的运行效率;
  2. 重新实现了KV Cache机制以及带有位置偏移的注意力模块;

如下图所示,假设窗口大小为10个token,随着生成的token增加(由黄色方块表示),我们在KV 缓存中将中间的token踢出,与此同时,始终保持着文本开始的几个token(由蓝色方块表示)。由 于黄色方块的位置会发生变化,在计算注意力时,我们也需要重新注入位置信息。

需要注意的是,StreamingLLM不会直接提高模型能访问的上下文窗口,而是能够在支持流式超多 轮对话的同时保证模型的生成效果。

三、SwiftInfer 优点是什么?

原版本的StreamingLLM可以可靠地实现超过400万个token的流式输入,实现了比带重计算的滑动 窗口注意力机制高出22.2倍的速度提升。

Colossal-AI团队发布的SwiftInfer可以进一步提升推理性能,最多带来额外的最多46%的推理吞吐 速度提升,为大模型多轮对话推理提供低成本、低延迟、高吞吐的最佳实践。TensorRT-LLM团队 也在同期对StreamingLLM进行了类似支持。

http://www.xdnf.cn/news/91549.html

相关文章:

  • 序列决策问题(Sequential Decision-Making Problem)
  • 测试开发 - Java 自动化测试核心函数详解
  • 【云馨AI-大模型】Dify 1.2.0:极速集成 SearXNG,畅享智能联网搜索新境界,一键脚本轻松部署SearXNG
  • LeetCode算法题(Go语言实现)_55
  • 麒麟系统使用-系统设置
  • 详解BUG(又名:BUG的生命周期)
  • 从0到1构建企业级消息系统服务体系(终):当消息系统学会「读心术」揭秘情感计算如何让触达转化率飙升 200%
  • Unity 导出Excel表格
  • 可变参数模板 和 折叠表达式 (C++)
  • 人工智能-模型评价与优化(过拟合与欠拟合,数据分离与混淆矩阵,模型优化,实战)
  • 《AI大模型应知应会100篇》第32篇:大模型与医疗健康:辅助诊断的可能性与风险
  • RAG进阶:Embedding Models嵌入式模型原理和选择
  • 【网络应用程序设计】实验一:本地机上的聊天室
  • 1.HTTP协议与RESTful设计
  • char32_t、char16_t、wchar_t 用于 c++ 语言里存储 unicode 编码的字符,给出它们的具体定义
  • 【武汉理工大学第四届ACM校赛】copy
  • 凡清亮相第十五届北京国际电影节电影嘉年华,用音乐致敬青春与梦想
  • 调和平均数通俗易懂的解释以及为什么这样定义,有什么用
  • 《 C++ 点滴漫谈: 三十四 》从重复到泛型,C++ 函数模板的诞生之路
  • 客户对质量不满意,如何快速响应?
  • ycsb性能测试的优缺点
  • GRS认证有什么要求?GRS认证要审核多久,GRS认证流程
  • 旅游行业路线预定定制旅游小程序开发
  • vivado XMP使用
  • 2023蓝帽杯初赛内存取证-1
  • ROS2 安装详细教程,Ubuntu 22.04.5 LTS 64 位 操作系统
  • Nacos 是如何实现 Raft 协议的?Raft 协议的关键组件和流程是什么?
  • Java基础复习(JavaSE进阶)第八章 多线程
  • C++静态与动态联编区别解析
  • Vue3简介