Fed*_*hin 7 reinforcement-learning python-multiprocessing pytorch
我有一些关于使用torch.multiprocessing模块的问题。假设我有一个torch.nn.Module电话model,我打电话model.share_memory()给它。
如果两个线程同时调用forward(), 即会发生什么情况model(input)?安全吗?或者我应该使用锁定机制来确保model多个线程不会同时访问?类似地,如果两个或多个线程有一个优化器工作model.parameters()并且它们同时调用会发生什么optimizer.step()?
我问这些问题是因为我经常看到在optimizer.step()没有锁定机制的共享模型上被调用(即在 A3C 或 ACER 的 RL 实现中),我想知道这样做是否安全。
它不一定是安全的,因为它们是异步运行的,而不是并行运行的。引用文档,
使用 torch.multiprocessing,可以 异步训练模型,参数可以一直共享,也可以 定期同步。在第一种情况下,我们建议发送整个模型对象,而在后一种情况下,我们建议仅发送 state_dict()。
| 归档时间: |
|
| 查看次数: |
164 次 |
| 最近记录: |