Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于训练时间的问题:为什么我每次跑完都要一两天的时间呢?求大佬们帮忙 #31

Open
xu-cpp opened this issue Apr 3, 2020 · 14 comments

Comments

@xu-cpp
Copy link

xu-cpp commented Apr 3, 2020

为什么我每次跑完都要一两天的时间呢?求大佬们帮忙

@comprehensiveMap
Copy link

comprehensiveMap commented Apr 18, 2020

为什么我每次跑完都要一两天的时间呢?求大佬们帮忙
因为evaluation是在cpu上做的,试一下把evaluation放在gpu上以tensor的形式来做

@xu-cpp
Copy link
Author

xu-cpp commented Apr 18, 2020

为什么我每次跑完都要一两天的时间呢?求大佬们帮忙
因为evaluation是在cpu上做的,试一下把evaluation放在gpu上以tensor的形式来做

谢谢大佬的回答。具体改法是不是把train_eval.py中.cpu()的地方改为.gpu()就可以了(gpu环境以及有了)?原文件里只说了训练时间:30分钟,也不知道怎么训练这么快的,哼😕(吐槽一下嘻嘻)

@comprehensiveMap
Copy link

为什么我每次跑完都要一两天的时间呢?求大佬们帮忙
因为evaluation是在cpu上做的,试一下把evaluation放在gpu上以tensor的形式来做

谢谢大佬的回答。具体改法是不是把train_eval.py中.cpu()的地方改为.gpu()就可以了(gpu环境以及有了)?原文件里只说了训练时间:30分钟,也不知道怎么训练这么快的,哼(吐槽一下嘻嘻)

实际上这时候这个张量本身就是在GPU里面了,只要把cpu()去掉即可,并且要把原本允许ndarry作为参数的sklearn.metrics换为能够张量计算的方式。其他的都不用改。
true = (labels).data
predic = torch.max(outputs.data, 1)[1]
total = true.size(0)
correct = (predic == true).sum().item()
train_acc = correct / total

@xu-cpp
Copy link
Author

xu-cpp commented Apr 18, 2020

为什么我每次跑完都要一两天的时间呢?求大佬们帮忙
因为evaluation是在cpu上做的,试一下把evaluation放在gpu上以tensor的形式来做

谢谢大佬的回答。具体改法是不是把train_eval.py中.cpu()的地方改为.gpu()就可以了(gpu环境以及有了)?原文件里只说了训练时间:30分钟,也不知道怎么训练这么快的,哼(吐槽一下嘻嘻)

实际上这时候这个张量本身就是在GPU里面了,只要把cpu()去掉即可,并且要把原本允许ndarry作为参数的sklearn.metrics换为能够张量计算的方式。其他的都不用改。
true = (labels).data
predic = torch.max(outputs.data, 1)[1]
total = true.size(0)
correct = (predic == true).sum().item()
train_acc = correct / total

好的谢谢啦,我先试试看

@xu-cpp
Copy link
Author

xu-cpp commented Apr 19, 2020

为什么我每次跑完都要一两天的时间呢?求大佬们帮忙
因为evaluation是在cpu上做的,试一下把evaluation放在gpu上以tensor的形式来做

谢谢大佬的回答。具体改法是不是把train_eval.py中.cpu()的地方改为.gpu()就可以了(gpu环境以及有了)?原文件里只说了训练时间:30分钟,也不知道怎么训练这么快的,哼(吐槽一下嘻嘻)

实际上这时候这个张量本身就是在GPU里面了,只要把cpu()去掉即可,并且要把原本允许ndarry作为参数的sklearn.metrics换为能够张量计算的方式。其他的都不用改。
true = (labels).data
predic = torch.max(outputs.data, 1)[1]
total = true.size(0)
correct = (predic == true).sum().item()
train_acc = correct / total

好的谢谢啦,我先试试看

昨晚睡前开始跑,已经跑了9个多小时了,一个epoch还没跑完,哭了/(ㄒoㄒ)/~~

@CaiQiuYu
Copy link

为什么我每次跑完都要一两天的时间呢?求大佬们帮忙
因为evaluation是在cpu上做的,试一下把evaluation放在gpu上以tensor的形式来做

谢谢大佬的回答。具体改法是不是把train_eval.py中.cpu()的地方改为.gpu()就可以了(gpu环境以及有了)?原文件里只说了训练时间:30分钟,也不知道怎么训练这么快的,哼(吐槽一下嘻嘻)

实际上这时候这个张量本身就是在GPU里面了,只要把cpu()去掉即可,并且要把原本允许ndarry作为参数的sklearn.metrics换为能够张量计算的方式。其他的都不用改。
true = (labels).data
predic = torch.max(outputs.data, 1)[1]
total = true.size(0)
correct = (predic == true).sum().item()
train_acc = correct / total

老实说,你这个有点误导人,这部分只是算准确率,开销很小,放到CPU上算也问题不大,速度慢原因只能说GPU不行?

@comprehensiveMap
Copy link

为什么我每次跑完都要一两天的时间呢?求大佬们帮忙
因为evaluation是在cpu上做的,试一下把evaluation放在gpu上以tensor的形式来做

谢谢大佬的回答。具体改法是不是把train_eval.py中.cpu()的地方改为.gpu()就可以了(gpu环境以及有了)?原文件里只说了训练时间:30分钟,也不知道怎么训练这么快的,哼(吐槽一下嘻嘻)

实际上这时候这个张量本身就是在GPU里面了,只要把cpu()去掉即可,并且要把原本允许ndarry作为参数的sklearn.metrics换为能够张量计算的方式。其他的都不用改。
true = (labels).data
predic = torch.max(outputs.data, 1)[1]
total = true.size(0)
correct = (predic == true).sum().item()
train_acc = correct / total

老实说,你这个有点误导人,这部分只是算准确率,开销很小,放到CPU上算也问题不大,速度慢原因只能说GPU不行?

要看你数据集是什么,我之前跑一个很大的数据集,他这里面100个batch就会验证一次,验证的时候要对验证集所有的样本都做计算,那这样的验证频率下其实就很有影响了。我当时直接用源代码跑的时候要几小时,但是改完之后就只需要半小时不到了,所以我才会考虑这里的问题。

@xu-cpp
Copy link
Author

xu-cpp commented Apr 26, 2020

为什么我每次跑完都要一两天的时间呢?求大佬们帮忙
因为evaluation是在cpu上做的,试一下把evaluation放在gpu上以tensor的形式来做

谢谢大佬的回答。具体改法是不是把train_eval.py中.cpu()的地方改为.gpu()就可以了(gpu环境以及有了)?原文件里只说了训练时间:30分钟,也不知道怎么训练这么快的,哼(吐槽一下嘻嘻)

实际上这时候这个张量本身就是在GPU里面了,只要把cpu()去掉即可,并且要把原本允许ndarry作为参数的sklearn.metrics换为能够张量计算的方式。其他的都不用改。
true = (labels).data
predic = torch.max(outputs.data, 1)[1]
total = true.size(0)
correct = (predic == true).sum().item()
train_acc = correct / total

老实说,你这个有点误导人,这部分只是算准确率,开销很小,放到CPU上算也问题不大,速度慢原因只能说GPU不行?

要看你数据集是什么,我之前跑一个很大的数据集,他这里面100个batch就会验证一次,验证的时候要对验证集所有的样本都做计算,那这样的验证频率下其实就很有影响了。我当时直接用源代码跑的时候要几小时,但是改完之后就只需要半小时不到了,所以我才会考虑这里的问题。

那这个新闻的数据集你跑了多久呢?感觉我改完之后没有变快很多,还是说是我CPU的问题?我CPU是i5-5200U的

@649453932
Copy link
Owner

换了数据集肯定要改超参的,另外gpu不行的话确实会慢

@13145314593
Copy link

为什么我每次跑完都要一两天的时间呢?求大佬们帮忙
因为evaluation是在cpu上做的,试一下把evaluation放在gpu上以tensor的形式来做

谢谢大佬的回答。具体改法是不是把train_eval.py中.cpu()的地方改为.gpu()就可以了(gpu环境以及有了)?原文件里只说了训练时间:30分钟,也不知道怎么训练这么快的,哼(吐槽一下嘻嘻)

并不是,你跑程序的时候看一下电脑或者服务器的gpu使用情况,跑的慢的原因应该是没用gpu跑

@blueyeee
Copy link

那要怎样才能让它使用gpu来跑呢,我看了一下我的gpu几乎没有占用

@13145314593
Copy link

13145314593 commented Feb 24, 2023 via email

@blueyeee
Copy link

为什么我每次跑完都要一两天的时间呢?求大佬们帮忙
因为evaluation是在cpu上做的,试一下把evaluation放在gpu上以tensor的形式来做

谢谢大佬的回答。具体改法是不是把train_eval.py中.cpu()的地方改为.gpu()就可以了(gpu环境以及有了)?原文件里只说了训练时间:30分钟,也不知道怎么训练这么快的,哼(吐槽一下嘻嘻)

实际上这时候这个张量本身就是在GPU里面了,只要把cpu()去掉即可,并且要把原本允许ndarry作为参数的sklearn.metrics换为能够张量计算的方式。其他的都不用改。 true = (labels).data predic = torch.max(outputs.data, 1)[1] total = true.size(0) correct = (predic == true).sum().item() train_acc = correct / total

我像这样改完之后,gpu占用还是基本没有,还是把cpu给占满了,是哪里还有问题吗

@Lumieshone
Copy link

请问解决了么

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants