深度学习中,很多图像任务需要构建较大的模型,要训练较大的模型,就需要与之对应的数据集。 这样的训练任务,往往要花费很长时间。作者在训练cifar10任务时,用了近40个小时。在更大的任务中,用CPU做训练可能要100~200个小时。 很多深度学习框架,都支持GPU,可以通过租用GPU云服务器完成训练。
腾讯云GPU服务器。
腾讯云比阿里云的GPU服务器更多一些,在阿里云上有时会出现没有GPU服务器或者售罄。
阿里云提供了AI镜像,预装了GPU驱动和Tensorflow。而腾讯云只提供了安装GPU驱动的镜像,需要自己安装tensorflow-gpu。
阿里云提供了更多组件。笔者利用阿里云OSS服务,下传数据和上传训练模型。
性能、价格方面没有差别。
P4 P10 M40 V100
名称:阿里AI云加速镜像CentOS7(阿里AI云加速镜像,预装CUDA、TensorFlow及阿里云统一分布式加速框架Perseus。)
CUDA:9.0.176
GPU Driver:384.111
CUDNN:v7.3.1
NCCL:2.3.7
Open MPI:3.0.0
TensorFlow:1.12.0
Horovod:0.15.2
Perseus:0.9.3
https://market.aliyun.com/products/57742013/cmjj032323.html?spm=5176.204674.1085795.1.7db83eadydxtBE
腾讯云容器服务镜像Ubuntu 16.04 64位 GPU 内核4.4.104 操作系统:Ubuntu Server 16.04.1 LTS 64位
集成软件:cloud-init-17.1, nvidia-driver 410, cuda 10 https://market.cloud.tencent.com/products/8847?productId=8847&_ga=1.128449422.309446823.1527128175
基于腾讯镜像,阿里镜像已经安装好tensorflow环境。
lsmod |grep nvidia
GPU 性能监测
watch -n 3 nvidia-smi
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-4.5.1-Linux-x86_64.sh
查看版本python 3.6.8。
conda install tensorflow-gpu
conda install keras
tensorflow 1.13.1 keras 2.2.4
github下载keras文件夹。
运行
python cifar10_cnn.py
steps_per_epoch错误,添加step_per_epoch参数。
model.fit_generator(datagen.flow(x_train, y_train,batch_size=batch_size),
epochs=epochs,
steps_per_epoch=2000,
validation_data=(x_test, y_test),
workers=4)
在没有额外配置的情况下,只有第一块显卡进行运算。
虽然阿里官方给出了不同显卡计算能力的差别,实际运行P4和V100的性能差别不大。
GPU 安装检测 https://cloud.tencent.com/document/product/560/8293 GPU 安装冲突 https://www.cnblogs.com/liaohuiqiang/archive/2018/10/15/9791365.html
CUDNN 检查版本 https://blog.csdn.net/baidu_32936911/article/details/79774289
腾讯云 镜像 https://cloud.tencent.com/document/product/560/30129
python安装的cudatoolkit和cudnn程序包版本是:9.2 3.nvidia 驱动和cuda runtime 版本对应关系 运行时版本 驱动版本 CUDA 9.1 387.xx CUDA 9.0 384.xx CUDA 8.0 375.xx (GA2) CUDA 8.0 367.4x CUDA 7.5 352.xx CUDA 7.0 346.xx CUDA 6.5 340.xx CUDA 6.0 331.xx CUDA 5.5 319.xx CUDA 5.0 304.xx CUDA 4.2 295.41 CUDA 4.1 285.05.33 CUDA 4.0 270.41.19 CUDA 3.2 260.19.26 CUDA 3.1 256.40 CUDA 3.0 195.36.15 4.解决方案 从驱动和运行时的版本对应关系来看,版本为384.81的驱动程序 对应的 运行时版本是9.0,也就是说我们在python中安装cudatoolkit和cudnn程序包版本9.2是过高了。 因为系统中依赖GPU驱动的程序比较多,一般出现这种情况,我们都是更改cudatoolkit和cudnn程序包的版本。 于是,先卸载python中安装cudatoolkit和cudnn程序包:pip uninstall cudnn ; pip uninstall cudatoolkit 然后安装对应版本的cudatoolkit和cudnn程序包:pip install cudatoolkit=9.0;pip install cudnn 5.为什么会出现这种情况呢: 一般出现这种情况是因为在python中安装tensorflow的gpu版本时,pip会检查tensorflow依赖的其他的包,如果依赖的包没有安装,则会先安装最新版本的依赖包。这时候tensorflow的gpu版本依赖cudatoolkit和cudnn程序包,pip就会安装最新版本的cudatoolkit和cudnn程序包,最终导致gpu驱动版本和cuda运行时版本不匹配。 s