Python Pytork在使用docker和CPU的不同机器上的结果非常不同

Python Pytork在使用docker和CPU的不同机器上的结果非常不同,python,docker,testing,deep-learning,pytorch,Python,Docker,Testing,Deep Learning,Pytorch,我正在尝试为深度学习模型创建一些CI测试,因此创建了一个Dockerfile来安装PyTorch和我的所有需求,并最终运行测试 FROM pytorch/pytorch ADD . / project/ RUN (cd project/; pip install -r requirements.txt) CMD ( cd project/; pytest -v --cov=my_project) 测试基本上是从0-1计算一个图像,并将其与参考图像(另存为npy)进行比较。测试正在进行中 如果像

我正在尝试为深度学习模型创建一些CI测试,因此创建了一个Dockerfile来安装PyTorch和我的所有需求,并最终运行测试

FROM pytorch/pytorch
ADD . / project/
RUN (cd project/; pip install -r requirements.txt)
CMD ( cd project/; pytest -v --cov=my_project)
测试基本上是从0-1计算一个图像,并将其与参考图像(另存为npy)进行比较。测试正在进行中 如果像素的平均L2范数低于阈值
1e-7

diff\u image=np.linalg.norm(目标图像\u np-参考图像\u np,轴=2)
平均误差=np.平均值(差异图像)
断言平均错误<1e-7
测试通过了12/15个测试用例。然而,有3个案例失败得相当严重

=========================== short test summary info ============================
FAILED test_nst.py::test_nst_gatys - assert 0.0021541715 < 1e-07       
FAILED test_nst.py::test_nst_gatys_style - assert 0.12900369 < 1e-07
FAILED test_nst.py::test_nst_wct - assert 0.027357593 < 1e-07
=================== 3 failed, 12 passed in 670.27s (0:11:10) ===================
=======================================================短测试摘要信息============================
测试失败。py::测试失败-断言0.0021541715<1e-07
测试失败。py::测试失败?gatys_样式-断言0.12900369<1e-07
测试失败。py::测试失败wct-断言0.027357593<1e-07
======================3失败,以670.27秒(0:11:10)通过12次===================
奇怪的是,这只发生在CI服务器上。在我的本地机器上,所有测试都通过了。有人知道为什么会这样吗?据我所知,使用CPU以及固定种子应该至少返回数字上不同的结果


谢谢你的反馈

我自己找到了解决办法。需要将线程数设置为1。最后,这是在不同机器上获得可再现结果所需的全部代码

np.random.seed(42)
手电筒。手动种子(42)
os.environ[“pythonhasheed”]=“42”
torch.backends.cudnn.deterministic=True
torch.backends.cudnn.benchmark=False
焊炬。设置螺纹数(1)