本系列將利用阿里雲容器服務,幫助您上手 Kubeflow Pipelines.html
機器學習的工程複雜度,除了來自於常見的軟件開發問題外,還和機器學習數據驅動的特色相關。而這就帶來了其工做流程鏈路更長,數據版本失控,實驗難以跟蹤、結果難以重現,模型迭代成本巨大等一系列問題。爲了解決這些機器學習固有的問題,不少企業構建了內部機器學習平臺來管理機器學習生命週期,其中最有名的是 Google 的 Tensorflow Extended, Facebook 的 FBLearner Flow, Uber 的 Michelangelo,遺憾的是這些平臺都須要綁定在公司內部的基礎設施之上,沒法完全開源。而這些機器學習平臺的骨架就是機器學習工做流系統,它可讓數據科學家靈活定義本身的機器學習流水線,重用已有的數據處理和模型訓練能力,進而更好的管理機器學習生命週期。
談到機器學習工做流平臺,Google 的工程經驗很是豐富,它的 TensorFlow Extended 機器學習平臺支撐了 Google 的搜索,翻譯,視頻等核心業務;更重要的是其對機器學習領域工程效率問題的理解深入,Google 的 Kubeflow 團隊於 2018 年末開源了 Kubeflow Pipelines(KFP), KFP 的設計與 Google 內部機器學習平臺 TensorFlow Extended 一脈相承,惟一的區別是 KFP 運行在 Kubernetes 的平臺上,TFX 是運行在 Borg 之上的。node
Kubeflow Pipelines 平臺包括:mysql
而 Kubeflow Pipelines 的目標在於:linux
看到 Kubeflow Piplines 的能力,你們是否是都摩拳擦掌,想一睹爲快?可是目前國內想使用 Kubeflow Pipeline 有兩個挑戰:git
爲了方便國內的用戶安裝 Kubeflow Pipelines,阿里雲容器服務團隊提供了基於 Kustomize 的 Kubeflow Pipelines 部署方案。和普通的 Kubeflow 基礎服務不一樣,Kubeflow Pipelines 須要依賴於 mysql 和 minio 這些有狀態服務,也就須要考慮如何持久化和備份數據。在本例子中,咱們藉助阿里雲 SSD 雲盤做爲數據持久化的方案,分別自動的爲 mysql 和 minio 建立 SSD 雲盤。
您能夠在阿里雲上嘗試一下單獨部署最新版本 Kubeflow Pipelines。github
在 Linux 和 Mac OS 環境,能夠執行sql
opsys=linux # or darwin, or windows curl -s https://api.github.com/repos/kubernetes-sigs/kustomize/releases/latest |\ grep browser_download |\ grep $opsys |\ cut -d '"' -f 4 |\ xargs curl -O -L mv kustomize_*_${opsys}_amd64 /usr/bin/kustomize chmod u+x /usr/bin/kustomize
在 Windows 環境,能夠下載 kustomize_2.0.3_windows_amd64.exe數據庫
yum install -y git git clone --recursive https://github.com/aliyunContainerService/kubeflow-aliyun
3.1 配置 TLS 證書。若是沒有 TLS 證書,能夠經過下列命令生成windows
yum install -y openssl domain="pipelines.kubeflow.org" openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout kubeflow-aliyun/overlays/ack-auto-clouddisk/tls.key -out kubeflow-aliyun/overlays/ack-auto-clouddisk/tls.crt -subj "/CN=$domain/O=$domain"
若是您有TLS證書,請分別將私鑰和證書保存到kubeflow-aliyun/overlays/ack-auto-clouddisk/tls.key
和kubeflow-aliyun/overlays/ack-auto-clouddisk/tls.crt
下
3.2 配置 admin 的登陸密碼api
yum install -y httpd-tools htpasswd -c kubeflow-aliyun/overlays/ack-auto-clouddisk/auth admin New password: Re-type new password: Adding password for user admin
cd kubeflow-aliyun/ kustomize build overlays/ack-auto-clouddisk > /tmp/ack-auto-clouddisk.yaml
cn-hangzhou-g
, 能夠執行下列命令sed -i.bak 's/regionid: cn-beijing/regionid: cn-hangzhou/g' \ /tmp/ack-auto-clouddisk.yaml sed -i.bak 's/zoneid: cn-beijing-e/zoneid: cn-hangzhou-g/g' \ /tmp/ack-auto-clouddisk.yaml
建議您檢查一下 /tmp/ack-auto-clouddisk.yaml 修改是否已經設置
gcr.io
替換爲 registry.aliyuncs.com
sed -i.bak 's/gcr.io/registry.aliyuncs.com/g' \ /tmp/ack-auto-clouddisk.yaml
建議您檢查一下 /tmp/ack-auto-clouddisk.yaml 修改是否已經設置
sed -i.bak 's/storage: 100Gi/storage: 200Gi/g' \ /tmp/ack-auto-clouddisk.yaml
kubectl create --validate=true --dry-run=true -f /tmp/ack-auto-clouddisk.yaml
kubectl create -f /tmp/ack-auto-clouddisk.yaml
kubectl get ing -n kubeflow NAME HOSTS ADDRESS PORTS AGE ml-pipeline-ui * 112.124.193.271 80, 443 11m
若是使用自簽發證書,會提示此連接非私人連接,請點擊顯示詳細信息, 並點擊訪問此網站。
請輸入步驟 2.2 中的用戶名 admin 和設定的密碼。
這時就可使用 pipelines 管理和運行訓練任務了。
這是因爲阿里雲的 SSD 雲盤能夠設置按期的自動備份,保證 pipelines 中的元數據不會丟失。
若是您想備份雲盤的內容,能夠爲雲盤 手動建立快照 或者 爲硬盤設置自動快照策略 按時自動建立快照。
這裏的清理工做分爲兩個部分:
kubectl delete -f /tmp/ack-auto-clouddisk.yaml
請參考文檔
本文爲您初步介紹了 Kubeflow Pipelines 的背景和其所要解決的問題,以及如何在阿里雲上經過 Kustomize 快速構建一套服務於機器學習的 Kubeflow Pipelines, 後續咱們會分享如何利用 Kubeflow Pipelines 開發一個完整的機器學習流程。