Closed Ajay-Wong closed 4 months ago
为啥会被划掉了,我这并没有加这东西
为啥会被划掉了,我这并没有加这东西
markdown 的问题
NCCL 默认的 reduce 算法会导致一个相同的 batch 在 allreduce 后变得不一致。估计是不同 rank 的输入累加的次序不同导致的。
可以试试设环境变量 NCCL_ALGO=Tree
为啥会被划掉了,我这并没有加这东西
markdown 的问题
NCCL 默认的 reduce 算法会导致一个相同的 batch 在 allreduce 后变得不一致。估计是不同 rank 的输入累加的次序不同导致的。
可以试试设环境变量 NCCL_ALGO=Tree
好的,我去试试
为啥会被划掉了,我这并没有加这东西
markdown 的问题
NCCL 默认的 reduce 算法会导致一个相同的 batch 在 allreduce 后变得不一致。估计是不同 rank 的输入累加的次序不同导致的。
可以试试设环境变量 NCCL_ALGO=Tree
非常感谢,确实没有差异了;顺带问下,这个算法会对性能有影响吗?不同的硬件这个算法要怎么选择呀?
为啥会被划掉了,我这并没有加这东西
markdown 的问题
NCCL 默认的 reduce 算法会导致一个相同的 batch 在 allreduce 后变得不一致。估计是不同 rank 的输入累加的次序不同导致的。
可以试试设环境变量 NCCL_ALGO=Tree
再更新下,这个对于上面我提到的 case 可以解决,但是其它的 case,并不能完全解决,还是会有同样的数据,跑一个 batch 的数据后,结果不同
https://github.com/NVIDIA/nccl/issues/157 这有一个解决办法:使用reduce+broadcast替换allreduce
为啥会被划掉了,我这并没有加这东西
markdown 的问题
NCCL 默认的 reduce 算法会导致一个相同的 batch 在 allreduce 后变得不一致。估计是不同 rank 的输入累加的次序不同导致的。
可以试试设环境变量 NCCL_ALGO=Tree
那如果是单卡 batch会有diff吗?
为啥会被划掉了,我这并没有加这东西
markdown 的问题 NCCL 默认的 reduce 算法会导致一个相同的 batch 在 allreduce 后变得不一致。估计是不同 rank 的输入累加的次序不同导致的。 可以试试设环境变量 NCCL_ALGO=Tree
再更新下,这个对于上面我提到的 case 可以解决,但是其它的 case,并不能完全解决,还是会有同样的数据,跑一个 batch 的数据后,结果不同
大佬有分析是啥原因嘛
Checklist
Describe the bug
使用 llama2-70b-chat-hf 的原始模型,然后转换成 lmdeploy 的格式:
之后使用了两个方式去测试如下: 第一种是一次性 200 条数据都送入进去,一次性跑完:
第二种是每次跑一条,跑 200 次
这两种方式输出的结果上是有差异的,一次性跑的结果会生成 2 种结果,循环跑的结果只有一种
Reproduction
上面两种跑数据的方式,都用 temperature=0.0 去跑,结果上的差异如下:
第一种是一次性 200 条数据都送入进去,一次性跑完:
第二种是每次跑一条,跑 200 次:
Environment
Error traceback
No response