ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Agnes 3.0 Flash 的 sglang 部署补丁指南:用原生 sglang 镜像无缝推理混合注意力模型

Agnes 3.0 Flash 的 sglang 部署补丁指南:用原生 sglang 镜像无缝推理混合注意力模型 大模型多模态推理模型【免费下载链接】Agnes-3.0-Flash项目地址https://ai.gitcode.com/hf_mirrors/Agnes-AI/Agnes-3.0-Flash点击查看免费下载导读本文围绕仓库内 sglang_patch/README.md 展开系统讲解如何在不修改 sglang 官方镜像的前提下用三份补丁文件让 Agnes 3.0 Flash 这个自定义model_type: agnes的混合注意力多模态模型在 sglang 服务端上跑起来。读完本文你将掌握预构建补丁变体与通用apply_patch.py打补丁的取舍、三份补丁各自承担的职责与底层实现、完整的 Docker 启动命令与参数以及折叠并行 FFN 分支后数值精度的实测结论。背景为什么 Agnes 3.0 Flash 需要补丁Agnes 3.0 Flash 的 Hugging Face 检查点config.json声明了自定义的model_type: agnes其文本部分每一层按layer_types交替使用agnes_delta_attention与agnes_global_attention两种注意力并且每层携带一个独立的并行 FFN 分支parallel_ffn_intermediate_size: 2048叠加在主 FFN 的intermediate_size: 17408之上。这些命名与结构在标准 sglang 引擎中没有对应物。而 sglang 内部为 Qwen3.5 系模型内置了一套混合注意力delta-rule global attention实现。仓库的做法不是为 Agnes 重写一个模型文件而是写一层“翻译层”把 Agnes 的配置和权重张量翻译成 sglang 内置实现能直接消费的形态。这正是 sglang_patch/README.md 的核心思想——除补丁覆盖的三份文件外镜像中其他内容一概不动。总体架构覆盖三份文件 一个启动脚本补丁共由三份文件构成各司其职文件改动类型职责sglang/srt/configs/agnes.py新增读取model_type: agnes配置映射到 sglang 内置混合delta-rule global attention实现由global_attention_interval生成层计划、把并行 FFN 宽度并入intermediate_size、把检查点目录记为配置字段供加载器使用sglang/srt/utils/hf_transformers/common.py末尾 3 行将AgnesConfig注册进_CONFIG_REGISTRY键为model_typeagnessglang/srt/models/qwen3_5.py在load_weights的权重流前插入一个生成器张量名翻译delta_attn.*→linear_attn.*、global_attn.*→self_attn.*并把每层mlp.parallel_ffn.{gate,up,down}_proj拼接到主投影上gate/up 沿输出维、down 沿输入维对应的目录结构有两份预构建变体以及一份通用打补丁脚本sglang_patch/nightly-dev-20260908-20ca564b/对应镜像lmsysorg/sglang:nightly-dev-20260908-20ca564b已实测服务并完成数值测量见下文sglang_patch/v0.5.19/对应sglang0.5.19由发布源码生成尚未做服务实测其他版本由serve.sh检测不到匹配变体时用 apply_patch.py 对已安装的 sglang 包就地打补丁一键启动Docker 命令与 serve.sh入口脚本是仓库根目录的 serve.sh。用官方 sglang 镜像直接挂载模型目录即可docker run --gpus all --shm-size 64g -p 30001:30002 \ -v /path/to/agnes-3.0-flash:/model \ lmsysorg/sglang:nightly-dev-20260908-20ca564b \ bash /model/serve.sh # extra sglang args may follow, e.g. --tp 2脚本内部依次做了四件事通过python3 -c import sglang...定位镜像内 sglang 包目录与版本号按版本号匹配变体包含20ca564b走nightly-dev-20260908-20ca564b0.5.19开头走v0.5.19都不匹配则调用apply_patch.py就地打补丁cp -r sglang_patch/$VARIANT/sglang/. $PKG/覆盖或用脚本修改安装目录导出AGNES_MODEL_PATH$D作为加载器的回退路径exec python3 -m sglang.launch_server --model-path $D --trust-remote-code --host 0.0.0.0 --port 8080 $启动服务--tp 2之类的额外参数会原样透传。注意两点--trust-remote-code是必需的——sglang 先通过 transformers 解析模型配置而 transformers 读取检查点自带的 configuration_agnes.py容器内服务端口固定为 8080通过-p 30001:30002映射到宿主机 30001 访问。配置翻译层agnes.py 的核心逻辑仓库根目录的 agnes_sglang_config.py两份变体中的configs/agnes.py与之内容一致定义了AgnesConfig(Qwen3_5Config)。它在__init__中完成以下映射弹出auto_map服务端不使用 transformers 远程代码text_config的model_type改写为qwen3_5_text弹出parallel_ffn_intermediate_size记为agnes_parallel_ffn_intermediate_size弹出layer_types与global_attention_interval无前者则尝试full_attention_interval再没有就从layer_types中第一个agnes_global_attention的位置推导间隔最终写入full_attention_interval缺省值 4主intermediate_size与并行宽度相加后作为新的intermediate_size并行分支在加载期折叠进主 MLP原值保留在agnes_main_intermediate_sizevision_config的model_type改写为qwen3_5并强制architectures [Qwen3_5ForConditionalGeneration]让所有下游检查看到内置的混合架构最后把顶层model_type覆盖回qwen3_5。from_pretrained类方法还有一个关键细节把检查点目录路径写入配置字典config_dict[agnes_model_path]及text_config内同样写入而不是对象属性。原因是配置要通过to_dict往返传给 worker 进程to_dict只保留从__init__进入的字段会丢弃之后设置的属性而from_pretrained的 kwargs 只覆盖已知字段也带不进去。对照 config.json 的实际值可以验证映射结果global_attention_interval: 4与layer_types中每 4 层出现一次agnes_global_attention72 层共 18 个全局层完全吻合intermediate_size将从 17408 变为 17408 2048 19456。注册与权重翻译common.py 与 qwen3_5.pycommon.py在文件末尾追加三行# agnes from sglang.srt.configs.agnes import AgnesConfig as _AgnesConfig _CONFIG_REGISTRY[_AgnesConfig.model_type] _AgnesConfig把AgnesConfig注册进该文件的_CONFIG_REGISTRY字典之后 sglang 遇到model_type: agnes就能解析到正确的配置类。qwen3_5.py的改动集中在load_weights权重流的最前端插入一个生成器_agnes_translate_weights(model, weights)在 nightly 变体中位于QWEN3_5_KV_SCALE_MAPPER定义之前、四个load_weights方法首行调用qwen3_5.py。其行为从text_config读取agnes_parallel_ffn_intermediate_size若为 0检查点没有并行分支则原样透传权重流定位检查点目录优先cfg.agnes_model_path→model.config.agnes_model_path→ 环境变量AGNES_MODEL_PATH→_name_or_path找不到目录会抛出带提示的RuntimeError_AgnesBranchReader解析model.safetensors.index.json的weight_map用 safetensors 的safe_open懒加载分片文件正是仓库根目录的model-00001-of-00019.safetensors系列与 model.safetensors.index.json用正则^(.*\.layers\.\d\.mlp\.)(gate_proj|up_proj|down_proj)\.weight$匹配主 MLP 投影跳过visual与mtp前缀读出同层的parallel_ffn.{gate,up,down}_proj.weight沿dim0gate/up或dim1down做torch.cat拼接——与intermediate_size main width的配置改动严格对齐最后把delta_attn前缀替换为linear_attn、global_attn替换为self_attn喂给内置混合实现。通用打补丁apply_patch.py当镜像版本没有预构建变体时apply_patch.py 负责就地修改已安装的 sglang 包。用法python3 apply_patch.py path/to/sglang # 例如 .../site-packages/sglang脚本逻辑把agnes_sglang_config.py复制到pkg/srt/configs/agnes.py在common.py末尾追加注册代码编辑models/qwen3_5.py以QWEN3_5_KV_SCALE_MAPPER WeightsMapper(为锚点插入翻译生成器代码并把weights QWEN3_5_KV_SCALE_MAPPER.apply(weights)之前的那一行替换为weights _agnes_translate_weights(self, weights)从而让翻译先于 KV-scale 映射执行。脚本以# agnes 标记识别已打补丁状态重复执行会直接输出already patched因此是幂等的若在目标文件中找不到锚点则报错退出而不会破坏文件。数值精度实测并行分支折叠进主 MLP 会改变 down 投影的归约长度因此服务输出的 logits 与 transformers 实现并非逐位一致。README 给出的实测数据nightly 镜像、TP1、H200、2144 个 teacher-forced 位置、完整 248320 词表 softmax全词表 KL 散度 5.9e-4对比对象同一权重由未打补丁引擎不带分支服务的结果低于同一检查点在 transformers 与 sglang 两种实现之间测得的 6.5e-4困惑度perplexity17.07 对比 17.05。这一结果表明补丁引入的数值偏差小于框架间实现差异工程上可接受。同时应明确两点边界v0.5.19变体由发布源码生成、尚未做服务实测其他版本走apply_patch.py通用路径实际效果取决于该版本源码的锚点结构。小结Agnes 3.0 Flash 接入 sglang 的关键是把自定义的model_type: agnes检查点“翻译”进 sglang 内置的 Qwen3.5 混合注意力实现agnes.py负责配置映射common.py负责配置注册qwen3_5.py负责权重流翻译与并行 FFN 折叠serve.sh负责一键启动并回退到apply_patch.py通用打补丁。整个方案不动镜像内其他任何文件实测数值偏差可控可作为其他自定义架构模型快速接入 sglang 的参考范式。赞分享大模型多模态推理模型【免费下载链接】Agnes-3.0-Flash项目地址https://ai.gitcode.com/hf_mirrors/Agnes-AI/Agnes-3.0-Flash点击查看免费下载相关推荐Qwen3-Next 混合注意力模型在 CANN 昇腾 NPU 上的 SGLang 推理优化与部署实践Qwen3 Next 混合注意力模型在 CANN 昇腾 NPU 上的 SGLang 推理优化与部署实践 导读 Qwen3 Next 是 2025 年 9 月发布示例工程人工智能大模型模型推理服务模型优化模型量化CANNAscend揭秘Agnes-3.0-Flash混合注意力架构54层Delta-Rule如何砍掉75%的KV Cache揭秘Agnes 3.0 Flash混合注意力架构54层Delta Rule如何砍掉75%的KV Cache Agnes 3.0 Flash 是 Agnes A大模型多模态推理模型KTransformers 异构推理实战使用 SGLang KT-Kernel 部署 DeepSeek-V4-Flash 完整指南KTransformers 异构推理实战使用 SGLang KT Kernel 部署 DeepSeek V4 Flash 完整指南 导读 本文是 KTra人工智能大模型推理引擎本地部署微调创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表