共計 3486 個字符,預計需要花費 9 分鐘才能閱讀完成。
這篇文章主要介紹“如何在 Kubernetes 上構建機器學習系統”的相關知識,丸趣 TV 小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“如何在 Kubernetes 上構建機器學習系統”文章能幫助大家解決問題。
什么是 Kubeflow Pipelines
Kubeflow Pipelines 平臺包括:
能夠運行和追蹤實驗的管理控制臺
能夠執行多個機器學習步驟的工作流引擎(Argo)
用來自定義工作流的 SDK,目前只支持 Python
而 Kubeflow Pipelines 的目標在于:
端到端的任務編排: 支持編排和組織復雜的機器學習工作流,該工作流可以被直接觸發,定時觸發,也可以由事件觸發,甚至可以實現由數據的變化觸發;
簡單的實驗管理: 幫助數據科學家嘗試眾多的想法和框架,以及管理各種試驗。并實現從實驗到生產的輕松過渡;
通過組件化方便重用: 通過重用 Pipelines 和組件快速創建端到端解決方案,無需每次從 0 開始的重新構建。
在阿里云上運行 Kubeflow Pipelines
看到 Kubeflow Piplines 的能力,大家是不是都摩拳擦掌,想一睹為快?但是目前國內想使用 Kubeflow Pipeline 有兩個挑戰:
Pipelines 需要通過 Kubeflow 部署;而 Kubeflow 默認組件過多,同時通過 Ksonnet 部署 Kubeflow 也是很復雜的事情;
Pipelines 本身和谷歌云平臺有深度耦合,無法運行在其他云平臺上或者裸金屬服務器的環境。
為了方便國內的用戶安裝 Kubeflow Pipelines,阿里云容器服務團隊提供了基于 Kustomize 的 Kubeflow Pipelines 部署方案。和普通的 Kubeflow 基礎服務不同,Kubeflow Pipelines 需要依賴于 mysql 和 minio 這些有狀態服務,也就需要考慮如何持久化和備份數據。在本例子中,我們借助阿里云 SSD 云盤作為數據持久化的方案,分別自動的為 mysql 和 minio 創建 SSD 云盤。br / 您可以在阿里云上嘗試一下單獨部署最新版本 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 集群, 可以參考 文檔
部署過程
通過 ssh 訪問 Kubernetes 集群,具體方式可以參考文檔
下載源代碼
yum install -y git
git clone --recursive https://github.com/aliyunContainerService/kubeflow-aliyun
安全配置
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
首先利用 kustomize 生成部署 yaml
cd kubeflow-aliyun/
kustomize build overlays/ack-auto-clouddisk /tmp/ack-auto-clouddisk.yaml
查看所在的 Kubernetes 集群節點所在的地域和可用區, 并且根據其所在節點替換可用區,假設您的集群所在可用區為 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 修改是否已經設置
調整使用磁盤空間大小, 比如需要調整磁盤空間為 200G
sed -i.bak s/storage: 100Gi/storage: 200Gi/g \
/tmp/ack-auto-clouddisk.yaml
驗證 pipelines 的 yaml 文件
kubectl create --validate=true --dry-run=true -f /tmp/ack-auto-clouddisk.yaml
利用 kubectl 部署 pipelines
kubectl create -f /tmp/ack-auto-clouddisk.yaml
查看訪問 pipelines 的方式,我們通過 ingress 暴露 pipelines 服務,在本例子中,訪問 IP 是 112.124.193.271。而 Pipelines 管理控制臺的鏈接是: https://112.124.193.271/pipeline/
kubectl get ing -n kubeflow
NAME HOSTS ADDRESS PORTS AGE
ml-pipeline-ui * 112.124.193.271 80, 443 11m
訪問 pipelines 管理控制臺
如果使用自簽發證書,會提示此鏈接非私人鏈接,請點擊顯示詳細信息,并點擊訪問此網站。請輸入步驟 2.2 中的用戶名 admin 和設定的密碼。
這時就可以使用 pipelines 管理和運行訓練任務了。
Q A
為什么這里要使用阿里云的 SSD 云盤?
這是由于阿里云的 SSD 云盤可以設置定期的自動備份,保證 pipelines 中的元數據不會丟失。
如何進行云盤備份?
如果您想備份云盤的內容,可以為云盤 手動創建快照 或者 為硬盤設置自動快照策略 按時自動創建快照。
如何清理 Kubeflow Piplines 部署?
這里的清理工作分為兩個部分:
刪除 Kubeflow Pipelines 的組件
kubectl delete -f /tmp/ack-auto-clouddisk.yaml
通過釋放云盤分別釋放 mysql 和 minio 存儲對應的兩個云盤
關于“如何在 Kubernetes 上構建機器學習系統”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注丸趣 TV 行業資訊頻道,丸趣 TV 小編每天都會為大家更新不同的知識點。