目录
问题
跑机器学习程序环境往往涉及到以下几个方面的问题:
- 硬件,intel x86,amd,arm等各种芯片
- 操作系统,windows,ubuntu,centos,mac等,考虑64位,32位等
- 显卡驱动,例如采用英伟达nvidia公司的GPU显卡,1070ti,1080ti等等显卡涉及到驱动,cuda,cudnn等的安装问题
- 开发语言:目前主流的机器学习实验开发语言是python,涉及到python版本管理问题,各种依赖包管理与隔离问题
- 主流机器学习框架,对前面 4个 问题的依赖不一样,例如tensorflow,pytorch,keras(tensorflow2.0已经直接包含了该库),nni等等,例如做得好pytoch给你列出了各个情况下的安装方法
,但是例如tensorflow并没有很好的告诉用户每个版本的tensorflow依赖哪个版本的os和cuda版本编译,导致很多时候用户安装环境都搞半天。
解决思路
针对以上问题:
- 我们一般采用intel x86的芯片。操作系统一般采用x86 64位的Linux操作系统,以前是ubuntu14.04现在ubuntu18.04 x64逐步开始流行起来,例如nvidia英伟达公司官方的docker镜像 “nvidia/cuda:10.0-base” 就默认是ubuntu18.04
- 大部分机器学习框架都已经支持在ubuntu18.04 linxu操作系统版本下的运行
- 宿主机器要装好驱动,例如宿主机为:安装一个最新版本的英伟达的显卡驱动“NVIDIA-Linux-x86_64-460.39.run”,具体各这驱动可以在英伟达官网上选择筛选,这里是1070ti显卡,linux生产稳定版本环境,“https://www.nvidia.cn/Download/index.aspx?lang=cn”其中选择:下载即可,对于国内网速慢原因我已经放了一份在百度云盘:“链接:https://pan.baidu.com/s/1b_FTjx4UsDhyWfNTfCjw3w
提取码:6666 ”,如果是windows环境安装最新的英伟达驱动即可,docker中采用镜像:“nvidia/cuda:10.0-base”,默认就把cuda10.0 cudnn装好了 - 在基于镜像“nvidia/cuda:10.0-base”的容器中安装 Miniconda3-py39_4.9.2-Linux-x86_64.sh 版本的miniconda,安装这个最新版本的好处在于可以用最小的安装空间得到基础的python各种版本和依赖库,例如:“conda create --name yolov5_py3.8 python=3.8”,安装好自动配置环境变量后,就可以打包成一个可复用的docker。打包容器为镜像,push到docker仓库的操作步骤:
1,docker commit 76c643fb44ee registry.cn-hangzhou.aliyuncs.com/coggle/coggle:v1 #提交容器为镜像
2,docker push registry.cn-hangzhou.aliyuncs.com/coggle/coggle:v1 #把这个新的镜像push到云端docker仓库中
这里有个笔者已经做好的docker:registry.cn-hangzhou.aliyuncs.com/allen135681/easyml:ubuntu18.04-nvidia_cuda10.0-base-Miniconda3-py39_4.9.2 执行下面命令就可以本地下载好该docker。windows 10下可以用wsl docker技术拉取该镜像。 -
sudo docker pull registry.cn-hangzhou.aliyuncs.com/allen135681/easyml:ubuntu18.04-nvidia_cuda10.0-base-Miniconda3-py39_4.9.2
以上docker主要有以下配置:
docker pull名字: registry.cn-hangzhou.aliyuncs.com/allen135681/easyml:ubuntu18.04-nvidia_cuda10.0-base-Miniconda3-py39_4.9.2 以上docker镜像基于英伟达官网的镜像nvidia/cuda 10.0-base eb416c0a142e 2 months ago 109MB 该基础镜像os是ubuntu18.04 以下内容是添加的内容: 1,添加apt 阿里云源: #添加阿里源 deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse 2,apt update;apt install vim安装vim 3,“/root/miniconda3/”目录下安装 Miniconda3-py39_4.9.2-Linux-x86_64.sh 自动配置环境变量,配置好后:conda 4.9.2 Python 3.9.1 pip 20.3.1
- 针对各种机器学习的库,可能都是在不同的操作系统版本,cuda版本,python版本下构建,必须要在这个版本上才能正常调用。所以需要模仿第4部分的思路构建多个类似的docker镜像文件。后续笔者会放出更多的针对各种机器学习库的docker镜像包。
总结
有了以上的镜像加持人人都可以成为合格的调包侠。快速复现baseline,SOTA等。