一、GPU支持:
首先访问PyTorch的主页点“install",跳转到Start Locally | PyTorch 根据自己的需要点相应的内容得到命令。
如上图所示,可以直接运行其中的
pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113
命令就可以安装好PyTorch对GPU的支持。当然还要安装相应的CUDA驱动。
可以参考我的另外一个对TensorFlow的内容conda 安装CUDA 和cudnn_bjay的博客-CSDN博客_conda安装cuda
二、对于“ImportError: cannot import name 'PILLOW_VERSION' from 'PIL' (D:\program\Anaconda3\lib\site-packages\PIL\__init__.py)”错误:
在运行例如:python main.py -a resnet50 --lr 0.015 --batch-size 128 --dist-url 'tcp://localhost:10001' --multiprocessing-distributed --world-size 1 --rank 0 ./imagenet 的命令时会出现以上错误。
这是一个PyTorch版本问题,解决办法:这个错误之前的行中有一句类似于:
File "D:\program\Anaconda3\lib\site-packages\torchvision\transforms\functional.py", line 5, in
from PIL import Image, ImageOps, ImageEnhance, PILLOW_VERSION
用编辑器打开functional.py,按错误提示找到PILLOW_VERSION(我的是第5行)改为__version__,保存,就可以解决这个问题。
三、再次运行:python main.py -a resnet50 --lr 0.015 --batch-size 128 --dist-url 'tcp://localhost:10001' --multiprocessing-distributed --world-size 1 --rank 0 ./imagenet 命令可能会出现错误:
File "D:\program\Anaconda3\lib\site-packages\torch\distributed\rendezvous.py", line 88, in rendezvous
raise RuntimeError("No rendezvous handler for {}://".format(result.scheme))
RuntimeError: No rendezvous handler for ://
把命令改为:python main.py -a resnet50 --lr 0.015 --batch-size 128 --dist-url tcp://localhost:10001 --multiprocessing-distributed --world-size 1 --rank 0 ./imagenet
就应该可以了。也就是把tcp://localhost:10001两边的引号去掉。
四、运行:python main.py -a resnet50 --lr 0.015 --batch-size 128 --dist-url tcp://localhost:10001 --multiprocessing-distributed --world-size 1 --rank 0 ./imagenet 命令可能会出现错误:
File "D:\program\Anaconda3\lib\site-packages\torch\distributed\distributed_c10d.py", line 727, in _new_process_group_helper
raise RuntimeError("Distributed package doesn't have NCCL " "built in")
RuntimeError: Distributed package doesn't have NCCL built in
原因是PyTorch在windows下不支持nccl,但命令默认又是nccl,因此改命令为如下:
python main_moco.py -a resnet50 --lr 0.015 --batch-size 128 --dist-url tcp://localhost:8080 --dist-backend gloo --multiprocessing-distributed --world-size 1 --rank 0 ./imagenet
即,加入--dist-backend gloo。
五、运行上述命令,好像可以了。但我的机器报:
D:\program\Anaconda3\lib\site-packages\torch\utils\data\dataloader.py:490: UserWarning: This DataLoader will create 32 worker processes in total. Our suggested max number of worker in current system is 8 (`cpuset` is not taken into account)
和
OSError: [WinError 1455] 页面文件太小,无法完成操作。
BrokenPipeError: [Errno 32] Broken pipe
改命令为:
python main_moco.py -a resnet50 --lr 0.015 --batch-size 128 --dist-url tcp://localhost:8080 --dist-backend gloo --multiprocessing-distributed --world-size 1 --rank 0 --workers 0 ./imagenet
现在应该可以再继续。
以上是我首先用PyTorch遇到的问题,希望大家都没有。