Ubuntu快速玩起色器學習

Ubuntu快速玩起色器學習

最近入手了一塊Titan V,天然是要玩一玩機器學習的。這塊卡不只CUDA核達到了5120個,還有了640個Tensor計算核,安裝TesnsorFlow是首選了。若是在集羣中運行,可使用TensorFlow自帶的集羣服務,或者經過Kubernetes進行集羣的管理,或者經過Spark實現基於分佈式內存的深度學習集羣。linux

适用于公益的 AI

個人硬件環境是:CPU-7980XE,內存-海盜船16G*8,顯卡-Titan V。git

安裝的軟件棧包括:github

  1. Ubuntu16.04 LTS
  2. Nvidia Driver 396.42
  3. Nvidia CUDA 9.1
  4. Nvidia cuDNN 7.1.3
  5. Nvidia cuTensor 4.0
  6. Docker CE 18.03
  7. Docker-Nvidia 2.0.3
  8. Tensorflow for Docker 1.8
  9. Kubernets 1.10.2
  10. Spark 2.3

硬件、驅動和軟件都是最新的版本,中間踩了很多坑。記錄下來,供參考。docker

一、安裝 Ubuntu16.04 LTS

準備一個8G以上的U盤,製做一個啓動U盤。ubuntu

而後就能夠插入計算機,修改BIOS爲U盤啓動,而後安裝系統。瀏覽器

二、安裝Nvidia圖形驅動396

安裝最新的圖形卡驅動,步驟以下:curl

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install nvidia-396

#開發使用
sudo apt install nvidia-396-dev

若是遇到問題,參考:機器學習

三、安裝CUDA 9.1

安裝最新的CUDA Toolkit 9.1,以下:分佈式

#獲取Cuda9.1安裝文件文件和2018.5.5的補丁包:
wget -c https://developer.nvidia.com/compute/cuda/9.1/Prod/local_installers/cuda_9.1.85_387.26_linux
wget -c https://developer.nvidia.com/compute/cuda/9.1/Prod/patches/3/cuda_9.1.85.3_linux
#而後運行 sudo chmod +x ...,再執行就能夠了。

而後,進行CUDA的執行文件和庫文件路徑設置(必需的,安裝程序沒有自動設置。修改此設置可使用不一樣的CUDA版本)。輸入 gedit .profile,將下面內容加入到最後:工具

CUDAPATH="/usr/local/cuda-9.1/bin"
PATH="$CUDAPATH:$PATH"

CUDALIB="/usr/local/cuda-9.1/lib64"
LD_LIBRARY_PATH="$CUDALIB:$LD_LIBRARY_PATH"

保存後,退出。

而後,當即進行啓用(下次登陸後會自動啓用):

source .profile

也能夠放到其它啓動時運行文件或者腳本文件中每次運行。

四、安裝cuDNN 7.1.3

這個須要一個Nvidia的開發者賬號,到Nvidia官網(https://www.nvidia.com/zh-cn/deep-learning-ai)註冊,而後就能夠下載了。下載deb版本的安裝程序,而後運行:

sudo dpkg -i libcudnn7_7.1.3.16-1+cuda9.1_amd64.deb
sudo dpkg -i libcudnn7-dev_7.1.3.16-1+cuda9.1_amd64.deb
  • 注意,須要同時下載運行時和開發文件包。開發文件包裏面沒有包含運行時庫,須要先下載、安裝運行時庫,不然安裝開發庫時會報錯。

五、安裝cuTensor 4.0

到Nvidia官網(https://www.nvidia.com/zh-cn/deep-learning-ai),使用Nvidia的開發者賬號登陸,而後就能夠下載了。下載deb版本的安裝程序,而後運行:

sudo dpkg -i nv-tensorrt-repo-ubuntu1604-cuda9.0-rc-trt4.0.0.3-20180329_1-1_amd64.deb

六、安裝Docker CE 18.03

須要安裝Docker CE的18.03版本(爲了支持Nvidia的GPU),其餘版本不行。

wget get.docker.com -O docker.sh
sudo chmod +x docker.sh
./docker.sh

sudo apt install docker-ce=18.03.1~ce-0~ubuntu

七、安裝Docker-Nvidia

安裝NVidia支持的Docker引擎(https://github.com/NVIDIA/nvidia-docker),就能夠在容器中使用GPU了。具體步驟以下:

# If you have nvidia-docker 1.0 installed: we need to remove it and all existing GPU containers
docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
sudo apt-get purge -y nvidia-docker

# Add the package repositories
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
  sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
  sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update

# Install nvidia-docker2 and reload the Docker daemon configuration
sudo apt-get install -y nvidia-docker2
sudo pkill -SIGHUP dockerd

# Test nvidia-smi with the latest official CUDA image
docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi

注意,如今像上面運行 Docker 能夠直接支持GPU了,不用再單獨運行Docker-Nvidia命令了,大大加強了與各類容器編排系統的兼容性,Kubernetes目前也已經能夠支持Docker容器運行GPU了。

八、安裝Tensorflow for Docker

Tensorflow已經官方支持Docker的部署了,一行代碼就能夠搞定:

nvidia-docker run -it -p 8888:8888 tensorflow/tensorflow:latest-gpu

九、運行Jupyter with Tensorflow

上面安裝結束後,會出現關於tensorflow的訪問提示,拷貝,輸入瀏覽器便可以訪問Jupyter Notebook for Tensorflow了,能夠試着運行一下,檢查Tensorflow運行是否正常。

經過Kubeflow能夠將深度學習引擎與Kubernetes結合起來,方便進行大規模集羣節點的管理。

十、部署Kubernetes 1.9.3

參考下面的教程:

安裝Kubernetes上的GPU支持軟件:

十一、使用Spark 2.3

經過Spark使用Kubernetes的集羣管理和容器編排能力,進一步調用GPU進行深度學習,已經開發了多種多種技術路線和方案,目前還在發展之中。

能夠參考:

目前,開源社區和軟件公司正在解決Kubernetes支持GPU的Docker、Spark支持GPU的Docker以及原生的Spark DL深度學習支持(參考: Spark的GPU支持方法研究),估計2018年末就會有完整的生產級平臺出現。

相關文章
相關標籤/搜索