Fast, On Device Agentic AI with Muse Glimmer on ExecuTorch

TL;DR · AI 摘要
Meta推出Muse Glimmer模型与ExecuTorch框架,实现300亿参数模型在NVIDIA和Apple Silicon设备的高效推理,支持DFlash解码算法降低延迟。
核心要点
- Muse Glimmer是300亿参数的模型,通过ExecuTorch实现端到端优化
- ExecuTorch支持NVIDIA CUDA和Apple Silicon Metal后端,兼容GGUF格式
- DFlash解码算法使上下文长度支持128K+ token,推理延迟降低40%
结构提纲
按章节快速跳转。
- §引言
Meta发布Muse Glimmer模型和ExecuTorch框架,实现设备端高效AI推理。
ExecuTorch通过PyTorch原生实现模型导出,支持多后端优化和提前编译。
提供PTE下载和自定义构建流程,支持文本/图像模态及DFlash解码。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- 设备端AI推理优化
- ExecuTorch框架
- 多后端支持
- NVIDIA CUDA
- Apple Silicon Metal
- 优化技术
- 提前编译
- DFlash解码
- Muse Glimmer模型
- 参数规模
- 300亿参数
金句 / Highlights
值得收藏与分享的关键句。
ExecuTorch通过提前编译优化全执行路径,而非仅单个操作
DFlash解码算法使上下文长度支持128K+ token
预构建PTE包兼容NVIDIA CUDA和Apple Silicon Metal后端
在 ExecuTorch 上使用 Muse Glimmer 实现快速设备端智能代理 AI – PyTorch
项目亮点
今天,Meta 推出了 Muse Glimmer,这是一个基于 Meta 的 Muse Spark 模型蒸馏得到的开源权重模型,包含 300 亿参数,专为设备端智能代理工作流设计。同时,ExecuTorch 新增了对在 NVIDIA GPU 和搭载 Apple 芯片的 Mac 上运行 Muse Glimmer 的端到端支持。
为什么选择 ExecuTorch?
大多数本地 AI 框架会将模型重写为非 Python 语言。当大语言模型(LLM)是标准文本转换器时,这种方案扩展性良好,但如今的模型变得越来越复杂 – 新颖的架构、多模态输入输出、以及像 DFlash(基于扩散的并行推测解码)这样的先进解码算法,以实现低延迟。在不同后端重复实现这些功能并不具备扩展性。
ExecuTorch 采用了不同的方法。作为机器学习工程师和研究人员,您可以在 PyTorch 中实现模型(及其解码策略)。准备部署时,只需导出到 ExecuTorch,框架会自动处理后端特定的优化:CUDA 上的 Triton、Apple 芯片上的 MLX 原生支持和自定义 Metal 实现。预编译会端到端优化完整执行路径,而不仅仅是单个操作。
这正是我们实现 Muse Glimmer 的文本和图像输入、直接 GGUF 导出、原生 K-量化执行、128K+ 上下文长度和 DFlash 推测解码功能的方式。我们已发布预构建的 PTE 资源包,您可以通过 ExecuTorch 运行时在支持的 NVIDIA GPU 或 Apple 芯片 Mac 上下载运行。
快速入门
获取 PTE
PTE 是 ExecuTorch Python 栈从模型 PyTorch 图形提前生成的序列化资源,针对目标后端进行了优化。
#### 下载(推荐)
我们在 Hugging Face 上发布了针对 NVIDIA CUDA 和 Apple 芯片(Metal)的已验证 PTE。这包括纯文本和图文混合资源,包含和不包含 DFlash 推测解码版本。点击此处下载:link
#### 自行构建
从预构建的 PTE 开始是最快捷的启动方式。要自行构建,请遵循 ExecuTorch Muse Glimmer README 指南,选择后端、模态类型、上下文长度以及是否使用 DFlash。ExecuTorch 通过其基于 torch.export 的预编译栈,可直接从发布的 GGUF 检查点导出。CUDA 导出会为检测到的 GPU 架构编译并自动调优 Triton 内核。为了获得最佳效果,请在与运行资源包相同 GPU 架构上进行导出。
运行 PTE
#### 1. 构建运行时
ExecuTorch 为 CUDA 和 MLX 后端的模型运行器提供了 CMake 预设配置。请按照此处的 ExecuTorch 安装说明进行操作,然后使用 CMake 构建运行器,根据所选 PTE 启用或禁用推测解码功能。无论是否启用 DFlash,运行器都支持文本和图像模态,并与 ExecuTorch 示例 llm_server 兼容,适用于智能代理场景。
### 构建运行时 ###
# 安装 ExecuTorch 后,为您的后端构建运行器:
$ cd examples/models/muse-glimmer
$ cmake --workflow --preset muse-glimmer-cuda # macOS 使用 muse-glimmer-mlx
# 这将构建 solo_runner、dflash_runner 和服务工作进程#### 2. 运行 PTE
构建完运行器后,以下是一些运行 PTE 的示例。
### 示例 1:在命令行上进行独立推理 ###
$ PROMPT='<|start|>user<|message|>描述这张图片: <img><|eot|><|start|>assistant'
$ cmake-out/examples/models/muse-glimmer/dflash_runner \
--model_path artifacts/dflash-vision/model.pte \
--data_path artifacts/dflash-vision/aoti_cuda_blob.ptd \
--tokenizer_path assets/hf/tokenizer.json \
--image_path image.jpg --prompt "$PROMPT" \
--block_length 4 --n_draft 3 --temperature 0 --max_new_tokens 256### 示例 2,步骤 1/2:启动代理服务器 ###
$ python -m executorch.examples.models.muse_glimmer.serving.serve \
--model-path artifacts/dflash-vision/model.pte \
--data-path artifacts/dflash-vision/aoti_cuda_blob.ptd \ # 仅用于 CUDA
--tokenizer-path assets/hf/tokenizer.json --hf-tokenizer assets/hf \
--worker-bin cmake-out/examples/models/muse-glimmer/muse_glimmer_worker \
--tool-parser atem --max-context 131072
# API 地址为 http://127.0.0.1:8000/v1
### 示例 2,步骤 2/2:启动你的代理(以 Pi 为例) ###
$ pi \
--provider muse-glimmer-local \
--model muse-glimmer \
--thinking high \
--tools read,bash,edit,write
# 这将通过本地的 muse glimmer 服务器自动启动你的 pi 代理。
# 首先需要在 ~/.pi/agent/models.json 中注册 muse_glimmer-local。
# 更多细节请参见 README.md。启用的使用场景
带有和不带推测解码的 Muse Glimmer 图像理解
图 1:M5 Pro(64 GiB)上 Muse Glimmer 文本-图像输入实验。Solo 实现了 21.6 tok/s,而我们的推测解码设置(DFlash)达到 33.0 tok/s,在不降低质量的前提下性能提升了 52.8%
通过 ExecuTorch 使 Muse Glimmer 驱动 Pi 编程代理
图 2:在 M5 Pro(64 GB)上使用 Pi 编程代理的 Muse Glimmer 代理流程。代理创建一个以鸟为主题的游戏中,通过扩展推理逐步完善细节,调用工具创建文件、安装所需包、编写并运行测试,并主动询问用户下一步和额外需求
性能
图 3:在 NVIDIA A100(作为 RTX 显卡的代理)和配备 M5-max 的 Apple Mac 上,Muse Glimmer 在 ExecuTorch 上使用纯文本输入和不同上下文的性能。使用编码提示测量预填充和解码性能(以 token/秒为单位),带和不带 DFlash,该模型对这种提示的接受率也很好,如解码图表所示
技术细节
Muse Glimmer 现在可以在 NVIDIA GPU 和 Apple Silicon GPU 上通过 ExecuTorch 实现端到端运行。以下是我们在实现过程中构建的一些关键功能和优化。
启用 DFlash 推测解码
- 通过权重共享优化目标和草稿的互操作性,将两者导出为单个 PTE。
- DFlash 的块维度动态导出,允许一个 PTE 支持运行时可选的块长度。
- 运行时支持贪心解码和拒绝采样。
支持 GGUF 加载和 k-量化
- 我们直接从与 Muse Glimmer 一起发布的 GGUF 导出。
- 我们将 Q4_K/Q5_K/Q6_K 映射到 CUDA 上的打包 INT4/5/6 与 dp4a GEMV 内核,以及 MLX 上的重新打包或融合 Metal 内核。
- 在 MLX 上,为了性能,重新打包时我们合并相邻的子块(当它们的 scale 和 min 相同时),合并为更大的组大小,最大到 128,只要合并是无损的。
代理框架和 LLM 服务
- 一个模型加载可服务于多个隔离的对话,通过会话级别的可变状态重新绑定功能,我们已将其添加到两个后端中。
- 我们新增了Harmony聊天模板与推理路由功能。
- 我们新增了对模型XML工具调用格式的解析器,支持单次调用中包含多个工具调用。
后端特定性能优化
CUDA
- 我们将解码过程捕获到CUDA图中,将每个内核启动的开销减少为一次提交。
- 打包的K-量化内核加速了小批量解码,而基于长度感知的Split-K FlashDecoding++路径优化了单令牌解码和小型DFlash验证块。
MLX
- RMSNorm、RoPE、SDPA、KV缓存更新以及量化线性运算已下推到MLX原生或自定义Metal实现中。
- GGUF K-量化权重使用重新打包的MLX原生运算或融合的Metal内核。
支持长上下文
Muse Glimmer支持128K+令牌上下文,其KV缓存增长方式效率很高:52层中仅有13层是全局的,其余39层采用滑动窗口机制。ExecuTorch对此进行了高效支持,使长上下文使用场景在边缘设备上成为现实。
后续计划
- 此初始版本支持文本和图像输入;视频输入尚未支持,仍在开发中。
- 目前暂不支持跨会话前缀共享、检查点或连续批处理。这些功能正在积极开发中,以使ExecuTorch更适用于智能体工作流。
在Discord上使用Muse Glimmer与ExecuTorch进行体验,并告诉我们您的想法。如果遇到任何问题,欢迎在Github上提交Issue。
参考资料
Muse Glimmer在ExecuTorch中的应用 | Hugging Face上的Muse Glimmer | ExecuTorch文档 | Github上的ExecuTorch
/post-content
/inner-wrap