Say Hello To TensorFlow

使用 Docker 10分鐘構建深度學習框架 TensorFlow + Jupyter 交互環境

前言:

公司的小夥伴最近在玩一個很火的深度學習框架: TensorFlow, 感覺好高大上,還收穫了好多贊,寶寶也想試試,因為只是試玩,所以搭建要簡單、快,不然激情減退了這輩子可能都不能 Say hello to TensorFlow 了,而且任性的我還不想搞亂本機的環境,於是就有了本文

----

索引:

  1. 關於 Docker

    1. 為什麼使用 Kitematic

    2. 下載 Kitematic
    3. 使用 Kitematic
    4. Docker-CLI 的使用
  2. 關於 TensorFlow
    1. 說明
    2. 獲取 TensorFlow 鏡像
    3. 創建 TensorFlow 容器
    4. 登錄 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
    • download.docker.com/mac
  • .exe 都會裝吧?- Windows

    • download.docker.com/win

因為我使用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 之旅,

這裡使用的鏡像是 hub.docker.com/r/tensor 熟悉的:

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

轉載註明出處即可,本文首發地址:zhuanlan.zhihu.com/p/25

----

參考資料:

  • 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 |