利用 Kubeflow 來管理 TensorFlow 應用程式 (上)

利用 Kubeflow 來管理 TensorFlow 應用程式 (上)

Kubeflow 是 Google 開源的機器學習工具,目標是簡化在 Kubernetes 上運行機器學習的過程,使之更簡單、可攜帶與可擴展。Kubeflow 目標不是在於重建其他服務,而是提供一個最佳開發系統來部署到各種基礎設施架構中,另外由於使用 Kubernetes 來做為基礎,因此只要有 Kubernetes 的地方,都能夠執行 Kubeflow。

該工具能夠建立以下幾項功能:

  1. 用於建議與管理互動式 Jupyter notebook 的 JupyterHub。
  2. 可以設定使用 CPU 或 GPU,並透過單一設定調整單個叢集大小的 Tensorflow Training Controller。
  3. 用 TensorFlow Serving 容器來提供模型服務。

Kubeflow 目標是透過 Kubernetes 的特性使機器學習更加簡單與快速:

  1. 在不同基礎設施上實現簡單、可重複的攜帶性部署(Laptop <-> ML rig <-> Training cluster <-> Production cluster)。
  2. 部署與管理松耦合的微服務。
  3. 根據需求進行縮放。

節點資訊

本次安裝作業系統採用Ubuntu 16.04 Server,測試環境為實體機器:

事前準備

使用 Kubeflow 之前,需要確保以下條件達成:

所有節點正確安裝指定版本的 NVIDIA driver、CUDA、Docker、NVIDIA Docker,請參考 安裝 Nvidia Docker 2

(option)所有 GPU 節點安裝 cuDNN v7.1.2 for CUDA 9.1,請至 NVIDIA cuDNN 下載

$ tar xvf cudnn-9.1-linux-x64-v7.1.tgz
$ sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/

所有節點以 kubeadm 部署成 Kubernetes v1.9+ 叢集,請參考 用 kubeadm 部署 Kubernetes 叢集。

Kubernetes 叢集需要安裝 NVIDIA Device Plugins,請參考 安裝 Kubernetes NVIDIA Device Plugins。

建立 NFS server 並在 Kubernetes 節點安裝 NFS common,然後利用 Kubernetes 建立 PV 提供給 Kubeflow 使用:

# 在 master 執行

$ sudo apt-get update && sudo apt-get install -y nfs-server

$ sudo mkdir /nfs-data
$ echo “/nfs-data *(rw,sync,no_root_squash,no_subtree_check)” | sudo tee 
-a /etc/exports

$ sudo /etc/init.d/nfs-kernel-server restart

# 在 node 執行

$ sudo apt-get update && sudo apt-get install -y nfs-common

安裝ksonnet 0.9.2,請參考以下:

$ wget https://github.com/ksonnet/ksonnet/releases/download/v0.9.2/ks_0.9.2_linux_amd64.tar.gz

$ tar xvf ks_0.9.2_linux_amd64.tar.gz

$ sudo cp ks_0.9.2_linux_amd64/ks /usr/local/bin/

$ ks version
ksonnet
version: 0.9.2

jsonnet version: v0.9.5

client-go version: 1.8

未完待續

撰文: 白凱仁 迎棧科技軟體工程師

訂閱電子報

Select list(s)*

 

Loading