Ohhnews

分类导航

$ cd ..
Jetbrains Blog原文

Junie Local 在 Mac M5 上提速约 70%

#junie local#mac m5#推理加速#编程助手#模型优化

Junie Local 现在在 M5 Max 上执行编码任务时可达 ~70 tokens/s,高于此前的 ~40 tokens/s,峰值更可达 107 tokens/s。这一提升来自两项改动:Splash 推理引擎和全新的 DFlash2 草稿模型。

[LOADING...]

今年 8 月,我们首次为 Mac M5 发布 Junie Local 时,曾花费大量时间优化 Junie 和 MLX-VLM 推理引擎,以达到(当时)尽可能高的性能。但从当前 LLM 的发展速度来看,两个月显然已经是一段很长的时间。在此期间,社区陆续推出了许多令人兴奋的推理加速新方案。我们逐一研究并测试了所有方案,然后挑选出最有前景的部分集成到 Junie Local 中。

9 月,Inco AI 发布了其 Splash 引擎,该引擎围绕 Qwen 系列模型构建。只专注于少数几个模型,让 Splash 能够做到通用引擎无法做到的事:每个解码步骤一次性验证八个草稿 token,并且上下文注意力在每个位置上的开销降低了一个数量级,因此随着上下文增长,解码速度几乎不会下降。不过,其预填充性能与我们优化过的 MLX-VLM 引擎相当。由于我们此前已经让 MLX-VLM 在 M5 芯片上使用 int8 运算,于是把同样的优化移植到了 Splash 上。在本次发布中,Splash 取代 MLX-VLM 成为 Junie Local 的推理引擎。

但好的引擎只是问题的一部分。我们还需要一个草稿模型,以实现更高效的投机解码。在使用投机模型时,接受率决定了推理速度。接受率低甚至可能让解码变得更慢。

开箱即用的情况下,Splash 为 Qwen 3.8-27B 使用 DFlash2 草稿模型。但 Qwen 3.8 有一个小问题——它很容易过度思考。因此,生成速度带来的全部收益,都被需要生成的大量思考 token 抵消掉了。

为解决这个问题,我们此前发布了 Qwen3.8-3.6-27B-blend,它比 Qwen 3.6 能力更强,却只多用 30% 的 token。而在本次发布中,我们还为 Qwen3.8-3.6-27B-blend 提供了配套的 DFlash2 草稿模型。

基于 DFlash 的模型速度很快,但对领域内数据分布非常敏感:在熟悉的任务上接受率更高,因此智能体在熟悉任务上工作更快,在陌生任务上则更慢。

为了训练这个 DFlash2 模型,我们在内部编码环境中使用 Qwen3.8-3.6-27B-blend 运行 Junie Local 运行框架,生成了一批多样化的智能体编码轨迹。随后,我们以 Qwen 3.8 的 DFlash2 草稿模型作为初始检查点,使用 SpecForge 在这些编码轨迹上进行微调。这样,我们的 DFlash2 草稿模型在你使用 Junie Local 编码时能够提供最高的速度和接受率。

让我们意外的是,微调草稿模型并不需要大量轨迹。我们只用了约 100 万个生成的 token(读取约 7100 万 token)就达到了 Inco 的接受率!作为额外收获,我们还以类似方式为 Qwen 3.6 训练了一个 DFlash2 草稿模型。

[LOADING...]

这样的接受率,再加上 Splash 引擎,带来了实实在在的收益:与之前 MTP + MLX-VLM 的方案相比,我们实现了约 2 倍的提升。

将所有这些改进结合在一起,本次发布中我们:

  • 将生成速度从 ~40 t/s 提升到 ~70 t/s
  • 预填充性能从 850 t/s 提升到 1200 t/s
  • 降低了内存占用:在 100k 上下文下,需要约 24 GB 内存

从本次发布开始,你可以在搭载 64GB 内存的 M4 Mac 及更新机型上使用它。

请注意,在 M4 上,预填充速度大约比 M5 慢 4 倍。这意味着加载系统提示和其他上下文会比较慢。

如何升级

运行 junie update 将 Junie 升级到最新版本,然后启动 CLI。进入 Junie 后,运行 /local 并按 ctrl + r 更新推理引擎。

如果你还没有 Junie,可以通过以下命令安装 Junie 和本地模型:

curl -fsSL https://junie.jetbrains.com/install.sh | bash -s -- --local-model

你可以在 HuggingFace 上找到两个 DFlash2 草稿模型: