#32600·onnxruntime

EmbeddingGemma-300M fp16 CPU 推理回归: 在 Linux aarch64 上,自 1.24.1 起输出为 NaN

作者: Pchelolo创建于 2026年9月14日更新于 2026年9月17日
标签api:Java

□ 描述错误

1.24.1(1.23.2后立即发布)开始,运行 EmbeddingGemma-300M's 公共fp16 ONNX导出(onnx-community/embeddinggemma-300m-ONNX;`onnx/model fp16.onnx') 通过Linux arch64上的CPU执行提供者,为批次生产全部 " NaN " 输出 1.19.0至1.28.0分节经完整释放确认: 1.23.2是最后一个好版本,1.24.1是第一个坏版本,它仍然作为 ** 1.3.0.0**。 (中文(简体) ). 它确实在macOS arch64(苹果硅)上复制. 带有相同的onnxruntime版本和输入.

□ 根源(通过图外科手术)

我将图中的每个中间收发器 都显示为模型输出 在受影响的 Linux arch64 节点上直接输入真实输入的真实模型。 模型的剩余部分 溪流在24个Transformer层之间大致呈指数增长,其规模为 0至~50000–65,000乘22. fp16的最大可代表值为65504. 时 `/model/layers.22/Add 2'(在向导区块后添加的剩余部分),两个已停靠 fp16 角数和刚刚超过天花板,并溢出到 " Inf " ,向 " NaN " 传播。 23层

这种外溢是Fp16出口的一般内在的——对于靠近FP16的序列而言。 标致剂最大512分 甚至1.23.2分 1.23.2至1.2.4.1之间的变化 是一些CPU-EP内核现在产生的子-1%的数值差异足以翻转 已经是边缘的批量(在1.23.2的65504下) 仅过它。

□ 重现

使用合成填充文本的自成一体的再Pro( 没有真实的用户数据—— 纯粹为了匹配而选择的) 引发我们生产流量的字符长度分布:

[Python] 导入 json 从拥抱面 hub 导入 hf hub 下载 从标记器导入切换器 将数字导入为 np 导入 nnxrunt 时间为 Ort

REPO = "onnx-community/embeddinggemma-300m-ONNX" (英语). model path = hf hub download(REPO,"onnx/model fp16.onnx",子文件夹=无) hf hub 下行负荷(REPO,"onnx/model fp16.onnx data",子文件夹=无)#外部数据,同为目录 代号器 path = hf hub 下載 (REPO,"tokenizer.json")

LOREM = ("Lorem ourum dolor sit ameet, concessetur adipiscing elit, sed do eiusmod tempor") ("Lorem ourum dolor sit ameet, concessetur adipising elit, sed do eiusmod tempor") 维基语录链接: 维基语录链接:名人名言 - 文学作品 - 谚语 - 谚语 - 谚语 - 谚语 - 谚语 - 谚语 "辛迪通特乌特 劳动和多洛尔 magna aliqua。 取出精液来取出精液 "演绎出ullamco laboris nisi un aliquip ex ea commodo consequat. 乌兰科 活塞克 活塞克 活塞克 Duis aute ure " : " 毛发 " "在排出伏地的活塞中担任重任" "除了辛克卡特 科比达塔特 不生孩子 沉入地狱" "Mollit anim id est labourum.") 维基语录链接:名人名言 - 文学作品 - 谚语 - 谚语

{\fn方正粗倩简体\fs12\an8\1cHFFFF00\b0}选择字符长度来匹配真正的失败生产批量(短而长的混合体, 1个足够长的,需要切换到512个托肯模型最大. LENGTHS = [279、264、261、186、87、167、297、644、926、77、625、1164、4621、198、358、873, 1670、123、260、124] 文本数 = . . . . . . .

内容来源: microsoft/onnxruntime