Kubeflow基于 Kubernetes 的機(jī)器學(xué)習(xí)工具庫
Kubeflow 是谷歌發(fā)布的一個(gè)機(jī)器學(xué)習(xí)工具庫,Kubeflow 項(xiàng)目旨在使 Kubernetes 上的機(jī)器學(xué)習(xí)變的輕松、便捷、可擴(kuò)展,其目標(biāo)不是重建其他服務(wù),而是提供一種簡便的方式找到最好的 OSS 解決方案。該庫包含包含的清單用于創(chuàng)建:
用于創(chuàng)建和管理交互式 Jupyter notebook 的 JupyterHub
可配置為使用 CPU 或 GPU,并通過單一設(shè)置調(diào)整至單個(gè)集群大小的 TensorFlow 訓(xùn)練控制器(Tensorflow Training Controller)
TF 服務(wù)容器(TF Serving container)
該文檔詳述在可運(yùn)行 Kubernetes 的任何環(huán)境中運(yùn)行 kubeflow 項(xiàng)目的步驟。
Kubeflow 目標(biāo)
其目標(biāo)是通過發(fā)揮 Kubernetes 的特長,從而更便捷地運(yùn)用機(jī)器學(xué)習(xí):
在不同的基礎(chǔ)設(shè)施上實(shí)現(xiàn)簡單、可重復(fù)的便攜式部署(筆記本<-> ML 裝備 <-> 訓(xùn)練集群 <-> 生產(chǎn)集群)
部署和管理松散耦合的微服務(wù)
根據(jù)需求進(jìn)行擴(kuò)展
由于機(jī)器學(xué)習(xí)從業(yè)者可供使用的工具非常多,所以核心目標(biāo)是你可以根據(jù)需求自定義堆棧,并讓系統(tǒng)處理無賴的東西」。雖然我們已開始使用少許技術(shù),但我們正在與很多不同項(xiàng)目展開合作,以涵蓋更多額外的工具。最終,我們希望給出一組簡單的清單,只要在 Kubernetes 已運(yùn)行的地方便能輕松使用 ML 堆棧,并可根據(jù)部署的集群實(shí)現(xiàn)自我配置。
設(shè)置
該文檔假設(shè)你已經(jīng)有一個(gè)可用的 Kubernetes 集群。對(duì)于具體的 Kubernetes 安裝,可能需要額外的配置。
Minikube
Minikube 是一個(gè)讓我們?cè)诒镜剡\(yùn)行 Kubernetes 更方便的工具。Minikube 會(huì)在筆記本的虛擬環(huán)境中運(yùn)行一個(gè)單結(jié)點(diǎn) Kubernetes 集群,從而令用戶可以在該環(huán)境中試驗(yàn)它或執(zhí)行日常的開發(fā)工作。下面的步驟適用于 Minikube 集群,本文檔當(dāng)前使用的是最新版 0.23.0,我們必須配置 Kubectl 才能訪問 Minikube。
谷歌 Kubernetes 引擎
谷歌 Kubernetes 引擎是一個(gè)可用于部署容器化應(yīng)用的托管環(huán)境。它融合了提高開發(fā)生產(chǎn)力、有效利用資源、自動(dòng)化運(yùn)維和開源靈活性方面的最新創(chuàng)新技術(shù),能夠加快模型進(jìn)入市場以及迭代的時(shí)間。
谷歌在容器中運(yùn)行生產(chǎn)工作負(fù)載的經(jīng)驗(yàn)已超過 15 年,他們將在此期間學(xué)到的經(jīng)驗(yàn)知識(shí)融入到了 Kubernetes 中。因此,Kubernetes 是行業(yè)領(lǐng)先的開源容器協(xié)調(diào)系統(tǒng),為 Kubernetes Engine 提供技術(shù)支持。
如果讀者正在使用谷歌 Kubernetes 引擎,在創(chuàng)建清單前,我們應(yīng)該先授予自己所要求的 RBAC 角色,因而才能創(chuàng)建或編輯其它 RBAC 角色。
kubectl create clusterrolebinding default-admin --clusterrole=cluster-admin [email protected]
