不过还需要在.bashrc文件里import path,保存后再source一下。python默认版本2.7。
因为当时在import torch,import torchvision以及torch.cuda.is_available()的验证上出了比较大的问题,频繁地更换pytorch以及torchvision的版本,结果还是不理想。晚上正好想到其他设备上安装的话显卡驱动必不可少装好镜像之后nvcc -V可以用,nvidia-smi显示没发现该指令(后来尝试了jtop,挺好用的),包括用ls /usr/src |grep nvidia没有出现nvidia的对应版本号。也一度怀疑pytorch不适配的基本根源就在这。
虽然很多环境配置的要求都是最低3.6,保不准再更新一次就不适配了
python3.7,3.8也是多次尝试,要么是上图这种libtorch_global_torch.so找不到该文件的,其实也会把网上常见的,找不到.so文件的解决方案做一个尝试,但是还是不行。后来我发现这种情况比较少见且没有大神给出合适的方案。(链接为github论坛中相同疑问,也是一直没解决)libtorch_global_deps.so not found. · Issue #35597 · pytorch/pytorch · GitHub
但其实之前用的就是3.6的版本,这是为什么想不通准备升级高版本呢?
忽略最后一句,因为pip版本已经更新过了。而且当时安装的mmdetection也并不是高版本,出现了对python版本的要求还是一狠心就升级了。不过后来一次mmdetection的安装过程中没有报错,还是有玄学的成分在。
之前用的一直是conda activate,但是后来逐渐习惯source activate,因为conda activate开始报错,说要把import path从.bashrc文件里去除,有些时候好使,有些时候去除了连conda list都弹不出来。不过source activate一直都是好使的。
其实pytorch只是这个环境里算是最基础的一步了,但是我就是迈不过去,单片机和虚拟机还是不尽相同,没办法照搬照抄,甚至nano系列每个产品都有区别。
上链接吧https://download.pytorch.org/whl/torch_stable.html
所有版本都在链接里,记得看清楚cuda版本,主机系统。
文件名如torch-1.6.0-cp36-cp36m-linux_aarch64.whl,
第一次装完torch,torchvision是在另外一个平台下载的whl文件。其实那时候没有改文件名,导致一直报这个错误。当时很懵,明明版本对应的,为什么平台不支持。网上还有很多针对性很强的教程。包括新的虚拟环境改用python3.7,3.8后,在whl文件配置的这块都没了大问题(最多就是速度慢点),但是torch.cuda.is_available()一直输出FALSE。这也是后来为什么在第一次mmdetection提示python版本过低之后我还是重新建了python3.6的虚拟环境。
pip下载有过尝试,还是可行的,就是下载速度不大乐观。
至于conda,网络上很多言论说conda下载的whl文件是cpu版本的,我倒没有出现这个问题,因为我conda install 一直没法定位获取相关的文件。
特别是whl文件配置起来特别慢的软件,安装已经很费时间了,这个不import也看不出来是对是错。下图分别为初次安装最新版mmcv及配套的mmdetetction/报错后降版本的mmcv及配套的mmdetetction/git clone了Swin-Transformer-Object-Detection包后环境要求的mmcv及配套的mmdetetction。mmcv的whl文件配置确实慢,但是确实香,尽管版本要求也是一直在变。
git clone https://github.com/NVIDIA/apex
cd apex
pip install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
说实话一路上遇到过很多报错,但是论坛上教程比较完整的错误基本也没有记忆点。那些比较罕见的,尤其是看到论坛上大家讨论,最后也无疾而终的帖子,不自觉就产生的畏难情绪。OSError: mask_rcnn_swin_tiny_patch4_window7.pth is not a checkpoint file · Issue #103 · SwinTransformer/Swin-Transformer-Object-Detection (github.com)
这点要感谢我的师姐,她告诉了我具体的解决措施。
UserWarnig其实没必要在意,因为最后警告不会影响进程。本身还天真的想去把代码段修改一下,好不容易弄懂逻辑就下手了,然后跑起来一片报错。
上文说到了jtop,其实看代码跑着的时候就有点担心,从跑起来到被杀死花了2m51s,而且也没有多余的报错。然后我就打开了jtop,从开始运行demo,ram就从0.7一路升到了2,确实想升也升不上去了,运行内存总共只有2GB。
其实论坛上的教程多种多样,解决常见的问题主要就是考察自己的数据收集处理能力。
对于那些特异性比较强的错误,会比较有挑战性。主要还是要理清主要的逻辑脉络,在错误的节点列举多种还没有尝试的可行性方案,抓住主干,就算没做出来也不会慌乱。