最近入手了一塊Titan V,天然是要玩一玩機器學習的。這塊卡不只CUDA核達到了5120個,還有了640個Tensor計算核,安裝TesnsorFlow是首選了。若是在集羣中運行,可使用TensorFlow自帶的集羣服務,或者經過Kubernetes進行集羣的管理,或者經過Spark實現基於分佈式內存的深度學習集羣。linux
個人硬件環境是:CPU-7980XE,內存-海盜船16G*8,顯卡-Titan V。git
安裝的軟件棧包括:github
硬件、驅動和軟件都是最新的版本,中間踩了很多坑。記錄下來,供參考。docker
準備一個8G以上的U盤,製做一個啓動U盤。ubuntu
而後就能夠插入計算機,修改BIOS爲U盤啓動,而後安裝系統。瀏覽器
安裝最新的圖形卡驅動,步驟以下:curl
sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update sudo apt install nvidia-396 #開發使用 sudo apt install nvidia-396-dev
若是遇到問題,參考:機器學習
安裝最新的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
也能夠放到其它啓動時運行文件或者腳本文件中每次運行。
這個須要一個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
到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版本(爲了支持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
安裝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已經官方支持Docker的部署了,一行代碼就能夠搞定:
nvidia-docker run -it -p 8888:8888 tensorflow/tensorflow:latest-gpu
上面安裝結束後,會出現關於tensorflow的訪問提示,拷貝,輸入瀏覽器便可以訪問Jupyter Notebook for Tensorflow了,能夠試着運行一下,檢查Tensorflow運行是否正常。
經過Kubeflow能夠將深度學習引擎與Kubernetes結合起來,方便進行大規模集羣節點的管理。
參考下面的教程:
安裝Kubernetes上的GPU支持軟件:
經過Spark使用Kubernetes的集羣管理和容器編排能力,進一步調用GPU進行深度學習,已經開發了多種多種技術路線和方案,目前還在發展之中。
能夠參考:
目前,開源社區和軟件公司正在解決Kubernetes支持GPU的Docker、Spark支持GPU的Docker以及原生的Spark DL深度學習支持(參考: Spark的GPU支持方法研究),估計2018年末就會有完整的生產級平臺出現。