Ollama 0.34.2 MTP speculative decoding regression with Qwen3.8 27B

这个报错通常出现在用 Ollama 0.34.2 加载 Qwen3.8 27B 并启用 MTP(Multi-Token Prediction,多 token 预测)投机解码时,表现为吞吐量(TPS)或草稿接受率(draft acceptance)相比旧版本出现回退。优先排查 Ollama 版本是否有

快速结论:这个报错通常出现在用 Ollama 0.34.2 加载 Qwen3.8 27B 并启用 MTP(Multi-Token Prediction,多 token 预测)投机解码时,表现为吞吐量(TPS)或草稿接受率(draft acceptance)相比旧版本出现回退。优先排查 Ollama 版本是否有回归,并确认是否必须启用 MTP 投机解码。

适用环境:Issue 中已确认的环境为 Ollama(对比了 0.33.2、0.33.3、0.34.0、0.34.1、0.34.2),使用 Docker 容器运行,开启 GPU(--gpus all),设置 OLLAMA_KV_CACHE_TYPE=q8_0OLLAMA_FLASH_ATTENTION=1,使用模型 qwen3.8:27b。Issue 未提供操作系统、Python、CUDA、PyTorch、显卡型号等具体信息,因此不做推断。

最快修复方案:暂无确认的一步修复方案。Issue 中给出的多版本测速脚本结果显示各版本 TPS 与 draft acceptance 存在波动,但并未给出一个已验证可以彻底消除该回退的单一操作。

注意事项:上述版本对比结果来自评论中的压测脚本,属于单次或少量样本,不能直接断定 0.34.2 在所有硬件与配置上都会回退;MTP 与投机解码本身对草稿接受率敏感,环境差异(KV 缓存类型、Flash Attention、显存容量)都可能影响结果。

问题场景

用户在 Docker 中运行 Ollama,使用 qwen3.8:27b 模型,并通过 /api/generate 接口请求生成(prompt 为从 1 数到 200)。同时启用 OLLAMA_KV_CACHE_TYPE=q8_0OLLAMA_FLASH_ATTENTION=1,涉及 MTP 投机解码路径。用户对比了 Ollama 0.33.2、0.33.3、0.34.0、0.34.1、0.34.2 多个版本的 TPS(tokens/s)和 draft acceptance,怀疑 0.34.2 存在回归。

报错原文

Ollama 0.34.2 MTP speculative decoding regression with Qwen3.8 27B

| version | tps | draft acceptance |
| -- | -- | -- |
| 0.33.2 | 108.63061770933672 | 0.93925 |
| 0.33.3 | 112.22690175280009 | 0.93925 |
| 0.34.0 | 106.85936973007992 | 0.93925 |
| 0.34.1 | 115.21105450067934 | 0.93925 |
| 0.34.2 | 113.67440984775622 | 0.93925 |

[Server logs](https://docs.ollama.com/troubleshooting) with OLLAMA_DEBUG=2 may aid in debugging.

原因分析

根据 Issue 讨论,最可能的原因是 Ollama 0.34.2 在 MTP 投机解码路径上引入了性能回归,导致使用 Qwen3.8 27B 时吞吐量或投机解码效果不如预期。评论中的多版本对比显示,各版本 draft acceptance 基本一致(0.93925),而 TPS 存在波动,0.34.0 偏低、0.34.1 偏高、0.34.2 介于其间,说明回退可能并非单纯由草稿接受率引起,而可能与 0.34.x 系列在 MTP / 投机解码实现上的改动有关。由于 Issue 未提供代码级定位或官方修复说明,这里仅列为可能原因,不能作为确定结论。

环境排查

  • 确认 Ollama 版本:是否正在使用 0.34.2,或曾升级到 0.34.x。
  • 确认模型:是否为 qwen3.8:27b,以及该模型是否走 MTP 投机解码路径。
  • 确认运行方式:是否为 Docker 容器(ollama/ollama:<version>),是否正确挂载了 .ollama 目录。
  • 确认 GPU 是否透传:容器启动是否带 --gpus all
  • 确认相关环境变量:OLLAMA_KV_CACHE_TYPE=q8_0OLLAMA_FLASH_ATTENTION=1,以及必要时设置 OLLAMA_DEBUG=2 以获取更详细日志。
  • 确认对比方式:使用相同的 prompt、num_predicttemperature 等参数,避免因生成参数不同导致误判。
  • Issue 未提供操作系统、CUDA、PyTorch、显卡型号等信息,如有需要可自行补充确认,但不应视为 Issue 已确认项。

解决步骤

  1. 复现基线:用 Issue 评论中的 Shell 脚本思路,在同一台机器上分别拉取 ollama/ollama:0.33.20.33.30.34.00.34.10.34.2,以相同参数启动容器并请求 qwen3.8:27b
  2. 记录指标:对每个版本记录 /api/version 返回的版本号、/api/generate 返回的 eval_count / (eval_duration/1e9) 作为 TPS,以及从 docker logs 中提取的 draft acceptance。
  3. 开启调试日志:如怀疑是 MTP 相关路径问题,按官方建议设置 OLLAMA_DEBUG=2 重新运行,收集服务端日志以辅助判断。
  4. 定位版本差异:比较 0.33.x 与 0.34.x 的 TPS 与 draft acceptance,确认回退是否稳定复现、是否集中在某一版本区间。
  5. 可优先尝试回退或更换版本:若确认 0.34.2 存在回退而 0.33.x 或 0.34.1 表现更优,可临时使用表现正常的版本作为规避方案。
  6. 若回退无效,可优先尝试关闭或调整 MTP / 投机解码相关路径,观察 TPS 与 draft acceptance 是否恢复,以判断问题是否确实出在该功能上。

验证方法

在相同硬件、相同模型、相同生成参数下,重新运行多版本对比脚本,确认已回退或已更换的 Ollama 版本的 TPS 不再出现与 0.34.2 相同程度的下降;同时检查 draft acceptance 是否稳定,以及开启 OLLAMA_DEBUG=2 后日志中是否仍有与 MTP 投机解码相关的异常或警告。

参考来源

ollama/ollama #18541

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 24659

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注