ubuntu+anaconda+mxnet环境配置

时间:2022-12-15 17:18:43

为了insightface和mxnet较劲的一天

mxnet环境:

官网下载pyhton2.7版本的anaconda,随便找个安装教程

sh Anacondaxxxx.sh  #一路默认即可,第二个回车符后修改自己想要安装的路径
#安装完毕后重启命令行,再次打开切换成了(base)
conda create -n mxnet python=2.7
#等待配置,完成以后继续:
conda activate mxnet
cat /usr/local/cuda/version.txt  #输出9.0.xxx
pip install mxnet-cu90

按insightface readme操作,每次加载完数据开始执行时报错out of memory, batchsize改成1也不行,issue#32有关于这个报错的讨论,结合其他资源各种瞎试,目测是mxnet-cu90的锅。

conda清华源不支持的解决:

conda info

ubuntu+anaconda+mxnet环境配置

删除.condarc里跟清华源有关的网址并保存就可以了

或者也可以一条一条删除:

conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

 

----------2019.05.02 还真不是,后来同事说刚好那台机器有块卡坏了,今天在另外一台也是cu90的机器上装了,没啥问题......----------

错误信息:

[14:15:31] src/storage/./pooled_storage_manager.h:143: cudaMalloc failed: out of memory

未果的尝试如下:

1. 强制安装mxnet-cu92 - 跑不了,cuda版本和mxnet不一致;

    在一个有cuda9.2版本的机器上好不容易装好了mxnet-cu92,报错如下:

    OSError: libcudart.so.9.2: cannot open shared object file: No such file or directory

解决方案

export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64

    然后各种环境配齐,还是错:

    Check failed: e == cudaSuccess || e == cudaErrorCudartUnloading CUDA: CUDA driver version is insufficient for CUDA runtime version

    cuda有个对应版本,显卡太老不支持9.2

2. 直接pip install mxnet - 就是装了cpu版本,跑不了,程序会强烈要求设置cuda=1;

3. 执行如下指令:

ubuntu+anaconda+mxnet环境配置

    - 一样的out of memory问题

4. 用conda create -n mxnet python=3.6搭建python3环境,运行时各种版本不对导致的xrange ascii错误

最后找了一个cuda版本7.5的,重复上述步骤改为pip install mxnet-cu75就可以跑了,K80的卡resnet50网络batchsize=32显存也就用了一半。

实际训练batchsize=32会导致lossval=Nan,改成128*8块卡,每块卡占8319MB,loss比较稳定的开始下降了

其他环境:

1. No module named memonger

git clone https://github.com/dmlc/mxnet-memonger.git
export PYTHONPATH=$PYTHONPATH:/clone下来的memonger路径

2. pip install sklearn pillow opencv-python等,如果出现 Read timed out. 后加--default-timeout

pip install mxnet-cu80 --default-timeout=1000

3. 安装Anaconda后推出shell也不自动进入conda环境

vi ~/.bashrc
export PATH=$PATH:/home/xxx/anaconda2/bin  #输入以后保存退出
source ~/.bashrc

 再次退出shell再进入就好了。

运行insightface:

训练

可以用src/train_softmax.py  r100网络K80的卡要设batchsize=64

config.py里面的num_classed要和数据里面的id数匹配(不匹配的症状是lossvalue到4000个batch会慢慢变大,最后nan)

 

mxnet生成rec的正确姿势:

python im2rec.py /xxx/data/celeb /ddd/FR/celebrity --list --recursive
python im2rec.py --num-thread 28 /xxx/data/celeb.lst /ddd/FR/celebrit

 prefix和root放在前边,list和recursive如果显示指定就是True,否则作为False,应有如下打印信息和输出:

ubuntu+anaconda+mxnet环境配置

ubuntu+anaconda+mxnet环境配置

lst格式如下,Label从0开始需要连续:

ubuntu+anaconda+mxnet环境配置

 

 

资源:

本来是要趁着五一小长假撸一遍论文系统整理一下的,发现资源已经很丰富了:

FaceResources

awesome-face

最开始的几篇经典整理如下:

ubuntu+anaconda+mxnet环境配置