Azure上面玩转深度学习训练-风格迁移

Azure上GPU VM简介

 

中国区的GPU机器终于正式上线了,这不是最为重要的,GPU的机器各家基本都有,最为重要的是Azure上这款GPU机器直接配备了NIVIDA最新一代基于Volta架构的Tesla V100的GPU卡, 做为全球第一款在AI training上超过100 TFLOPS的性能怪兽,他到底有多强悍呢?python

咱们来和他的上一代基于Pascal架构的P100来作一个简单对比,你们能够看到V100首次配备Tensor Cores,每一个tensor core都会操做一个4X4的矩阵提高浮点运算的效能和吞吐量;在CUDA cores上面,V100提供5120和CUDA cores,P100是3584:linux

在实际的Deep Learning训练中,V100的性能大约是P100的3倍git

在Deep learning的Inference测试中,V100大约是CPU的47倍,P100的3倍github

对于AI开发人员来讲,更短的AI训练时间,更好的性价比将会帮助他们加速应用的开发和创新,在Azure上目前提供4种不一样规格的NC v3 GPU机器,以下表所示,另外,Azure上的GPU VM按照分钟计费,能够在训练的时候打开VM,训练完成后关闭VM节约成本:算法

深度学习训练环境搭建

 

以风格迁移(style transfer)为例,接下来的部分主要为你们介绍如何搭建深度学习环境进行深度神经网络的训练和测试。测试中使用到的软件,框架,操做系统为Tensorflow 1.8,CUDA 9.0 ,cuDNN 7.1.4, Ubuntu 1604,Anaconda 5.2以及VGG网络模型。ubuntu

  1. 首先要建立GPU虚拟机,目前在Azure上,提供如下Linux操做系统对NIVIDA GPU进行支持,在作建立的时候能够根据本身的须要选择相应的版本:

  1. 本次测试选择Ubuntu 16.04 LTS,区域必须选择 中国北区2或者 中国东区2,由于GPU的机器只在新的区域提供,而后选择须要的大小便可:

     

  2. 接下来就是要安装NVIDIA的驱动和CUDA了,咱们固然能够在官网下载而后安装,但既然用的是Ubuntu 1604,那么其实有更加方便的方式进行安装,直接添加repo便可,具体命令以下:

# 更新本地CUDAkey api

$ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub 网络

#添加CUDArepo到本地架构

$ sudo sh -c 'echo "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64 /" > /etc/apt/sources.list.d/cuda.list'
$ sudo apt-get update
框架

# 安装NIVIDIA驱动,CUDA driver,并重启机器

$ sudo apt-get -y --no-install-recommends install cuda-drivers
$ sudo reboot

# 安装CUDA 9.0,不要安装9.1或者9.2

$ sudo apt-get -y install cuda-toolkit-9-0

  1. 验证你的安装:当你安装完成后,使用nvidia-smi命令测试一下,若是你能够看到相似以下的显示结果,那么证实你的安装时正确的,咱们能够看到当前当前机器使用Tesla V100 PCIE 16GBGPU显卡:

 

  1. 在开始安装Tensorflow以前,为了比较好的训练效果,强烈建议你们安装NIVIDIA cuDNN的library。cuDNN全称 CUDA® Deep Neural Network library (cuDNN) ,是一个针对深度神经网络的GPU加速库,号称对于CNN有最高6倍的加速,适用于多种不一样的深度学习框架:

安装cuDNN必须注册nvidia developer才能够下载,在以下地址注册并下载:

https://developer.nvidia.com/cudnn

在本测试中,请选择v7.1.4 for CUDA 9.0下载:

 

# 安装cuDNN运行时和开发库:

sudo dpkg -i libcudnn7_7.0.3.11-1+cuda9.0_amd64.deb

sudo dpkg -i libcudnn7-dev_7.0.3.11-1+cuda9.0_amd64.deb

  1. 在深度学习环境中,咱们最基本的须要一个python环境,建议你们使用Anaconda,继承了数据科学最为常见的各类package,更新管理很是方便,能够在以下网址下载并安装:

https://www.anaconda.com/download/#linux

wget https://repo.anaconda.com/archive/Anaconda3-5.2.0-Linux-x86_64.sh

  1. 在通常的开发过程中,咱们可能会须要多个python环境,安装不一样版本的package,因此可使用Anaconda的conda工具建立一个tensorflow的环境,并激活这个环境:

conda create -n tensorflow

source activate tensorflow

8 .安装Tensorflow,咱们固然时须要安装GPU版本的tensorflow,当前的版本使用1.8.0

pip install --ignore-installed --upgrade

https://download.tensorflow.google.cn/linux/gpu/tensorflow_gpu-1.8.0-cp36-cp36m-linux_x86_64.whl

在某些状况下,众所周知的缘由,你的下载可能失败,那么能够把tensorflowpackage下载到本地安装,安装完成后进行简单的测试,若是你看到相似于以下的提示,那么你的安装就是没问题的:

注意:为了方便你们照着这个教程愉快的玩耍,我把这个文章俩面须要的package都已经下载而且upload到了Azurestorage里面,直接下载便可,具体方法好比以train2014.zip为例,直接wget便可:

https://deepstorage.blob.core.chinacloudapi.cn/deeplearning/train2014.zip

其余相关的package以下,能够在安装的时候根据须要下载:

使用Tensorflow进行风格迁移深度学习训练

 

什么是风格迁移呢?简单来讲就是咱们经过CNN(卷积神经网络)抽取一个你想作style图像的风格,让后将这种风格应用到你的原始图像,最后产生目标风格,这种方式咱们叫风格迁移,类比一下你的手机里面的各类美颜,滤镜等等的效果。

若是想更多的了解背后的原理,公式,算法,请移步这里:

https://arxiv.org/pdf/1508.06576.pdf

https://cs.stanford.edu/people/jcjohns/eccv16/

 

  1. 咱们这里的demo使用MIT的Logan Engstrom使用Tensorflow实现的快速风格迁移做为例子演示深度学习的训练和测试过程:

# 首先从Github上克隆Fast Style Transfer,我作了一些小修改,请直接从以下repo下载

    $ git clone https://github.com/kingliantop/fast-style-transfer.git

 

  1. 数据准备,该测试的快速风格迁移程序依赖于VGG网络模型和训练图片,因此须要下载VGG网络模型和train2014图片集,在开始正式训练以前,首先你须要运行setup.sh来准备数据:

    mkdir data

    cd data

    wget https://deepstorage.blob.core.chinacloudapi.cn/deeplearning/imagenet-vgg-verydeep-19.mat    

    mkdir bin

    wget https://deepstorage.blob.core.chinacloudapi.cn/deeplearning/train2014.zip

    unzip train2014.zip

其中train2014大约12.5GB,VGG模型大约550MB,我都放在了中国,你们直接run setup.ssh便可。

  1. 万事具有,咱们有datasets,有程序,那么咱们如今就能够运行深度学习训练了,请记得激活你的tensorflow环境,为了测试,咱们选择示例中的la_muse.jpg做为咱们的style图片进行训练,图片以下:

     

执行以下程序开始训练,整个训练过程大约1个半小时,比起一年之前在K80上大约56小时,快了不少:

python style.py --style examples/style/la_muse.jpg --train-path data/train2014 --checkpoint-dir checkpoint --test examples/content/chicago.jpg --test-dir test --content-weight 1.5e1 --checkpoint-iterations 1000 --batch-size 20

 

  1. 训练完成后,在checkpoint目录下会生成模型的ckpt文件,利用该模型文件,咱们就能够对图片进行风格迁移,具体命令以下:

python evaluate.py --checkpoint checkpoint --in-path ./demo.jpeg --out-path ./demo_la_muse.jpeg

我对多种不一样风格的图片进行了迁移,你们能够看到原始图片通过风格迁移之后就变成了跟风格图片接近的风格,队中不一样风格的对好比下:

原始图片

迁移风格

风格迁移后结果

 

  1. 固然,咱们也能够实现对于视频的风格迁移,好比咱们团队都是喜欢健身的猛男,包括老板:)原始视频以下:

迁移的风格图片以下:

原始视频不够魔幻,迁移后的风格以下:

 

或者更为魔幻一点:)

 若是你们感兴趣,能够在Azure上使用NC系列VM快速进行AI相关的开发测试,Enjoy~

相关文章
相关标签/搜索