首先按照要求创建相应环境,配置相关安装包。(这里有一个坑,要求的是Please install PyTorch 1.7.0+ and torchvision 0.8.1+ and pytorch-image-models 0.3.2,但如果真的安装pytorch1.7.0和torchvision0.8.1是不行的,会报pytorch版本和cuda版本不匹配的错,但我的驱动支持的cuda版本最高也就10.1,所以最后采取安装pip install torch==1.7.1+cu101 torchvision==0.8.2+cu101 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
得以成功运行)
关于所用到的数据集Imagenet-1k的整理参考https://blog.csdn.net/qq_45588019/article/details/125642466?spm=1001.2014.3001.5506
最后将官方所给的命令行python -m torch.distributed.launch --nproc_per_node=8 --use_env main.py --model edgevit_s --batch-size 256 --data-path /path/to/imagenet --output_dir /path/to/save粘贴进去,运行,报错,提示所用环境中没有该main.py文件。因为该条命令是针对8GPU分布式训练的,如果在main.py中事先把batch-size,data-path和output_dir等信息设置好,而且像我一样用单卡尝试跑一下能不能运行的,就直接python main.py –model edgevit_s即可直接运行。
当训练中断后需要继续上次的模型训练时,先将resume设为True,把start_epoch的数字改为想要开始的epoch数,再在下面if args.resume那里将代码改成这样:
if args.resume:
# if args.resume.startswith('https'):
# checkpoint = torch.hub.load_state_dict_from_url(
# args.resume, map_location='cpu', check_hash=True)
# else:
checkpoint = torch.load('/path/to/your/checkpoint.pth')
#地址写上一次中断训练时存储的模型地址就可以
这段代码看得我有点迷惑,如果直接运行的话会报bool类型不能用startswith函数的错,事实上也确实不能用。所以if args.resume.startswith('https')的意义何在?
而且如果是继续训练,最好要和之前的配置一样(比如我先拿4块3090一起训,训到中间再换成一块2080ti,则会表现稍差),这样才能让模型越训越好,否则会先变得较差一些,再慢慢变好。