概述

上一篇 基于resnet训练flower图像分类模型(p31-p37),在我的mac 上实在 跑不动了。

今天折腾了一天。各种坑基本上踩了一遍,分享给大家希望有人看了能避开我的坑。

我是笔记本老款的MX250系列。就是相当于亮屏的卡,不是1050哪组真正意义的显卡。

 

这个版本很重要。我开始不知道,随便找了驱动版本,对应是cuda 11.2 的.

结果很尴尬,pytorch 官网上有11.1 ,11.3的,就是没有11.2的。虽然有人用Anaconda 安装了11.2,但是我不喜欢这个,就打算用原生的pip安装。

       所以下载了cuda后,有重新卸载了。不然提示有新版本的,老版本的安装失败。卸载我就不贴图了,进控制面板-》程序 选择对应的cuda 卸载。

 这个是cuda与驱动的版本对应关系。版本不兼容,太麻烦了。

cuda:

CUDA Toolkit Archive | NVIDIA Developer

2.7G 吧,我前后下载了11.2,11.3,11.4 三个版本,不能随便下。要跟前面的驱动保持一致。

所以采用了11.3

安装会先解压文件到临时目录,这个目录不是安装目录,所以保持默认即可,我没有选择自定义。

(我开始没注意,第二次安装的时候特意选择了:C:Program FilesNVIDIA GPU Computing ToolkitCUDA)

这是错误的,因为选择这里最后会把cuda给清理掉了。下一步安装cuDNN 回来找不到lib了。自己还纳闷了一会,刚才装成功了,怎么不见了。 

确认环境变量。记住自己刚才安装位置,检测下path

 

可以通过CMD输入nvcc -V测试是否安装成功

 失败了可以重试或者Google 找原因。

cudNN

cuDNN Archive | NVIDIA Developer

建议跟cuda版本保持一致。

 下载完之后,解压如上,拷贝到安装目录对应文件目录

 pytorch

今天主要时间花在下载这个了。

pip3 install torch==1.10.2+cu113 torchvision==0.11.3+cu113 torchaudio===0.10.2+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html

    如果你网络好,直接安装也OK。

不好,可以下载对应的whl文件。

https://download.pytorch.org/whl/

torch-1.10.0+cu113-cp38-cp38-win_amd64.whl

torchvision-0.11.1+cu113-cp38-cp38-win_amd64.whl

我是要下载gpu 版本11.3的。因为Python本机新安装了python 3.8.所以是cp38

采用pip install xx.whl 提示 is not a supported wheel on this platform.

我开始下载的python3.8 版本有问题,从32位换成64位重装就好了,记得修改环境变量。

测试:

 如果看到true,表示安装成功,能够使用GPU加速啦。尽管这不是正规的显卡。

pycharm

Download PyCharm: Python IDE for Professional Developers by JetBrains

这个我就选了社区版。没有精力折腾破解了。

问题:

我在外面pip 安装的torch 好用,代码在pycharm 提示报错。

这里的interpreter 要选择Python对应安装路径。就有torch包了

不要选择从pycharm里面去install package,我开始没有配置,安装之后,运行程序发现显存没变化。还是靠CPU跑的。

重新跑昨天的程序:

Epoch 0/19
----------
Time elapsed 2m 58s
train Loss: 9.5990 Acc: 0.3404
Time elapsed 3m 19s
valid Loss: 10.0224 Acc: 0.4353
D:Program FilesPythonlibsite-packagestorchoptimlr_scheduler.py:154: UserWarning: The epoch parameter in `scheduler.step()` was not necessary and is being deprecated where possible. Please use `scheduler.step()` to step the scheduler. During the deprecation, if epoch is different from None, the closed form is used instead of the new chainable form, where available. Please open an issue if you are unable to replicate your use case: https://github.com/pytorch/pytorch/issues/new/choose.
  warnings.warn(EPOCH_DEPRECATION_WARNING, UserWarning)
Optimizer learning rate : 0.0010000
Epoch 1/19
----------
Time elapsed 6m 18s
train Loss: 2.2159 Acc: 0.7260
Time elapsed 6m 39s
valid Loss: 1.5129 Acc: 0.7480
Optimizer learning rate : 0.0100000
Epoch 2/19
----------
Time elapsed 9m 35s
train Loss: 9.0914 Acc: 0.4898
Time elapsed 9m 56s
valid Loss: 8.4271 Acc: 0.5549
Optimizer learning rate : 0.0010000
Epoch 3/19
----------
Time elapsed 12m 57s
train Loss: 2.3290 Acc: 0.7663
Time elapsed 13m 17s
valid Loss: 2.4857 Acc: 0.7725
Optimizer learning rate : 0.0100000
Epoch 4/19
----------
Time elapsed 16m 19s
train Loss: 8.5794 Acc: 0.5700
Time elapsed 16m 40s
valid Loss: 7.3693 Acc: 0.6363
Optimizer learning rate : 0.0010000
Epoch 5/19
----------
Time elapsed 19m 41s
train Loss: 2.4818 Acc: 0.7904
Time elapsed 20m 2s
valid Loss: 2.5687 Acc: 0.7980
Optimizer learning rate : 0.0100000
Epoch 6/19
----------
Time elapsed 23m 4s
train Loss: 7.6899 Acc: 0.6212
Time elapsed 23m 24s
valid Loss: 9.1910 Acc: 0.6412
Optimizer learning rate : 0.0010000
Epoch 7/19
----------
Time elapsed 26m 25s
train Loss: 2.8140 Acc: 0.7975
Time elapsed 26m 46s
valid Loss: 2.4946 Acc: 0.8235
Optimizer learning rate : 0.0100000
Epoch 8/19
----------
Time elapsed 29m 46s
train Loss: 8.0896 Acc: 0.6287
Time elapsed 30m 7s
valid Loss: 7.5975 Acc: 0.6873
Optimizer learning rate : 0.0010000
Epoch 9/19
----------
Time elapsed 33m 8s
train Loss: 2.6323 Acc: 0.8133
Time elapsed 33m 29s
valid Loss: 2.8371 Acc: 0.8127
Optimizer learning rate : 0.0100000
Epoch 10/19
----------
Time elapsed 36m 31s
train Loss: 7.2790 Acc: 0.6712
Time elapsed 36m 52s
valid Loss: 6.2248 Acc: 0.7431
Optimizer learning rate : 0.0100000
Epoch 11/19
----------
Time elapsed 39m 54s
train Loss: 7.3138 Acc: 0.6848
Time elapsed 40m 14s
valid Loss: 6.4203 Acc: 0.7245
Optimizer learning rate : 0.0100000
Epoch 12/19
----------
Time elapsed 43m 16s
train Loss: 6.4541 Acc: 0.7113
Time elapsed 43m 37s
valid Loss: 6.8953 Acc: 0.7412
Optimizer learning rate : 0.0100000
Epoch 13/19
----------
Time elapsed 46m 38s
train Loss: 6.7578 Acc: 0.7118
Time elapsed 46m 59s
valid Loss: 5.2885 Acc: 0.7882
Optimizer learning rate : 0.0100000
Epoch 14/19
----------
Time elapsed 50m 0s
train Loss: 6.6526 Acc: 0.7278
Time elapsed 50m 21s
valid Loss: 7.3968 Acc: 0.7284
Optimizer learning rate : 0.0010000
Epoch 15/19
----------
Time elapsed 53m 23s
train Loss: 2.6446 Acc: 0.8385
Time elapsed 53m 43s
valid Loss: 3.2286 Acc: 0.8520
Optimizer learning rate : 0.0100000
Epoch 16/19
----------
Time elapsed 56m 46s
train Loss: 6.6568 Acc: 0.7258
Time elapsed 57m 6s
valid Loss: 7.7065 Acc: 0.7392
Optimizer learning rate : 0.0010000
Epoch 17/19
----------
Time elapsed 60m 8s
train Loss: 2.8318 Acc: 0.8398
Time elapsed 60m 29s
valid Loss: 3.2409 Acc: 0.8480
Optimizer learning rate : 0.0100000
Epoch 18/19
----------
Time elapsed 63m 30s
train Loss: 7.2543 Acc: 0.7224
Time elapsed 63m 51s
valid Loss: 8.7285 Acc: 0.7324
Optimizer learning rate : 0.0010000
Epoch 19/19
----------
Time elapsed 66m 52s
train Loss: 2.8384 Acc: 0.8424
Time elapsed 67m 13s
valid Loss: 3.1210 Acc: 0.8451
Optimizer learning rate : 0.0100000
Training complete in 67m 13s
Best val Acc: 0.851961
 

 能看到训练结果逐步向好。对比一下我用mac 低配.

一个batch20分钟,20batch 约为400 分钟,这个67分钟。快了6倍吧。可见GPU加速还是明显的。显存可见有使用

 

折腾了一天环境,踩了好多坑,希望能帮你减少些麻烦。没有好的GPU。估计有个3060显卡的笔记本也是这个套路。如果是Linux系统,那看网上其他大佬的文章吧,没试过。