吞吐量提升5倍,联合设计后端系统和前端语言的LLM接口来了

大型语言模型 (llm) 被广泛应用于需要多个链式生成调用、高级提示技术、控制流以及与外部环境交互的复杂任务。尽管如此,目前用于编程和执行这些应用程序的高效系统却存在明显的不足之处。

研究人员最近提出了一种新的结构化生成语言(Structured Generation Language),称为SGLang,旨在改进与LLM的交互性。通过整合后端运行时系统和前端语言的设计,SGLang使得LLM的性能更高、更易控制。这项研究也获得了机器学习领域的知名学者、CMU助理教授陈天奇的转发。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

吞吐量提升5倍,联合设计后端系统和前端语言的LLM接口来了

总的来说,SGLang 的贡献主要包括:

在后端,研究团队提出了 RadixAttention,这是一种跨多个 LLM 生成调用的 KV 缓存(KV cache)复用技术,自动且高效。

立即学习“前端免费学习笔记(深入)”;

在前端开发中,团队研究出一种灵活的域特定语言,可嵌入Python,用于控制生成过程。这种语言可以在解释器模式或编译器模式下执行。

后端前端组件协同工作,可提高复杂 LLM 程序的执行和编程效率。

该研究使用 SGLang 实现了常见的 LLM 工作负载,包括智能体、推理、提取、对话和小样本学习任务,并在 NVIDIA A10G GPU 上采用 Llama-7B 和 Mixtral-8x7B 模型。如下图 1 、图 2 表明,与现有系统(即 Guidance 和 vLLM)相比,SGLang 的吞吐量提高了 5 倍。

吞吐量提升5倍,联合设计后端系统和前端语言的LLM接口来了

图 1:不同系统在 LLM 任务上的吞吐量(A10G、FP16 上的 Llama-7B、张量并行度 = 1)

吞吐量提升5倍,联合设计后端系统和前端语言的LLM接口来了

图 2:不同系统在 LLM 任务上的吞吐量(A10G、FP16 上的 Mixtral-8x7B,张量并行度 = 8)

后端:使用 RadixAttention 自动 KV 缓存复用

在 SGLang 运行时的开发过程中,该研究发现了复杂 LLM 程序的优化关键 ——KV 缓存复用,当前系统对此处理不佳。KV 缓存复用意味着具有相同前缀的不同 prompt 可以共享中间 KV 缓存,避免冗余的内存和计算。在涉及多个 LLM 调用的复杂程序中,可能存在各种 KV 缓存复用模式。下图 3 说明了 LLM 工作负载中常见的四种此类模式。虽然某些系统能够在某些场景下处理 KV 缓存复用,但通常需要手动配置和临时调整。此外,由于可能的复用模式的多样性,即使通过手动配置,现有系统也无法自动适应所有场景。

吞吐量提升5倍,联合设计后端系统和前端语言的LLM接口来了

图 3:KV 缓存共享示例。蓝色框是可共享的 prompt 部分,绿色框是不可共享的部分,黄色框是不可共享的模型输出。可共享的部分包括小样本学习示例、自洽(self-consistency)问题、多轮对话中的对话历史以及思维树(tree-of-thought)中的搜索历史。

为了系统地利用这些复用机会,该研究提出了一种在运行时自动 KV 缓存复用的新方法 —— RadixAttention。该方法不是在完成生成请求后丢弃 KV 缓存,而是在基数树(radix tree)中保留 prompt 和生成结果的 KV 缓存。这种数据结构可以实现高效的前缀搜索、插入和驱逐。该研究实现了最近最少使用(LRU)驱逐策略,并辅以缓存感知调度策略,以提高缓存命中率。

基数树可作为 trie(前缀树)节省空间的替代方案。与典型的树不同,基数树的边缘不仅可以用单个元素来标记,还可以用不同长度的元素序列来标记,这提高了基数树的效率。

该研究利用基数树来管理映射,这种映射是在充当键的 token 序列和充当值的相应 KV 缓存张量之间进行的。这些 KV 缓存张量以分页布局存储在 GPU 上,其中每个页的大小相当于一个 token。

闪念贝壳 闪念贝壳

闪念贝壳是一款AI 驱动的智能语音笔记,随时随地用语音记录你的每一个想法。

闪念贝壳 218 查看详情 闪念贝壳

考虑到 GPU 内存容量有限,无法重新训练无限的 KV 缓存张量,这就需要驱逐策略。该研究采用 LRU 驱逐策略,递归地驱逐叶节点。此外,RadixAttention 与连续批处理和分页注意力等现有技术兼容。对于多模态模型,RadixAttention 可以轻松扩展以处理图像 token。

下图说明了在处理多个传入请求时如何维护基数树。前端总是向运行时发送完整的 prompt,运行时会自动进行前缀匹配、复用和缓存。树形结构存储在 CPU 上,维护开销较小。

吞吐量提升5倍,联合设计后端系统和前端语言的LLM接口来了

图 4. 采用 LRU 驱逐策略的 RadixAttention 操作示例,分九个步骤进行说明。

图 4 演示了基数树响应各种请求的动态演变。这些请求包括两个聊天会话、一批小样本学习查询和自洽性抽样。每个树边缘都带有一个标签,表示子字符串或 token 序列。节点采用颜色编码以反映不同的状态:绿色表示新添加的节点,蓝色表示在该时间点访问的缓存节点,红色表示已被驱逐的节点。

前端:使用 SGLang 轻松进行 LLM 编程

在前端,该研究提出了 SGLang,一种嵌入在 Python 中的特定于领域的语言,允许表达高级 prompt 技术、控制流、多模态、解码约束和外部交互。SGLang 函数可以通过各种后端运行,例如 OpenAI、Anthropic、Gemini 和本地模型。

吞吐量提升5倍,联合设计后端系统和前端语言的LLM接口来了

图 5. 用 SGLang 实现多维文章评分。

图 5 显示了一个具体示例。它利用分支 – 解决 – 合并 prompt 技术实现多维文章评分。该函数使用 LLM 从多个维度评估文章的质量,合并判断,生成摘要,并分配最终等级。突出显示的区域说明了 SGLang API 的使用。(1) fork 创建 prompt 的多个并行副本。(2) gen 调用 LLM 生成并将结果存储在变量中。该调用是非阻塞的,因此它允许多个生成调用在后台同时运行。(3) [variable_name] 检索生成的结果。(4) 选择对生成施加约束。(5) run 使用其参数执行 SGLang 函数。

给定这样一个 SGLang 程序,我们可以通过解释器执行它,也可以将其跟踪为数据流图并使用图执行器运行它。后一种情况为一些潜在的编译器优化开辟了空间,例如代码移动、指令选择和自动调整。

SGLang 的语法很大程度上受到 Guidance 的启发,并引入了新的原语,还处理程序内并行性和批处理。所有这些新功能都有助于 SGLang 的出色性能。

基准测试

研究团队在常见的 LLM 工作负载上测试了其系统,并报告了所实现的吞吐量。

具体来说,该研究在 1 个 NVIDIA A10G GPU (24GB) 上测试了 Llama-7B,在 8 个具有张量并行性的 NVIDIA A10G GPU 上使用 FP16 精度测试了 Mixtral-8x7B,并使用 vllm v0.2.5、指导 v0.1.8 和 Hugging Face TGI v1.3.0 作为基准系统。

如图 1 和图 2 所示,SGLang 在所有基准测试中均优于基准系统,吞吐量提高了 5 倍。它在延迟方面也表现出色,特别是对于第一个 token 延迟,其中前缀缓存命中可以带来显著的好处。这些改进归功于 RadixAttention 的自动 KV 缓存复用、解释器实现的程序内并行性以及前端和后端系统的协同设计。此外,消融研究表明,即使没有缓存命中,也没有明显的开销,这会导致在运行时始终启用 RadixAttention。

参考链接:https://lmsys.org/blog/2024-01-17-sglang/

以上就是吞吐量提升5倍,联合设计后端系统和前端语言的LLM接口来了的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1004126.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月1日 23:41:11
下一篇 2025年12月1日 23:41:32

相关推荐

  • 表单中的AI助手怎么集成?如何添加智能填写建议?

    表单中添加ai助手的核心是通过前后端协同实现智能填写建议,具体需从后端智能服务构建、前端交互逻辑、性能优化及复杂场景处理等方面入手。首先应根据需求选择合适的ai能力:若仅需关键词匹配,可采用轻量级规则引擎或本地模型;若需语义理解,则调用大型语言模型(llm)api如gpt、文心一言等更为合适。后端需…

    2025年12月22日
    000
  • 如何将兰链用于AI工作流程自动化

    引言 在飞速发展的AI领域,自动化是提升效率和可扩展性的关键。LangChain是一个开源框架,它提供强大的工具,用于将大型语言模型(LLM)集成到应用程序中。无论您是构建聊天机器人、数据处理管道还是智能决策系统,LangChain都能通过无缝连接不同的组件,实现AI工作流的自动化。本文将探讨如何利…

    2025年12月19日
    000
  • Netflix,但更好

    免责声明:本项目与Netflix无关,仅为技术实验。 超越Netflix:构建更智能的电影推荐系统 Netflix作为流媒体巨头,拥有超过2亿用户和17000多部电影及电视节目,其推荐系统功不可没。该系统基于用户观看历史、相似节目、用户趋势和热门剧集等数据进行推荐。但如果我们能以更简便的方式复制这一…

    2025年12月19日
    000
  • 如何在双子座AI中生成结构化输出(JSON,YAML)

    本文介绍如何使用google gemini api快速生成高质量的api文档,并演示如何灵活地输出json或yaml格式的结果。作者shrijith venkatrama,hexmos创始人,分享了liveapi的构建过程,这是一个通过代码生成api文档的强大工具。 步骤1:获取Gemini API…

    2025年12月19日
    000
  • 节点&#s googlegenerativeai:将AI技术纳入JavaScript

    概述 近年来,人工智能技术飞速发展,开发者们迫切需要将AI融入应用之中。Google 的 googlegenerativeai Node.js 包为 JavaScript 开发者提供了一种便捷途径,利用 Gemini 模型构建强大的AI功能。 该包也支持 Python 和 Go 版本,并提供 RES…

    2025年12月19日
    100
  • 代码异味 – 非命令式函数名称

    清晰的函数命名:避免歧义,提升代码可读性 简而言之:含糊不清的函数名会隐藏其功能,令读者困惑。请使用具有描述性、面向动作的名称。 问题 函数用途不明确认知负担增加上下文误导可读性降低协作困难功能隐藏 解决方案 使用面向动作的动词使用描述性名称反映函数目的避免通用术语提供有意义的上下文明确表达单一职责…

    2025年12月19日 好文分享
    000
  • 轨道:太阳系之旅

    去年十月,Masons团队参与了2024年NASA Space Apps Cairo黑客马拉松,并开发了一个令人振奋的项目——Orbit。Orbit是一个交互式3D网页应用,能够模拟太阳系并追踪近地天体(NEO)。它基于Next.js、Three.js和Golang后端构建,旨在提供宇宙的实时信息,…

    2025年12月19日
    000
  • LightUp 简介:人工智能驱动的网络注释

    在当今的数字世界中,我们不断受到信息的轰炸。无论是阅读文章、分析报告还是研究新主题,在选项卡之间跳转以收集背景信息或见解都会扰乱我们的流程和生产力。这就是 lightup 的用武之地:一款人工智能驱动的浏览器扩展程序,旨在帮助您保持专注、获得即时深度并直接在您正在查看的页面上扩展您的理解。 问题 您…

    2025年12月19日
    000
  • AI 星座:Nextjs 和 Gemini 的体验

    大家好! 我担任后端开发人员已有几年了,我一直在寻找新技术。最近,我对人工智能和占星学的结合产生了兴趣,并决定使用 Gemini API 创建一个星座预测生成器。 项目: 在这个项目中,我使用 Next.js 作为前端,这是学习新框架的绝佳机会。在后端,我使用 Next.js 和 GEMINI AP…

    2025年12月19日
    000
  • XIIAI人工智能驱动的MVC框架

    早上好! 我很高兴分享我使用 Bolt.new 创建的新框架,该框架可自动生成 AI 驱动的 MVC 项目。想象一下使用 AI 生成的代码工具来构建整个 AI 自动化 MVC 生成的项目!在此演示中,您将看到创建任何应用程序是多么容易。您需要做的就是设置界面,连接模型响应的控制器,选择您的技术堆栈,…

    2025年12月19日
    000
  • 测试 LLM 应用程序:模拟 SDK 与直接 HTTP 请求中的不幸事件

    介绍 让我在这篇博客的前言中说,这个与我的其他博客不同,在这些博客中我能够逐步完成完成任务的步骤。相反,这更多地反映了我在尝试向我的项目 gimme_readme 添加测试时遇到的挑战,以及我在此过程中学到的关于测试 llm 支持的应用程序的知识。 背景 本周,我和我的开源开发同学的任务是向包含大型…

    2025年12月19日
    000
  • Gemini Pro API安全设置详解:如何有效避免内容阻断

    gemini pro api在自定义安全设置后仍可能阻断回复。本文将详细解释为何直接设置字典无效,并提供正确的python代码示例,指导开发者通过导入`safetysetting`、`harmcategory`和`harmblockthreshold`等类,以对象列表形式配置安全阈值,从而有效管理内…

    2025年12月14日
    000
  • 正确配置Gemini Pro API安全设置以避免内容屏蔽

    本文旨在解决gemini pro api在使用自定义安全设置时仍遭遇内容屏蔽的问题。我们将深入探讨api安全设置的正确配置方法,指出常见误区,并提供基于`safetysetting`对象的标准实现方案,确保开发者能有效管理内容过滤,提升api调用的成功率。 在使用Google Gemini Pro …

    2025年12月14日
    000
  • 解决Gemini Pro API内容安全策略阻断回复的正确姿势

    本文旨在解决Gemini Pro API在使用`safety_settings`时仍遭遇内容阻断的问题。核心在于,许多开发者错误地使用字典配置安全设置,而API实际期望的是一个`SafetySetting`对象列表。本教程将详细指导如何正确导入相关类并构建符合API要求的安全设置,确保即使是敏感内容…

    2025年12月14日
    000
  • Copilot如何高效调用大型语言模型并避免资源浪费?

    Copilot:高效利用大型语言模型的秘诀 Copilot强大的代码补全和智能提示功能,得益于其对大型语言模型(如Claude、Gemini和GPT)的巧妙调用。本文将揭秘Copilot如何高效地与这些模型交互,避免资源过度消耗。 精细化的提示词策略 Copilot并非简单地将所有信息一股脑地塞给模…

    2025年12月13日
    000
  • AI模型的兴起,能够在各个行业创建内容,设计和解决方案

    引言 人工智能(AI)已不再是遥不可及的未来科技,它正深刻地改变着当今各行各业。先进的AI模型的出现,彻底革新了企业的内容创作、产品设计以及创新解决方案的开发模式。从AI写作助手到自动化图形设计工具,再到智能化业务解决方案,AI正以前所未有的方式改变着我们的工作方式和人机交互模式。 AI如何重塑内容…

    2025年12月13日
    000
  • 自动化每日Arxiv纸摘要和松弛通知

    this python script automates the process of fetching daily arxiv papers, generating summaries using gemini, and posting them to a slack channel. let&#…

    2025年12月13日
    000
  • 使用开源工具构建自己的AI模型:分步技术指南

    为什么构建自定义AI模型? 大型语言模型API(如GPT-4或Gemini)功能强大,但存在成本、延迟和缺乏自定义等局限性。开源模型(例如LLaMA 3、Mistral或BERT)允许您完全掌控模型,调整架构,并针对特定任务进行优化,例如医疗文本分析或实时无人机目标检测。本指南将指导您使用Huggi…

    2025年12月13日
    000
  • 使用 Nestjs、RAG、Prisma 和 Gemini API 构建上下文感知的待办事项列表

    本教程演示如何利用检索增强生成 (RAG) 技术构建一个具备上下文感知能力的待办事项列表应用。我们将结合Google Gemini API进行文本嵌入,借助pgvector高效管理向量数据,并使用Prisma和NestJS框架操作PostgreSQL数据库。此方案将实现诸如去重任务和基于上下文检索相…

    2025年12月13日
    000
  • 调试您的 Crew:在 CrewAI 中隔离代理和任务

    在使用CrewAI构建多代理AI系统时,调试和修改单个代理或任务可能会变得复杂。本文将介绍如何独立运行CrewAI中的代理和任务,从而简化调试和迭代过程。 为什么要隔离代理和任务? 隔离CrewAI组件如同测试大型系统的各个部件一样,具有以下优势: 简化调试: 快速定位问题,无需遍历整个系统的日志。…

    2025年12月13日
    000

发表回复

登录后才能评论
关注微信