#738·nanoGPT

在 temperature=0 时, GPT.generate() 发生崩溃,而不是进行贪婪解码

作者: NikhilSKashyap创建于 2026年6月17日更新于 2026年6月17日

** 说明** 减记 页:1 GPT.generate ()'无条件将对数除以温度'。 与 温度=0'——确定性/贪婪解码的标准公约 (OpenAI,Hugging Face,LLaMA.cpp都把0当作"argmax")——这是一分. 乘以零:对数成为inf'/nan'、软最大产量nan'概率; t,多分相加. 所以,最自然的方式 要求决定性 输出崩溃而不是工作 。

  • 复制步骤
导入火炬
从模型导入 GBT, GPTConfig

cfg = GPTConfig(块 大小=16个), vocab 大小=32个,n layer=1个,n 头=1个,
n embd=16, 退学=0.0, 偏向=虚假)
m = GPT( cfg). eval ()
idx = 火炬. zelos ((1, 1), dtype=torch.
m.generate( idx, max  new  tokens=5, 温度=0.0) # boom

实际行为

运行时错误:概率计含有 " inf " 、 " nan " 或元素 < 0

预期行为 温度=0'应进行贪婪的解码(从日志中取出argmax'), 没有坠毁——与所有其他重大取样执行一致。

根原因 GPT.generate()中的`model.py':

logits = logits [:-1,:] / 温度 # 温度 = 0 - > inf/nan

建议改正 短路"温度"==0"到"分会"前贪腐解码:

logits = logits [: -- 1, :]
如果温度 = 0.0:
idx  next=ture.argmax(日志,dim=-1, keepdim=True) 互联网档案馆的存檔,存档日期2013-12-1.
其他情况:
对数=对数/温度
# 有顶- k + 多名路径

内容来源: karpathy/nanoGPT