跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 浅色
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • 深色
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(LCZ-Blue)
  • 不使用皮肤
  • LCZ-Green
  • LCZ-Blue
  • LCZ-Black
折叠
品牌标识

抡锤者

首页 版块 标签 硬件 AI 广场
  1. 主页
  2. 版块
  3. LLM讨论区
  4. 关于SGLang长任务kv缓存prefill优化以及agent初始prompt长度优化

关于SGLang长任务kv缓存prefill优化以及agent初始prompt长度优化

已定时 已固定 已锁定 已移动 LLM讨论区
sg-lang
3 帖子 2 发布者 240 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • N 离线
    N 离线
    neo
    德高望重 劳动模范
    编写于 最后由 neo 编辑
    #1

    问题

    用了一段时间SGLang了,发现一些问题:

    • 问题一:当agent执行多轮长任务多工具时,全部prefill的次数并不低(如果只多轮聊天不会有这种情况)。

    • 问题二:在agent中加入的MCP工具越多,初始提示词越大,我的单MCP就占了20+k。
      所以写了个agent网关来解决这两个问题:

    解决

    • 在agent和SGLang之间添加agent网关来解决。

    • 解决问题一:通过SGLang开启会话级radix缓存来提高kv缓存命中,但使用这个参数的先决条件是agent必须提交session ID,这个不是行业标准,所以agent请求中基本没有会话ID或位置名称不兼容,通过网关可以解决这个问题,经过初步测试,多轮长任务时基本不会all prefill了,任务执行效率提升很大。

    • 解决问题二:MCP工具多时初始提示词大是因为agent把所有注册的MCP工具都加载到了初始提示词,网关的作用是通过三层工具暴露策略在不损失 MCP 工具能力的前提下,减少 Agent 初始上下文中的工具定义占用。比如我的Agent 初始上下文的 22k tokens 降至 <5k tokens。

    效果

    • 使用默认radix缓存和开启会话radix缓存的metrics日志结果对比(deepseek分析,日志基于多轮长任务多工具的情况)
      0ee8211f-1426-41f4-80f3-18c4ec84dfbe-image.jpeg
    • MCP工具提示词长度缩减效果(clade code)
      • 前
        ae7d49b8-18c9-43df-818a-4005d40d1f3c-image.jpeg
      • 后
        432f1d5e-d4f6-4f7a-9d4d-4bb7aacd3ca5-image.jpeg

    软硬件环境

    • GPU: RTX3080 20G*2
    • 系统:Ubuntu22.04
    • 框架:SGLang v0.5.17
    • 模型:Qwen3.6-27b-INT
    • Agent:Claude Code
    • MCP server: searXNG、playwright、GitHub、fetch-mcp、hindsight

    说明

    • 开启会话级radix缓存需要SGLang版本v0.5.17
    • 开启参数:
      • --enable-session-radix-cache
      • SGLANG_ENABLE_UNIFIED_RADIX_TREE=1 (Qwen系列可以不用这个参数,自动开启,其它模型需要根据模型类型来判断)
    • 目前网关先按照我的环境写的,其他的需要一定的适配,比如CC的请求中是有session ID,只是位置和名称与SGLang的要求不兼容。
    • 后面应该会先做Hermes的适配。

    如果有兄弟跟我有一样的情况,到时可以到GitHub上自取。

    1 条回复 最后回复
    2
    • terryT 在线
      terryT 在线
      terry
      超级版主
      编写于 最后由 terry 编辑
      #2

      很好的分享,可以分享到github,但是你的这个观察和我的体验不符合。我没研究参数,是hermes配置的,我是直接拿来干活的,测试了一天,就是实际效果它远远快于VLLM, Llama.cpp,反应不能说很敏捷,无法和在线AI比,但是比起那两货可以说是突飞猛进。和在线的差距有,不过可以接受。

      另外建议你丰富下你的使用场景,硬件配置,模型权重,软件环境,参数等,这样大家好讨论。有截图和设备实拍更好,方便论坛提升信誉,论坛已经被丢入了谷歌的垃圾箱。

      油管:https://www.youtube.com/@抡锤者

      N 1 条回复 最后回复
      0
      • terryT terry

        很好的分享,可以分享到github,但是你的这个观察和我的体验不符合。我没研究参数,是hermes配置的,我是直接拿来干活的,测试了一天,就是实际效果它远远快于VLLM, Llama.cpp,反应不能说很敏捷,无法和在线AI比,但是比起那两货可以说是突飞猛进。和在线的差距有,不过可以接受。

        另外建议你丰富下你的使用场景,硬件配置,模型权重,软件环境,参数等,这样大家好讨论。有截图和设备实拍更好,方便论坛提升信誉,论坛已经被丢入了谷歌的垃圾箱。

        N 离线
        N 离线
        neo
        德高望重 劳动模范
        编写于 最后由 编辑
        #3

        @terry 确实,比起VLLM和llama.cpp,SGLang因架构原因kv缓存毋庸置疑的强很多,使用起来感觉还好我想应该是因为你的GPU prefill能力强很多,没有3080这么明显的原因,另外刚从llama.cpp切换到SGLang时,本身会感觉快了不少了。我完善了帖子的内容,希望能给论坛带来信誉提升。

        1 条回复 最后回复
        1
        • ,terryT terry 固定了此主题
        • ,系统 取消固定了此主题

        你好!看起来您对这段对话很感兴趣,但您还没有一个账号。

        厌倦了每次访问都刷到同样的帖子?您注册账号后,您每次返回时都能精准定位到您上次浏览的位置,并可选择接收新回复通知(通过邮件或推送通知)。您还能收藏书签、为帖子顶,向社区成员表达您的欣赏。

        有了你的建议,这篇帖子会更精彩哦 💗

        注册 登录
        回复
        • 在新帖中回复
        登录后回复
        • 从旧到新
        • 从新到旧
        • 最多赞同


        • 登录

        • 登录或注册以进行搜索。
        • 第一个帖子
          最后一个帖子
        0
        • 版块
        • 最新
        • 标签
        • 热门
        • 用户
        • 群组