我是pytorch的新手,想使用这里的模型:(https://github.com/HardeyPandya/Temporal-Convolutional-Neural-Network-Single-Channel-Speech-Enhancement/tree/main/TCNN)
我在MacBook与M1 Pro,也尝试了不同的计算机(Ubuntu,锐龙3900 X,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.
在接下来的几个时期,损失甚至接近于零。
然后我试着在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)
修改后的基础训练器.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上运行,损失是非常高的,但是执行速度要快得多。
有什么主意吗?多谢!
1条答案
按热度按时间bis0qfac1#
可能设置种子是你需要的,不确定,除非你完成整个代码。Refer to how to set seed