1. 程式人生 > >極簡深度學習平臺構建指南

極簡深度學習平臺構建指南

背景

我們在train一個深度學習模型的時候常常需要特別強大的計算力(即便這個模型結構比較簡單). 而選擇個人電腦進行training也是一件相當耗時的事情. 畢竟不是所有的公司和個人都有強悍的進行深度學習模型訓練的GPU計算資源(笑~). 在當前的情況下, 筆者手上只有一個強大的雲端計算平臺可以使用, 但是目前還不能夠使用GPU進行訓練. 於是退而求其次, 充分利用其CPU和記憶體資源進行模型訓練. 於是想到構建這樣一個deep learning 的docker image. 這樣只需要進行一次環境的構建(build第一個docker image)後, 在其他的Linux平臺上面都可使用這個深度學習環境, 十分方便.

準備工作

首先筆者在Cloud上面申請了一臺Centos7.x系統的Instance. 然後是安裝docker. 在Centos7.x 上面安裝docker(docker官方文件)只需要使用指令yum install -y docker 即可, 記得把docker service 設定為開機啟動即可. 程式語言方面選擇python 版本選擇3.5.x 因為目前tensorflowpython 3.5.x 支援是最好的. 執行python 的平臺選擇anaconda . 它已經包含了很多機器學習相關的庫, 不再需要我們再一步步去安裝一些基礎得庫(比如numpy, pandas, sklearn 等). 深度學習框架選擇tensorFlow

作為backend . 頂層開發框架選擇keras . 到此準備工作完畢.

構建過程

筆者已經完成了構建映象的dockerfile 因此只需要進入在Instance上面dockerfile目錄下執行docker build -t XXXX . 即可完成映象的構建.dockerfile 如下:

# deeplearning base image
FROM centos
MAINTAINER *youraccount*

# version control
ENV DL_BASE_VERSION_CTL 14/6/2018 11:10:00

# set env
ENV ANACONDA_HOME /usr/local
/anaconda3 # install basic software vim RUN yum install -y vim # install anaconda3 py3.5.x RUN yum install -y wget RUN yum install -y bzip2 RUN mkdir -p /home/download RUN cd /home/download RUN wget https://repo.continuum.io/archive/Anaconda3-4.2.0-Linux-x86_64.sh RUN chmod 755 ./Anaconda3-4.2.0-Linux-x86_64.sh RUN ./Anaconda3-4.2.0-Linux-x86_64.sh -b -p /usr/local/anaconda3 RUN rm -rf /home/download/* # create link RUN ln -s $ANACONDA_HOME/bin/python /usr/bin/python3 RUN ln -s $ANACONDA_HOME/bin/pip /usr/bin/pip3 RUN ln -s $ANACONDA_HOME/bin/conda /usr/bin/conda # install tensorflow with cpu RUN pip3 install --upgrade --ignore-installed tensorflow # install keras RUN conda install -y keras

然後只需要執行docker build -t={imagename} . 即可完成映象的構建.
然後使用該映象啟動容器的指令碼如下:

echo 'start the dlimage container'
docker run \
-it \
--name=dlcontainer \
-h dlcontainer \
-v /home/dldir:/home/dldir \
{yourimage} \
/bin/bash

在這個地方, 我在啟動容器的時候建立一個掛載卷完成容器中的目錄與Instance上的存放訓練資料以及程式的目錄的對映, 這樣上傳在宿主機器上的資料以及程式可以直接在容器內訪問到. 最後的容器啟動指令/bin/bash 可以改為python3 XXX/XXX/yourcode.py 那麼啟動容器的時候就能夠直接train模型了.
整個構建好的image已經放在dockehub上面了(dlimage). 喜歡的同學可以pull下來玩一玩.相關的專案的github地址為dlimage.

總結

由於目前手上沒有”廉價”的GPU環境可以使用, 當前構建的映象只能夠使用CPU和記憶體資源去train模型. 當雲平臺支援GPU進行運算的時候, 我會第一時間更新, 推出支援GPU計算的docker dlimage.