解锁云原生 AI 技能|在 Kubernetes 上构建机器学习系统
本系列將利用阿里云容器服務,幫助您上手 Kubeflow Pipelines.
介紹
機器學習的工程復雜度,除了來自于常見的軟件開發問題外,還和機器學習數據驅動的特點相關。而這就帶來了其工作流程鏈路更長,數據版本失控,實驗難以跟蹤、結果難以重現,模型迭代成本巨大等一系列問題。為了解決這些機器學習固有的問題,很多企業構建了內部機器學習平臺來管理機器學習生命周期,其中最有名的是 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 之上的。
什么是 Kubeflow Pipelines
Kubeflow Pipelines 平臺包括:
- 能夠運行和追蹤實驗的管理控制臺
- 能夠執行多個機器學習步驟的工作流引擎 (Argo)
- 用來自定義工作流的 SDK,目前只支持 Python
而 Kubeflow Pipelines 的目標在于:
- 端到端的任務編排: 支持編排和組織復雜的機器學習工作流,該工作流可以被直接觸發,定時觸發,也可以由事件觸發,甚至可以實現由數據的變化觸發;
- 簡單的實驗管理: 幫助數據科學家嘗試眾多的想法和框架,以及管理各種試驗。并實現從實驗到生產的輕松過渡;
- 通過組件化方便重用: 通過重用 Pipelines 和組件快速創建端到端解決方案,無需每次從 0 開始的重新構建。
在阿里云上運行 Kubeflow Pipelines
看到 Kubeflow Piplines 的能力,大家是不是都摩拳擦掌,想一睹為快?但是目前國內想使用 Kubeflow Pipeline 有兩個挑戰:
為了方便國內的用戶安裝 Kubeflow Pipelines,阿里云容器服務團隊提供了基于 Kustomize 的 Kubeflow Pipelines 部署方案。和普通的 Kubeflow 基礎服務不同,Kubeflow Pipelines 需要依賴于 mysql 和 minio 這些有狀態服務,也就需要考慮如何持久化和備份數據。在本例子中,我們借助阿里云 SSD 云盤作為數據持久化的方案,分別自動的為 mysql 和 minio 創建 SSD 云盤。
您可以在阿里云上嘗試一下單獨部署最新版本 Kubeflow Pipelines。
前提條件
- 您需要安裝 kustomize
在 Linux 和 Mac OS 環境,可以執行
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
- 在阿里云容器服務創建 Kubernetes 集群, 可以參考 文檔
部署過程
3.1 配置 TLS 證書。如果沒有 TLS 證書,可以通過下列命令生成
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 的登錄密碼
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建議您檢查一下 /tmp/ack-auto-clouddisk.yaml 修改是否已經設置
建議您檢查一下 /tmp/ack-auto-clouddisk.yaml 修改是否已經設置
如果使用自簽發證書,會提示此鏈接非私人鏈接,請點擊顯示詳細信息, 并點擊訪問此網站。
請輸入步驟 2.2 中的用戶名 admin 和設定的密碼。
這時就可以使用 pipelines 管理和運行訓練任務了。
Q&A
這是由于阿里云的 SSD 云盤可以設置定期的自動備份,保證 pipelines 中的元數據不會丟失。
如果您想備份云盤的內容,可以為云盤 手動創建快照 或者 為硬盤設置自動快照策略 按時自動創建快照。
這里的清理工作分為兩個部分:
- 刪除 Kubeflow Pipelines 的組件
- 通過釋放云盤分別釋放 mysql 和 minio 存儲對應的兩個云盤
請參考文檔
總結
本文為您初步介紹了 Kubeflow Pipelines 的背景和其所要解決的問題,以及如何在阿里云上通過 Kustomize 快速構建一套服務于機器學習的 Kubeflow Pipelines, 后續我們會分享如何利用 Kubeflow Pipelines 開發一個完整的機器學習流程。
總結
以上是生活随笔為你收集整理的解锁云原生 AI 技能|在 Kubernetes 上构建机器学习系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云原生生态周报 Vol. 11 | K8
- 下一篇: Kubernetes 弹性伸缩全场景解读