PyTorch Blog

Fast, On Device Agentic AI with Muse Glimmer on ExecuTorch

8.5内容质量
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%

结构提纲

按章节快速跳转。

  1. Meta发布Muse Glimmer模型和ExecuTorch框架,实现设备端高效AI推理。

  2. ExecuTorch通过PyTorch原生实现模型导出,支持多后端优化和提前编译。

  3. 提供PTE下载和自定义构建流程,支持文本/图像模态及DFlash解码。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • 设备端AI推理优化
    • ExecuTorch框架
      • 多后端支持
        • NVIDIA CUDA
        • Apple Silicon Metal
      • 优化技术
        • 提前编译
        • DFlash解码
    • Muse Glimmer模型
      • 参数规模
        • 300亿参数

金句 / Highlights

值得收藏与分享的关键句。

#PyTorch#ExecuTorch#Muse Glimmer#AI推理#设备端AI
打开原文

在 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 兼容,适用于智能代理场景。

code
### 构建运行时 ###

# 安装 ExecuTorch 后,为您的后端构建运行器:

$ cd examples/models/muse-glimmer
$ cmake --workflow --preset muse-glimmer-cuda # macOS 使用 muse-glimmer-mlx

# 这将构建 solo_runner、dflash_runner 和服务工作进程

#### 2. 运行 PTE

构建完运行器后,以下是一些运行 PTE 的示例。

code
### 示例 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
code
### 示例 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