我对 pytorch 很陌生,想要在这里找到的模型:(https://github.com/HardeyPandya/Temporal-Convolutional-Neural-Network-Single-Channel-Speech-Enhancement/tree/main/TCNN )
我在装有 M1Pro 的 MacBook 上,也在不同的计算机(Ubuntu、Ryzen 3900X、Radeon VII)上试过
我尝试在 cpu 上使用非常小的数据集(仅 3 个时期来检查是否一切正常)对其进行训练,并在第一个时期得到以下结果。
============== 1 epoch ==============
[0 seconds] Begin training...
Loss:
tensor(0.7866, grad_fn=<AddBackward0>)
Loss:
tensor(1.5864, grad_fn=<AddBackward0>)
Loss:
tensor(2.2366, grad_fn=<AddBackward0>)
[38.63273882865906 seconds] End this epoch.
在接下来的 epoch 中,损失变得更接近于 0。
然后我尝试在 gpu 上运行它:
修改模型.ipynb:
if torch.backends.mps.is_available():
print("MPS AVAILABLE")
device = torch.device("mps")
# when initialising the model:
model = initialize_config(config["model"])
model.to(device)
修改的base_trainer.py
# replaced this line
#self.device = self._prepare_device(self.n_gpu, cudnn_deterministic=config["cudnn_deterministic"])
# with this
self.device = torch.device('mps')
现在好像跑在gpu上了,但是到处都是损失:
tensor(1.3858, device='mps:0', grad_fn=<AddBackward0>)
Loss:
tensor(9.0829, device='mps:0', grad_fn=<AddBackward0>)
Loss:
tensor(10.2000, device='mps:0', grad_fn=<AddBackward0>)
[24.909322023391724 seconds] End this epoch.
============== 2 epoch ==============
[0 seconds] Begin training...
Loss:
tensor(7.4854, device='mps:0', grad_fn=<AddBackward0>)
Loss:
tensor(14.3712, device='mps:0', grad_fn=<AddBackward0>)
Loss:
tensor(15.1385, device='mps:0', grad_fn=<AddBackward0>)
[25.140717029571533 seconds] End this epoch.
============== 3 epoch ==============
[0 seconds] Begin training...
Loss:
tensor(6.0472, device='mps:0', grad_fn=<AddBackward0>)
Loss:
tensor(11.4786, device='mps:0', grad_fn=<AddBackward0>)
Loss:
tensor(12.0494, device='mps:0', grad_fn=<AddBackward0>)
[26.356099843978882 seconds] End this epoch.
在使用 ROCm 的 Linux 机器上,我注意到了同样的问题。 在这里我不必更改 base_trainer.py 每当我在 gpu 上运行时,损失都非常高,但执行速度要快得多。
有什么想法吗? 非常感谢!
可能设置种子是你需要的,除非你完成整个代码,否则不确定。 参考如何播种