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~

相關文章
相關標籤/搜索