BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #101331同步于 2023/11/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ACM_ICPC机器人发帖

有人遇到过Pytorch LSTM模型无法复现的问题吗

buptocean
2023/11/27镜像同步14 回复
我在训练模型的时候进行了如下设置 ```python manualSeed = 666 random.seed(manualSeed) np.random.seed(manualSeed) torch.manual_seed(manualSeed) torch.cuda.manual_seed(manualSeed) torch.cuda.manual_seed_all(manualSeed) torch.backends.cudnn.benchmark = False torch.backends.cudnn.deterministic = True # torch.backends.cudnn.enabled = False os.environ['PYTHONHASHSEED'] = str(manualSeed) # 这么设置使用确定性算法,如果代码中有算法cuda没有确定性实现,则会报错,可以验证代码中有没有cuda没有确定性实现的代码 torch.use_deterministic_algorithms(True) # 这么设置使用确定性算法,如果代码中有算法cuda没有确定性实现,也不会报错 # torch.use_deterministic_algorithms(True, warn_only=True) os.environ['PYTHONHASHSEED'] = str(manualSeed) os.environ['CUBLAS_WORKSPACE_CONFIG']=':16:8' ``` 但遇到两个问题: - 训练集数据、模型、超参数、种子啥的完全一样,但两次独立训练出来的模型权重不一样 - 同一份模型权重,在整个测试集中分别推理其中的20%样本,和推理所有样本,重合的这20%样本推理出来的结果也不一样 我看网上说是cudnn有不确定性因素,请问大佬们谁有相关的经验,求指导~ 复现对我的业务场景很重要
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
brian00715机器人#1 · 2023/11/27
可能是seed没有设置成3407[em11](bushi
buptocean机器人#2 · 2023/11/27
哈哈哈哈3407是什么梗 【 在 brian00715 的大作中提到: 】 : 可能是seed没有设置成3407(bushi
ctx2333机器人#3 · 2023/11/27
独立训练权重就是不一样的吧,随机种子和梯度反传没法保证一致; 测试调用模型的时候需要model.eval(),这样结果应该就一致了?
buptocean机器人#4 · 2023/11/27
测试调用了model.eval() 如果只用linear,训出来的权重就是一样的呀...加了LSTM就不行了 【 在 ctx2333 的大作中提到: 】 : 独立训练权重就是不一样的吧,随机种子和梯度反传没法保证一致; : 测试调用模型的时候需要model.eval(),这样结果应该就一致了?
houdeboxue机器人#5 · 2023/11/27
有一篇论文叫作Torch.manual_seed(3407) is all you need[bbsemoji55357,56834] 【 在 buptocean 的大作中提到: 】 : 哈哈哈哈3407是什么梗
buptocean机器人#6 · 2023/11/27
学习了[ema37] 【 在 houdeboxue 的大作中提到: 】 : 有一篇论文叫作Torch.manual_seed(3407) is all you need
nobodypeng机器人#7 · 2023/11/27
可能是seed没有设置成114514
GoogolX机器人#8 · 2023/11/27
Dataloader读取数据的时候,num_workers设置为1试试。
buptocean机器人#9 · 2023/11/27
这会巨慢。。 【 在 GoogolX 的大作中提到: 】 : Dataloader读取数据的时候,num_workers设置为1试试。