常见问题#

即使温度设为 0,结果也不确定#

您可能会注意到,当您两次发送相同的请求时,即使温度设置为 0,引擎的结果也会略有不同。

根据我们的初步调查,这种不确定性主要源于两个因素:动态批处理和前缀缓存。粗略地说,动态批处理导致了大约 95% 的不确定性,而前缀缓存导致了其余部分。服务器在后台运行动态批处理。不同的批处理大小可能导致 PyTorch/CuBLAS 分派到不同的 CUDA 内核,从而产生微小的数值差异。这种差异在许多层中累积,导致批处理大小变化时输出不确定。类似地,当前缀缓存启用时,也可能分派到不同的内核。即使计算在数学上是等价的,不同内核实现带来的微小数值差异也会导致最终的不确定输出。

要在当前代码中获得更确定的输出,您可以添加 --disable-radix-cache 参数并一次只发送一个请求。在此设置下,结果将基本确定。

我们仍在调查根本原因和潜在解决方案。短期内,我们可能会引入一个“确定性模式”,该模式使用更多填充来解决动态批处理引起的差异。这种模式将更具确定性,但速度较慢。

我们有两个问题来跟踪我们的进展