Say Hello To TensorFlow
使用 Docker 10分鐘構建深度學習框架 TensorFlow + Jupyter 交互環境
前言:
公司的小夥伴最近在玩一個很火的深度學習框架: TensorFlow, 感覺好高大上,還收穫了好多贊,寶寶也想試試,因為只是試玩,所以搭建要簡單、快,不然激情減退了這輩子可能都不能 Say hello to TensorFlow 了,而且任性的我還不想搞亂本機的環境,於是就有了本文
----
索引:
- 關於 Docker
- 為什麼使用 Kitematic
- 下載 Kitematic
- 使用 Kitematic
- Docker-CLI 的使用
- 關於 TensorFlow
- 說明
- 獲取 TensorFlow 鏡像
- 創建 TensorFlow 容器
- 登錄 The Jupyter Notebook
----
正文第一部分:
1.1 為什麼使用 Kitematic
Kitematic: Run containers through a simple, yet powerful graphical user interface.
通過簡單並且強大的圖形用戶界面管理容器
Simple is better. 畢竟本文的重點不在這
1.2 下載 Kitematic & 1.3 安裝 Kitematic
- .pkg 都會裝吧?- Mac
- https://download.docker.com/mac/stable/DockerToolbox.pkg
- .exe 都會裝吧?- Windows
- https://download.docker.com/win/stable/DockerToolbox.exe
因為我使用Mac,所以後面以 Mac 為準,相信 Windows 大同小異
下載安裝很簡單,先講講 Kitematic 做了什麼事吧,安裝完我們會發現 Application 裡面多了三個新App:
注.:Docker Quickstart Terminal,Kitematic(Beta),VirtualBox
第一個:終端,它會幫你配置好Docker環境(比較籠統,後面會帶你敲一遍命令來理解)
第二個:用戶界面(Powerful graphical user interface)
第三個:這個就奇怪了,為什麼幫我裝了一個 VirtualBox 虛擬機?上圖先
註:官網配圖 1
註:官網配圖 2
Docker 的基礎是 Linux 的 LXC(Linux Containers)等技術
機智的你們比較上面兩張圖再加引用的一句話,不難得出 Mac 的 OSX 系統需要藉助 Linux 虛擬機,而 Kitematic 幫我們裝了一個Orachle VM VirtualBox 順帶還創建了輕量級的 DOCKER_HOST:default
因為我使用公司內部的自建倉庫,這裡為自己做一個小備忘:
自建倉庫的訪問必須通過 https,簡單的方法是配置一下信任(我怎麼總喜歡簡單的,被Python 的 Simple is better 洗腦了),Mac 可以通過以下命令:
docker-machine create --driver virtualbox --engine-insecure-registry IP:PORT devn
來重新創建一個 DOCKER HOST(即上圖已關閉的 dev)來達到配置
EXTRA_ARGS="--insecure-registry IP:PORT"n
同樣的效果,即:使用 IP:PORT 作為默認倉庫地址,而且信任它
我司也有容器服務 UCloud - 容器集群 UDocker,我體驗過,很棒哦
我們繼續
1.3 Kitematic 的使用
一打開界面果然 simple,能點的按鈕很少,我們直接跳過這一步,先去看命令行界面如何使用,回過頭來就很容易理解了,先放兩張截圖
註:搜索和創建 Containers的界面(如果沒有對應的 images,會先拉取鏡像)註:Containers 的管理界面,右側 Home 標籤左側是 Log,右側是 Web Preview,Settings標籤 則包含容器創建時的參數配置(port,volumes等),修改需要重啟生效(Kitematic也會幫你重啟)
1.4 Docker-CLI 的使用
每次你打開 Kitematic用戶界面 的時候因為依賴它都會先啟動 default 虛擬機,關閉的時候也會自動關閉
註:可以點擊左下角齒輪圖標打開用戶界面工具的配置,並反選為:關閉Kitematic的時候不關閉Linux VM
為了演示 Docker-CLI 的使用,我們關閉 Kitematic 也關閉 Linux VM,純使用CLI來操作一遍:
我們先打開 Linux VM
命令:
docker-machine startn
結果:
Starting "default"...n(default) Check network to re-create if needed...n(default) Waiting for an IP...nMachine "default" was started.nWaiting for SSH to be available...nDetecting the provisioner...nStarted machines may have new IP addresses. You may need to re-run the `docker-machine env` command.n
跟隨結果的最後一句,命令:
docker-machine envn
結果:
export DOCKER_TLS_VERIFY="1"nexport DOCKER_HOST="tcp://192.168.99.100:2376"nexport DOCKER_CERT_PATH="/Users/kevin/.docker/machine/machines/default"nexport DOCKER_MACHINE_NAME="default"n# Run this command to configure your shell:n# eval $(docker-machine env)n
繼續無腦跟隨最後兩句,命令:
eval $(docker-machine env)n
結果:無
至此就完成了,來測試一下:
註:如果你跟隨本文到這一步,那麼你的 docker images 結果應該是空的----
正文第二部分:
2.1 說明
馬上就要完成啦,在這裡你可以選擇使用用戶界面或者 CLI(命令行界面) 來獲得一個 TensorFlow 官方鏡像,然後創建容器開始你的 TensorFlow helloworld 之旅,
這裡使用的鏡像是 https://hub.docker.com/r/tensorflow/tensorflow/ 熟悉的:
Kitematic 操作很簡單仍舊忽略,列舉一下 CLI 下的命令:
2.2 獲取 TensorFlow 鏡像:
docker pull tensorflow/tensorflown
有1G多,官方的 Docker Hub 倉庫很慢,請大家各顯神通,哈哈
2.3 創建 TensorFlow 容器:
docker run -ti -p 8888:8888 tensorflow/tensorflown
註:-t 選項讓Docker分配一個偽終端(pseudo-tty)並綁定到容器的標準輸入上, -i 則讓容器的標準輸入保持打開,一般同時出現,即: -ti ,-p 是 port,將容器的8888埠映射到Mac的8888埠,因為包含多個創建配置,這裡建議使用 Kitematic 用戶界面來創建本容器
查看所有容器狀態(加 -a 不過濾停止狀態):
docker ps -an
通過容器名字(下圖最後一列 NAMES)查看容器 logs:
docker logs tensorflown
註:點擊放大
2.4 登錄 Jupyter 交互環境
[I 14:52:06.852 NotebookApp] The Jupyter Notebook is running at: http://[all ip addresses on your system]:8888/?token=a0966ebb68f61ec5c678ee811358ef583ec974fe371c6f48n[I 14:52:06.852 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).n[C 14:52:06.853 NotebookApp]nn Copy/paste this URL into your browser when you connect for the first time,n to login with a token:n http://localhost:8888/?token=a0966ebb68f61ec5c678ee811358ef583ec974fe371c6f48n
注1:Copy/paste this URL into your browser when you connect for the first time, ...
注2:如果你使用 Kitematic 用戶界面,點擊 CONTAINER LOGS右側的 WEB PREVIEW 即可,如果是首次登陸,WEB界面會讓你輸入token,你知道在哪可以找到
----
最後:
Hello,TensorFlow
歡迎關注 我 和我的 知乎專欄 - 隨心DevOps
轉載註明出處即可,本文首發地址:https://zhuanlan.zhihu.com/p/25372795
----
參考資料:
- Docker
- Kitematic
- VirtualBox - Oracle VM VirtualBox
- Docker Machine
- LXC
- tensorflow/tensorflow: Computation using data flow graphs for scalable machine learning
- Project Jupyter
命令查詢:
- Docker -- 從入門到實踐
推薦閱讀:
※萬元深度學習電腦如何配置?
※resnet(殘差網路)的F(x)究竟長什麼樣子?
※如何系統的學習深度學習?
※對於圖像識別和語音識別,其各自的深度學習框架的實現差異大嗎,假如理解了其中之一,轉向另一邊容易嗎?
※theano中怎麼查看TensorVariable的值,在debug時如何跟蹤這樣的變數?
TAG:Docker | TensorFlow | 深度学习DeepLearning |