dev.to | 📄 原文链接 | 2026-11-07 收录

同一个模型文件,两块显卡给出不同答案:追到浮点加法的那一位

来源:dev.to — 2026-11-06

📋 概述

同样的 GGUF 文件、同样的 llama.cpp 构建、温度设为零,笔记本电脑上的 GTX 1650 Ti 把一道小学算术题答成 20 美元,云上的 Tesla T4 答成 2000 美元。两块卡各自都极其稳定,跑多少次逐 token 完全一致,差别来自芯片的处理器数量:llama.cpp 把大矩阵乘按流多处理器切分,笔记本 16 份、T4 40 份,同样 8960 个 float32 数按不同分组累加,末位结果就不一样。这些末位误差逐层累积,生成到第 124 个 token 时模型在「spent」和「saved」之间几乎打平(51.4% 对 47.8%),两块卡各落一边,后面整段话都跟着变。一个 llama.cpp 原生选项 -ub 1 就让两块卡完全一致,代价是 14%~15% 的运行时间。

🔑 核心要点

💡 金句

“Adding the same 8,960 float32 numbers in 16 shares gives 47.0389595; in 40 shares it gives 47.0389099.”
译:同样是 8960 个 float32 数,分 16 份累加得 47.0389595,分 40 份累加得 47.0389099。
← 返回 dev.to 首页