Kubernetes集成TensorFlow服務

Kubernetes集成TensorFlow服務

TensorFlow能夠裸機運行、基於Virtualenv、Anaconda運行,在Docker中運行。把TensorFlow運行於Kubernetes之中,能夠利用Kubernetes的強大容器管理和編排能力,實現集羣化的分佈式部署。docker

參考上圖的架構將機器學習整合到DevOps的整個流程之中,具有ML模型的版本控制、快速部署和規模伸縮、集羣化測試驗證和運行、快速迭代和持續交付能力,從而創建機器學習的企業級能力。api

一、直接運行Pod

1.1 基礎環境安裝

安裝Kubernets、NVidia Docker2和Nvidia device Plugin,參考:瀏覽器

1.2 建立部署yaml文件

將下面內容保存爲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
  • 若是有多塊GPU,修改上面的nvidia.com/gpu的值,但不能超過系統中當期空閒的GPU數量。

1.3 安裝TensorFlow POD

安裝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狀態,而後進行下面的操做。學習

1.4 映射端口

在打開瀏覽器訪問Tensorflow的Notebook服務以前,咱們須要將端口映射到容器網絡以外的網絡地址:

kubectl port-forward openthings-tenorflow 8888:8888 --namespace=kube-system &

若是端口8888已經佔用,改成別的端口。也可使用ingress等其它方式映射IP地址和端口,更爲通用,只是須要更多的配置,參見Kubernetes的網絡配置外部服務訪問的方法,以下:

1.5 查看日誌

到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拷貝下來,輸入瀏覽器。

1.6 訪問jupyter notebook服務

在瀏覽器輸入上面日誌中的URL地址,相似於:

  • http://localhost:8888/?token=5b3ace4c911f9488b503ae46cec1565e18b877860cf5f99d

應該就能夠打開TensorFlow的Notebook服務了。

二、Kubeflow

上面的方法適合單機單容器實例使用,可使用Kubernetes的容器管理工具。但若是擴展到多個實例甚至多個節點,容器之間是獨立運行的,所以並無把Kubernetes的集羣管理能力充分利用起來。要充分使用容器集羣能力,可使用kubeflow來實現,不過目前該項目還處於0.1版本的狀態。

三、Pachyderm

Pachyderm是另一個能夠在Kubernetes實現數據工做流的軟件,能夠將基於Tensorflow的機器學習工做流整合爲一個統一的數據流,並在Kubernetes集羣上運行。

相關文章
相關標籤/搜索