在【AI工程】02-AI工程(AI Engineering)面面觀中,提到Gartner把AI工程化作為未來重要戰略技術趨勢,Gartner認為AI工程主要由DataOps、MLOps和DevOps三部分核心技術組成,其目標是通過跨職能協作、自動化、快速反饋等方法,來縮短數據分析、機器學習和應用部署上線的周期,從而讓AI模型快速、持續地提供業務價值。開發者基于傳統的工具平臺很難實現MLOps等AI工程領域的實踐,需要新的工具來完成對MLOps等技術實踐的支持。
Kubeflow是一個基于K8S的機器學習平臺,為開發者提供了從實驗(Notebook)、訓練(MLOps流水線)、調優以及部署、監控的端到端能力,也是當前排名第一的開源MlOps工具。
Kubeflow本身也是由一系列的開源工具組成,從它的架構圖中不難看出,Kubeflow主要提供三部分能力:
ML工具:主流開源框架支持,如Tensorflow,PyTorch等。
Kubeflow應用及腳手架工具:
(1). jupyter Notebook:開箱即用的Notebook,支持多AI框架。
(2). 分布式訓練:支持Tensorflow、PyTorch等多框架的分布式訓練(參數服務器形式)。
(3). 流水線管理:基于Argo的工作流管理,提供訓練流水線管理能力。
(4). 鏡像構建:將訓練、notebook代碼打包,以支持訓練及部署任務。
(5). Serving部署:支持多AI框架的部署。
3.周邊配套:支持三方部署、監控等能力。
Canonical公司(Ubuntude發行商)在Kubeflow的基礎上,包裝了Charmed Kubeflow項目,提供構成KubeFlow最新版本的30多個應用程序和服務,并且讓Kubeflow的部署更快,更簡單。
在最新的1.6版本中,Charmed Kubeflow的Notebook原生支持了MindSpore,下面我們來看下如何基于Charmed Kubeflow 快速啟動支持MindSpore的Notebook。
安裝Charmed Kubeflow
要安裝Kubeflow,首先得準備好K8S集群,然后通過juju這個運維管理工具安裝Charmed Kubeflow。
通過MicroK8S工具部署K8S集群
Canonical提供了一個和Minikube類似的工具MicroK8S,通過Snap工具可以快速完成其安裝。
在Ubuntu 20.04系統上執行如下命令:
sudo snap install microk8s --classic --channel=1.22/stable
安裝完成后,為了方便使用,可以將當前的用戶加入到microk8s的用戶組中。
sudo usermod -a -G microk8s $USER newgrp microk8s
確認用戶可以訪問kubectl的配置文件。
sudo chown -f -R $USER ~/.kube
MicroK8s在安裝的時候就會啟動,為了運行kubeflow,我們還需要一些額外的能力,比如DNS(服務發現)、存儲、ingress(負載均衡),MicroK8S可以以插件的形式快速的添加這些能力
microk8s enable dns storage ingress metallb:10.64.140.43-10.64.140.49
整個安裝需要花費一點時間,通過microk8s status --wait-ready可以確認MicroK8S是否安裝成功。
microk8s is running high-availability: no datastore master nodes: 127.0.0.1:19001 datastore standby nodes: none ……
MicroK8S提供了kubectl命令,但是每次都需要在命令行輸入microk8s kubectl,可以考慮增加一個別名alias kubectl='microk8s kubectl'方便使用,其次,如果集群的配置信息沒有寫到~/.kube/中,可以通過microk8s config > ~/.kube/config完成覆寫。
通過juju安裝Charmed Kubeflow
Charmed Operator Lifecycle Manager (OLM)是一個應用(以特殊格式封裝,稱為Charm Operator)編排的平臺,它可以方便的管理混合云中部署在虛機、K8S集群、裸機上的應用,對應用進行安裝、配置、維護及更新。Canonical提供了這樣的OLM框架,名為Juju,同時也提供了juju這個同名的命令行工具。
首先,我們使用sudo snap install juju --classic命令安裝juju。其次,通過juju bootstrap microk8s在MicroK8S部署好的集群上安裝juju的controller,作為juju在集群中的代理,管理Kubeflow應用。最后為juju在集群上添加kubeflow的命名空間juju add-model kubeflow。
接下來,通過juju deploy kubeflow-lite --trust命令即可完成kubeflow的安裝,通過watch -c juju status --color可以看到kubeflow組件準備狀態。
最后,通過juju refresh jupyter-ui --channel=latest/edge命令確保jupyter-ui更新到最新的版本,包含MindSpore的Notebook鏡像。
配置kubeflow
Kubeflow安裝完成后需要做下簡單的配置才能訪問。首先配置訪問的地址:
juju config dex-auth public-url=http://10.64.140.43.nip.io juju config oidc-gatekeeper public-url=http://10.64.140.43.nip.io
然后配置訪問的用戶名和密碼:
juju config dex-auth static-username=admin juju config dex-auth static-password=ucantseeme
接下來在瀏覽器中輸入http://10.64.140.43.nip.io,以及剛設置的用戶密碼,就可以看到Kubeflow完整的Dashboard了。
運行支持MindSpore的Notebook
在Kubeflow上運行Notebook非常簡單。在Notebook tab選擇創建notebook,輸入notebook名稱MindSpore,鏡像選擇jupyterlab,在列表中使用mindspore/jupyter-mindspore這個鏡像,然后分配合適的CPU和內容資源,點擊創建即可。
在Notebook界面很快就可以看到創建完成的提示。
點擊Connect,我們就可以在另一個瀏覽器tab頁打開notebook了。這里我們可以使用MindSpore官網現成的notebook,通過notebook頁面將這個手寫數字識別的notebook上傳上去。
點擊執行,就可以看到這個notebook直接運行起來了,不用額外的去安裝MindSpore以及Vision套件。
總結
這是MindSpore和Charmed Kubeflow集成的第一步,后續我們還將持續的把MindSpore更多能力集成到Charmed Kubeflow中,方便開發者能在MlOps平臺上更方便的使用MindSpore。
-
AI
+關注
關注
87文章
30887瀏覽量
269065 -
機器學習
+關注
關注
66文章
8418瀏覽量
132628 -
數據分析
+關注
關注
2文章
1449瀏覽量
34057
原文標題:【AI工程】08-MLOps工具-在Charmed Kubeflow上運行MindSpore
文章出處:【微信號:Arm軟件開發者,微信公眾號:Arm軟件開發者】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論