一、开机镜像环境配置
平台所有镜像的系统版本为Ubuntu,多数为Ubuntu 18.04 ,少数Ubuntu 20.04。
平台已经内置了以下框架及版本的镜像,使用该镜像的实例就会自带相应框架软件。如果以下自带的框架版本或Python版本不满足需求,请继续看下方配置其他版本的框架或Python方法。
安装其他版本的Python:
平台内置的镜像均为Python3.8,如果在需要使用Python3.6、Python3.7等的场景(比如TensorFlow1.14必须3.6/3.7),那么可以使用Miniconda创建其他版本的Python虚拟环境。
# 构建一个虚拟环境名为:my-env,Python版本为3.7
conda create -n my-env python=3.7
# 更新bashrc中的环境变量
conda init bash && source /root/.bashrc
# 切换到创建的虚拟环境:my-env
conda activate my-env
# 验证
python
安装其他版本的CUDA:
注意:如果没有二次编译代码的需求,正常情况下不需要单独安装CUDA/cuDNN,因为框架都内置了编译好的CUDA,框架版本和CUDA版本是对应的,只需要关注框架版本即可,无需独立关注CUDA版本。
查询默认CUDA/cuDNN版本
注意:通过nvidia-smi命令查看到的CUDA版本只是驱动支持的最高cuda版本参数,不代表实例中安装的是该版本CUDA。
终端中执行查看默认镜像自带的CUDA版本(安装目录为/usr/local/):
# 查询平台内置镜像中的cuda版本
ldconfig -p | grep cuda
libnvrtc.so.11.0 (libc6,x86-64) => /usr/local/cuda-11.0/targets/x86_64-linux/lib/libnvrtc.so.11.0
libnvrtc.so (libc6,x86-64) => /usr/local/cuda-11.0/targets/x86_64-linux/lib/libnvrtc.so
libnvrtc-builtins.so.11.0 (libc6,x86-64) => /usr/local/cuda-11.0/targets/x86_64-linux/lib/libnvrtc-builtins.so.11.0
# 查询平台内置镜像中的cudnn版本
ldconfig -p | grep cudnn
libcudnn_ops_train.so.8 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcudnn_ops_train.so.8
libcudnn_ops_train.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcudnn_ops_train.so
libcudnn_ops_infer.so.8 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcudnn_ops_infer.so.8
libcudnn_ops_infer.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcudnn_ops_infer.so
上边的输出日志.so
后的数字即为版本号。如果你通过conda安装了cuda那么可以通过以下命令查看:
conda list | grep cudatoolkit
cudatoolkit 10.1.243 h6bb024c_0 defaults
conda list | grep cudnn
cudnn 7.6.5 cuda10.1_0 defaults
安装其他版本的CUDA/cuDNN
方法一:使用conda进行安装
conda install cudatoolkit==xx.xx
conda install cudnn==xx.xx
如果你不知道版本号是什么那么可以搜索:
conda search cudatoolkit
Loading channels: done
# Name Version Build Channel
cudatoolkit 9.0 h13b8566_0 anaconda/pkgs/main
cudatoolkit 9.2 0 anaconda/pkgs/main
cudatoolkit 10.0.130 0 anaconda/pkgs/main
cudatoolkit 10.1.168 0 anaconda/pkgs/main
cudatoolkit 10.1.243 h6bb024c_0 anaconda/pkgs/main
cudatoolkit 10.2.89 hfd86e86_0 anaconda/pkgs/main
cudatoolkit 10.2.89 hfd86e86_1 anaconda/pkgs/main
cudatoolkit 11.0.221 h6bb024c_0 anaconda/pkgs/main
cudatoolkit 11.3.1 h2bc3f7f_2 anaconda/pkgs/main
方法二:下载安装包安装
CUDA载地址:https://developer.nvidia.com/cuda-toolkit-archive
安装方法:
# 下载.run格式的安装包后:
chmod +x xxx.run # 增加执行权限
./xxx.run # 运行安装包
cuDNN下载地址:https://developer.nvidia.com/cudnn
安装方法:
先解压, 后将动态链接库和头文件放入相应目录
mv cuda/include/* /usr/local/cuda/include/
chmod +x cuda/lib64/* && mv cuda/lib64/* /usr/local/cuda/lib64/
安装完成以后,增加环境变量:
echo "export LD_LIBRARY_PATH=/usr/local/cuda/lib64/:${LD_LIBRARY_PATH} \n" >> ~/.bashrc
source ~/.bashrc && ldconfig
提示:
默认镜像都内置了最原生的CUDA和cuDNN,如果您自己安装了cudatoolkits等,那么一般会默认优先使用conda中安装的cudatoolkits
安装PyTorch:
参考官方安装步骤
Previous PyTorch Versions | PyTorch
安装TensorFlow:
参考官方安装步骤(需要科学上网)
二、开机创建Miniconda环境,自行构建框架
平台内置的所有镜像都安装了Miniconda,安装路径为/root/miniconda3/。
如果您需要使用其他版本的CUDA或cuDNN,那么可以通过Miniconda简单几步完成环境构建,推荐您租用实例时选择miniconda镜像(内部未安装任何深度学习框架,保持运行环境干净,避免不必要的问题)
以下以构建TensorFlow 1.15.0版本的运行环境为例进行说明如何使用Conda构建需要的环境。
创建虚拟环境
conda create -n tf python=3.7 # 构建一个虚拟环境,名为:tf
conda init bash && source /root/.bashrc # 更新bashrc中的环境变量
conda activate tf # 切换到创建的虚拟环境:tf
安装软件依赖
# 切换conda虚拟环境后
conda install tensorflow-gpu==1.15.0 # conda会自动解析依赖安装tensorflow 1.15.0版本需要的cuda和cudnn,无需自己独立安装
# 安装完使用Python进行简单的测试:
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
print(sess.run(hello))
Notebook环境切换
如何在JupyterLab的Notebook中使用新的Conda环境
# 创建Conda新的虚拟环境(如已创建,请忽略!)
conda create -n tf python=3.7 # 构建一个虚拟环境,名为:tf
conda init bash && source /root/.bashrc # 更新bashrc中的环境变量
# 将新的Conda虚拟环境加入jupyterlab中
conda activate tf # 切换到创建的虚拟环境:tf
conda install ipykernel
ipython kernel install --user --name=tf # 设置kernel,--user表示当前用户,tf为虚拟环境名称
执行以上命令后,如果创建新的Notebook,那么可以选择名为tf的Notebook。
如果是已有的Notebook
清除Conda虚拟环境
# 清除安装的环境
conda deactivate # 退出当前(tf)环境到base环境
conda remove -n tf --all # 清除tf环境
删除安装包和缓存
conda clean -y --all
安装虚拟环境到数据盘(如需要可以安装虚拟环境到数据盘)
执行以下命令设置将虚拟环境安装到/root/autodl-tmp/conda/envs
, 包缓存到/root/autodl-tmp/conda/pkgs
mkdir -p /root/autodl-tmp/conda/pkgs
conda config --add pkgs_dirs /root/autodl-tmp/conda/pkgs
mkdir -p /root/autodl-tmp/conda/envs
conda config --add envs_dirs /root/autodl-tmp/conda/envs
验证是否生效
# 执行命令查看配置的路径是否在文件内容中
cat /root/.condarc
取消设置安装虚拟环境到数据盘
编辑/root/.condarc文件,删除对应的路径所在行即可
推荐的使用方式:
首先平台镜像中有没有您需要的Torch、TensorFlow等框架的相应版本,如果有首选平台内置的镜像。
如果平台中没有合适的Torch、TensorFlow等框架版本,那么查询自己的框架需要什么CUDA版本,比如PyTorch=1.9.0需要CUDA=11.1,那么可以选择Miniconda/CUDA=11.1的平台镜像,然后在镜像内安装自己需要的框架,免去安装cudatoolkit的麻烦。(平台内置的CUDA均带.h头文件,如有二次编译代码的需求更方便)。
如果以上条件都不满足,则可随便挑选一个Miniconda镜像,在开机后自行安装相关框架、CUDA、甚至其他版本的Python。