基于容器云的深度学习体验

Posted popsuper1982

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于容器云的深度学习体验相关的知识,希望对你有一定的参考价值。

当前深度学习如火如荼,而深度学习平台多依赖于GPU。

网易容器云也计划推出基于GPU的容器,目前在灰测阶段,先来体验一把。

(1) 在容器服务中,创建有状态负载

在最新的可用区B,选择高性能容器,选择异构计算,就是带GPU的容器了

既然是容器,要选择一个容器镜像,可以用官网的public/gpu-runtime的镜像

选择一个ssh key,方便将来登陆

在有状态容器中,状态为运行中。

对这个容器绑定一个公网IP地址。

(2) 查看GPU的情况

将nvidia的包放到PATH里面来

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/nvidia/lib64

使用nvidia-smi查看GPU的情况

可以看到有一个Tesla K80的卡

(3) 安装CUDA及依赖包

添加repo

CUDA_REPO_PKG=http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_8.0.61-1_amd64.deb

ML_REPO_PKG=http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1404/x86_64/nvidia-machine-learning-repo-ubuntu1404_4.0-2_amd64.deb

wget "$CUDA_REPO_PKG" -O /tmp/cuda-repo.deb && dpkg -i /tmp/cuda-repo.deb && rm -f /tmp/cuda-repo.deb

wget "$ML_REPO_PKG" -O /tmp/ml-repo.deb && dpkg -i /tmp/ml-repo.deb && rm -f /tmp/ml-repo.deb

apt-get update

在根目录中有cuda-linux64-rel-8.0.61-21551265.run,运行它

apt-get install cuda-cudart-8-0

apt-get install --no-install-recommends git graphviz python-dev python-flask python-flaskext.wtf python-gevent python-h5py python-numpy python-pil python-pip python-scipy python-tk

接下来我们要安装https://github.com/NVIDIA/DIGITS

DIGITS (the Deep Learning GPU Training System) 是用于训练深度学习模型的一个Web应用,目前支持Caffe, Torch, 及Tensorflow三个深度学习框架。

export DIGITS_ROOT=~/digits

git clone https://github.com/NVIDIA/DIGITS.git $DIGITS_ROOT

运行./digits/device_query.py查看安装情况

修改PATH加入cuda

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/nvidia/lib64:/usr/local/cuda-8.0/lib64

(4) 安装Caffe,这是必须的

先要安装Protobuf

apt-get install autoconf automake libtool curl make g++ git python-dev python-setuptools unzip

export PROTOBUF_ROOT=~/protobuf

git clone https://github.com/google/protobuf.git $PROTOBUF_ROOT -b '3.2.x'

cd $PROTOBUF_ROOT

./autogen.sh

./configure

make "-j$(nproc)"

make install

ldconfig

cd python

python setup.py install --cpp_implementation

接下来正式安装Caffe

安装依赖包

apt-get install --no-install-recommends build-essential cmake git gfortran libatlas-base-dev libboost-filesystem-dev libboost-python-dev libboost-system-dev libboost-thread-dev libgflags-dev libgoogle-glog-dev libhdf5-serial-dev libleveldb-dev liblmdb-dev libopencv-dev libsnappy-dev python-all-dev python-dev python-h5py python-matplotlib python-numpy python-opencv python-pil python-pip python-pydot python-scipy python-skimage python-sklearn

export CAFFE_ROOT=~/caffe

git clone https://github.com/NVIDIA/caffe.git $CAFFE_ROOT -b 'caffe-0.15'

pip install -r $CAFFE_ROOT/python/requirements.txt

cd $CAFFE_ROOT

mkdir build

cd build

cmake ..

make -j"$(nproc)"

make install

(5) 安装Tensorflow

apt-get install libcudnn5

wget https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.2.1-cp27-none-linux_x86_64.whl

如果下载不下来,需要从能够上google的地方下载下来,然后上传到容器中去

pip install --upgrade ./tensorflow_gpu-1.2.1-cp27-none-linux_x86_64.whl

需要调整numpy的版本

easy_install numpy

将如下的环境变量放入.bashrc

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/nvidia/lib64:/usr/local/cuda-8.0/lib64

export PROTOBUF_ROOT=/root/protobuf

export CAFFE_ROOT=/root/caffe

export DIGITS_ROOT=/root/digits

(6) 安装DIGITS

刚才使用device_query.py的时候,已经下载过代码。


pip install -r $DIGITS_ROOT/requirements.txt

pip install -e $DIGITS_ROOT

ln /dev/null /dev/raw1394

启动服务

digits-devserver

(7) 使用DIGITS做深度学习的例子

下载数据

python -m digits.download_data mnist ~/mnist

打开界面,使用5000端口,可以看到有1个GPU可以使用

生成一个Datasets

查看生成的Dataset,可以看出是一系列手写的数字

基于这个数据集,训练一个模型

第一个例子中,我们暂且不使用Tensorflow,使用Caffe框架

模型训练完毕,可以看出损失是梯度下降的,准确度是上升的。

接下来我们测试一下图像的识别。

我们在/root/mnist/test/8下面下载一个数字8,文件名为00641.png

我们上传这个图像进行识别

识别结果如下

好了,有了这个平台,以后可以干很多有意识的模型了。

欢迎关注公众号

以上是关于基于容器云的深度学习体验的主要内容,如果未能解决你的问题,请参考以下文章

持续优化云原生体验,阿里云在Serverless容器与多云上的探索

专访 | 腾讯云机器学习平台技术负责人黄明,详解 DI-X 深度学习平台

HMS Core机器学习服务图像超分能力,基于深度学习提升新闻阅读体验

研究进展:基于阈值降噪和深度神经网络的锂离子电容器寿命预测

猿创征文|深度学习基于前馈神经网络完成鸢尾花分类

远程服务器基于docker容器的深度学习环境配置(支持GPU)