最近把项目迁移到PyTorch 2.0,用了torch.compile加速,发现推理速度确实快了不少。但我有点搞混了:以前做推理时,我习惯同时写model.eval()和with torch.no_grad(),但看一些教程说2.0的编译模式会自动处理dropout和bn层,甚至自动禁用梯度计算?我试了试只加model.eval(),结果发现显存占用反而比之前高了一点点,不知道是不是心理作用。想问下各位大佬,在torch.compile开启后,这两句到底还有没有必要手动加?如果只加eval()而漏掉no_grad(),会不会在某些边缘case下出bug?或者是不是应该根据模型结构(比如有无bn/dropout)来决定?求真实实践过的老哥指点一下,别让我踩坑。