TensorFlow能夠裸機運行、基於Virtualenv、Anaconda運行,在Docker中運行。把TensorFlow運行於Kubernetes之中,能夠利用Kubernetes的強大容器管理和編排能力,實現集羣化的分佈式部署。docker
參考上圖的架構將機器學習整合到DevOps的整個流程之中,具有ML模型的版本控制、快速部署和規模伸縮、集羣化測試驗證和運行、快速迭代和持續交付能力,從而創建機器學習的企業級能力。api
安裝Kubernets、NVidia Docker2和Nvidia device Plugin,參考:瀏覽器
將下面內容保存爲tensorflow.yaml文件。cookie
apiVersion: v1 kind: Pod metadata: name: openthings-tensorflow spec: containers: - name: openthings-container image: tensorflow/tensorflow:latest-gpu resources: limits: nvidia.com/gpu: 1 # requesting 1 GPUs
安裝TensorFlow爲Kubernetes POD:網絡
kubectl create -f tensorflow.yaml
查看是否啓動成功:架構
kubectl get pod --all-namespaces
看下是否openthings-tensorflow的pod已經處於running狀態。機器學習
因爲須要下載鏡像,須要等待一段時間。若是一直處於pending狀態,使用下面方法查看問題:分佈式
kubectl describe pod openthings-tensorflow
單獨拉取鏡像:工具
docker pull tensorflow/tensorflow:latest-gpu
一直等到pod的狀態處於running狀態,而後進行下面的操做。學習
在打開瀏覽器訪問Tensorflow的Notebook服務以前,咱們須要將端口映射到容器網絡以外的網絡地址:
kubectl port-forward openthings-tenorflow 8888:8888 --namespace=kube-system &
若是端口8888已經佔用,改成別的端口。也可使用ingress等其它方式映射IP地址和端口,更爲通用,只是須要更多的配置,參見Kubernetes的網絡配置外部服務訪問的方法,以下:
到Kubernetes的Dashboard選擇「容器組」,選中「openthings-tensorflow」,選擇「日誌」,查看容器運行的輸出:
[I 08:14:38.014 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret [W 08:14:38.026 NotebookApp] WARNING: The notebook server is listening on all IP addresses and not using encryption. This is not recommended. [I 08:14:38.031 NotebookApp] Serving notebooks from local directory: /notebooks [I 08:14:38.031 NotebookApp] 0 active kernels [I 08:14:38.031 NotebookApp] The Jupyter Notebook is running at: [I 08:14:38.031 NotebookApp] http://[all ip addresses on your system]:8888/?token=5b3ace4c911f9488b503ae46cec1565e18b877860cf5f99d [I 08:14:38.031 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). [C 08:14:38.031 NotebookApp] Copy/paste this URL into your browser when you connect for the first time, to login with a token: http://localhost:8888/?token=5b3ace4c911f9488b503ae46cec1565e18b877860cf5f99d
把裏面的登陸URL拷貝下來,輸入瀏覽器。
在瀏覽器輸入上面日誌中的URL地址,相似於:
應該就能夠打開TensorFlow的Notebook服務了。
上面的方法適合單機單容器實例使用,可使用Kubernetes的容器管理工具。但若是擴展到多個實例甚至多個節點,容器之間是獨立運行的,所以並無把Kubernetes的集羣管理能力充分利用起來。要充分使用容器集羣能力,可使用kubeflow來實現,不過目前該項目還處於0.1版本的狀態。
Pachyderm是另一個能夠在Kubernetes實現數據工做流的軟件,能夠將基於Tensorflow的機器學習工做流整合爲一個統一的數據流,並在Kubernetes集羣上運行。