極簡深度學習平臺構建指南
背景
我們在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 因為目前tensorflow
對python 3.5.x
支援是最好的. 執行python
的平臺選擇anaconda
. 它已經包含了很多機器學習相關的庫, 不再需要我們再一步步去安裝一些基礎得庫(比如numpy, pandas, sklearn 等). 深度學習框架選擇tensorFlow
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.