使用容器与云计算技术快速进行深度学习
最早見于本人山大的一次講課附帶的技術資料,后在多處使用。
文章目錄
- Docker 是什么?
- Docker使用顯卡:nvidia-docker
- 使用深度學習鏡像
- tensorflow 使用案例
- PyTorch
- 飛槳
- 官方入門教程
- 基于云計算的在線平臺
- 數據科學有關鏡像
- 上云
Docker 是什么?
Docker 是一個開源的應用容器引擎,容器不同于虛擬機,更簡單的架構使其無需創建臃腫的操作系統就能夠創建一個隔離的應用環境。利用Docker我們也就可以快速的部署各類服務,而無需復雜的安裝過程。
簡單來說,當我們在安裝Docker之后我們就可以使用一條命令啟動一個容器,而容器中已經有了安裝好的各種軟件。
Docker使用顯卡:nvidia-docker
深度學習計算必須要使用顯卡,這就牽扯到了顯卡的虛擬化技術。虛擬機本身是無法使用顯卡的,只是在使用CPU和存儲來創建一個虛擬的操作系統。然而容器技術則不同。Docker容器底層是可以支持顯卡的使用的,而Docker底層想要使用顯卡只需要安裝一個NVIDIA Docker而已。NVIDIA Docker本身并非一個新的Docker,實際上它更接近于一個Docker的插件。
具體的安裝流程則請參考安裝nvidia-docker2文件。大體分為以下幾步:
- 安裝顯卡驅動
- 安裝CUDA與cudnn
- 安裝nvidia-docker2
具體的英偉達顯卡驅動的支持等有關內容可以參考:
-
安裝nvidia-docker2
-
Ubuntu18.04 顯卡驅動安裝
-
Ubuntu18.04 CUDA與cudnn安裝
-
Ubuntu 18.04 獨顯和集顯切換
使用深度學習鏡像
在以上內容弄好之后,那么就可以使用各大官方提供的Docker鏡像進行編程了。
比如Tensorflow的官方鏡像:Tensorflow官方提供了一系列的Docker鏡像,可以用于創建包含Tensorflow的Docker容器。
其一系列鏡像有一定的命名規則,鏡像列表位于:https://hub.docker.com/r/tensorflow/tensorflow/tags
其中各項參數如下:
-
-py3:Python3版本的Tensorflow,不帶該參數的默認為py2(Tensorflow開發歷史原因)
-
-gpu:提供支持GPU運行的Tensorflow鏡像,需要英偉達Docker以及對應顯卡驅動的支持
-
-jupyter:提供帶有jupyter notebook版本的Docker鏡像,可以結合Docker卷和端口綁定使用。
-
-nightly:Tensorflow的每日構建版本。如果安裝具體版本,需要到tensorflow官方倉庫查看指定版本的Docker鏡像
tensorflow 使用案例
docker run -it --rm tensorflow/tensorflow bashStart a CPU-only container
開啟只使用CPU的鏡像,這也正是其默認鏡像(cpu-py2-not jupyter)
docker run -it --rm --runtime=nvidia tensorflow/tensorflow:latest-gpu python
Start a GPU container, using the Python interpreter.
開啟支持GPU運算的鏡像,同時進入Python命令行。需要宿主機顯卡配置。
docker run -it --rm -v $(realpath ~/notebooks):/tf/notebooks -p 8888:8888 tensorflow/tensorflow:latest-jupyter# 測試gpu版本 docker run -it --rm -v $(realpath ~/notebooks):/tf/notebooks -p 8888:8888 tensorflow/tensorflow:latest-gpu-jupyter
Run a Jupyter notebook server with your own notebook directory (assumed here to be ~/notebooks). To use it, navigate to localhost:8888 in your browser.
運行一個帶有jupyter的tensorflow。端口綁定8888,位置在~/notebook。注意這里使用的具體路徑是~/notebooks。
sudo docker run -it --rm -v $(realpath ~/notebooks):/tf/notebooks -p 8888:8888 tensorflow/tensorflow:nightly-gpu-py3-jupyter在后臺運行支持gpu,py3,帶有jupyter,且為nightly安裝的tensorflow鏡像,在容器停止后刪除。
sudo docker run -it --rm -v $(realpath ~/notebooks):/tf/notebooks -p 8888:8888 tensorflow/tensorflow:1.13.2-py3-jupyter # 2.2.0sudo docker run -it --rm -v $(realpath ~/notebooks):/tf/notebooks -p 8888:8888 tensorflow/tensorflow:2.2.0-gpu-jupyter最后我們運行一個tensorflow版本為1.13.2,Python版本為3,帶有jupyter notebook的docker鏡像。這是一個比較合適的tensorflow1.x鏡像。穩定,沒有太多語法替換警告。
PyTorch
pytorch與tensorflow類似都是通過標簽中的關鍵詞來定義鏡像的。只不過由于其必須依賴GPU運算,因此主要標簽為pytorch版本號和cuda和cudnn版本號。如下命令:
docker pull pytorch/pytorch:1.4-cuda10.1-cudnn7-devel下載鏡像為1.4版本的pytorch,使用gpu加速為cuda10.1,cudnn7。
具體鏡像版本請參考:https://hub.docker.com/r/pytorch/pytorch/tags
不過Pytorch默認不支持jupyter notebook,但是可以通過安裝添加jupyter。
注意默認鏡像及其純凈,并無vi。
飛槳
另外來自百度的國產深度學習框架飛槳也提供了Docker鏡像,具體網址可見https://www.paddlepaddle.org.cn/install/quick。
具體命令則如下:docker pull hub.baidubce.com/paddlepaddle/paddle:1.8.3-gpu-cuda10.0-cudnn7
該命令的作用是從百度的docker鏡像倉庫,下載飛槳1.83版本,同時底層支持GPU運算,同時cuda版本為10,cudnn為7。
官方入門教程
正所謂授之以魚不如授之于漁,其實各大深度學習框架為了推廣自身的人工智能框架都提供了大量的代碼教程以及訓練好的模型。其中做得比較好的就是tensorflow與飛槳(PaddlePaddle),tensorflow重在完成,各種應用各類模型(hub,model)等等,而飛槳不僅僅有以上的各類功能,甚至還提供了專門的教學課程或者比賽解析(尤其百度最近幾年辦了很多比賽,要求就是使用飛槳進行編程,同時需要開放源代碼和解決方案,而且其原生語言即為中文)。
TensorFlow官方教程:https://tensorflow.google.cn/tutorials
飛槳官方教程:https://www.paddlepaddle.org.cn/tutorials/projectdetail/590324
PyTorch官方教程(英文):https://pytorch.org/tutorials/
PyTorch官方教程(中文,開源社區維護,更新較慢,markdown格式不可直接運行):https://pytorch.apachecn.org/
基于云計算的在線平臺
公有云:Google云,百度云,騰訊智能鈦等等
私有云:高尋真源大數據與人工智能科研平臺
數據科學有關鏡像
notebook官方同樣給出了一系列鏡像,使用方法類似。如使用PySpark鏡像:
# spark-2 docker run -it --rm -v $(realpath ~/notebooks):/home/jovyan/work -p 8888:8888 jupyter/pyspark-notebook:spark-2# 最新版,spark3.X docker run -it --rm -v $(realpath ~/notebooks):/home/jovyan/work -p 8888:8888 jupyter/pyspark-notebook下面是一個jupyter 官方鏡像的一個簡單列表,更多內容請直接前往dockerhub上jupyter的官方賬號查詢。
上云
以上所說的鏡像都是docker鏡像,docker容器技術是k8s的技術基礎,利用k8s可以有效上云。不過要真的上云,只有在大量集群時,才有實際意義。受制于文章篇幅有限,這里我們不再進行過多描述,我在其他文章中對此有更詳細的描寫。
總結
以上是生活随笔為你收集整理的使用容器与云计算技术快速进行深度学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安装nvidia-docker2
- 下一篇: DL:深度学习(神经网络)的简介、基础知