Kubeflow 演進
介紹
Kubeflow是一個開源軟體,致力於提供使用者於Kubernetes上快速便捷的部署與管理ML Workflow。
Kubeflow在2019年11月推出0.7版,除了許多服務相繼邁入Beta外,也同時發佈了新的服務-KFServing
。至此,Kubeflow完整了他的使用情境,讓使用者可以在此平台上完成模型建構、訓練到最後的部署。
我們今天來完整回顧與介紹一下Kubeflow 0.7版的更新。
Kubeflow 0.7 新功能 - KFServing
KFServing在0.7版正式進入alpha,是此次發行最重要的新功能。
KFServing 介紹
KFServing 提供了部署模型(model deployment)
功能,將模型以Serveless方式部署到Kubernetes上面提供Inference服務。同時提供了通用的介面使KFServing相容不同的Framework,例如: Tensorflow、XGBoost與Scikit-learn等。
除了部署模型提供服務外,更進一步提供了Inference服務的自動擴展(autoscaling)、健康狀況監控(health checking)與金絲雀部署(canary rollouts),讓使用者可以一次部署多個版本的模型做測試。
另外 KFServing 允許使用者在模型部署上加入插件提供pre-processing與post-processing能力來處理資料,也提供explainability讓使用者可以解釋模型(詳見),KFServing可以說提供了生產規模等級的Inference服務。
目前此專案由Google, IBM, Microsoft, Selfon與Bloomberg合作開發貢獻與開源,專案位址連結KFServing Github repo。
使用KFServing來部署模型進行服務
在部署完Kubeflow 0.7後,你就可以直接使用KFServing。而方法就是使用他提供的CRD來完成部署,並且只要提供模型的位置即可。
1 | apiVersion: "serving.kubeflow.org/v1alpha2" |
部署1
kubectl apply -f model.yaml
除了Tensorflow外,也提供了許多其他的Framework,可以至這邊參考使用範例: example。之後也會專文詳細介紹。
Kubeflow 更新
除了引進新功能外,另外最重要的就是就功能的更新與維護狀況。
Kubeflow notebook service
更新至v1beta1,且開始提供 Tensorflow 2.0 imgaes。
ML Operators
目前Kubeflow提供Tensorflow, Pytorch, XGBoost與MXNe的operator,來管理分散式訓練任務。目前Tensorflow與Pytorch已經進入V1。而作為tf-operator的參與者,這邊說明一下近期我們會將tf-operator獨立的dashboard移除。
Kubeflow Pipelines
根據Kubeflow官方的使用者統計,Pipeline可以說是目前最歡迎的服務之一。
0.7版的更新除了效能上的優化外,也提供了retry
服務,因此失敗的workflow可以從失敗的地方重新執行,而不用像前幾個版本必須從頭開始執行。而Pipeline最重的關鍵就是不同執行單元之間資料結果的傳遞,
在Kubeflow 0.7也更完善使用者體驗,參考。
另外一個大重點是,如果研究過Pipeline就會知道他其實是進化自Tensorflow Extended(TFX),因此功能上的相容或是同步是一個關注的點。而這次Pipeline開始相容了TFX Pipeline metadata-driven orchestration的功能,使用者可以記錄Pipeline artifacts與執行日誌至Metadata store。另一方面允許cache-based執行,也就是說每一個執行單元的結果將會被暫存以供後續重複使用。
同時,Pipeline也完善了DSL的一些功能,使用者可以透過DSL達到更複雜的執行流程,參考: WithItems、WithParams。自身的DSL外,Kubeflow Pipeline也允許使用者使用Airflow SDK。
Pipeline也藉此提供了大量的參考範例供使用者參考使用方式。
Multiuser使用情境
這部分就是筆者之前分享過的使用Istio完成認證與權限管理上、下,
現在的Kubeflow已經可以達成Multi-user使用情境。
這裡是部署教學
Kubeflow SDK
最後就是Kubeflow也開始開發自己的SDK,未來將提供使用者更彈性使用Kubeflow的方法。
未來展望
未來1月將會發行1.0正式版,未來預計加入的新功能還有Apache Spark operator。
結語
除了AI本身的技術之外,底層的開發平台也是個大公司關注的重點。
在今年年底的KubeCon NA,紛紛曝光。
Lyft分享了內部使用基於Kubeflow開發的Lyft Learn
並開源了另一套AI平台Flyte:
https://github.com/lyft/flyte
BloomBerg分享了他們Model inference的工具並貢獻給Kubeflow成為KFServing:
https://github.com/kubeflow/kfserving
AI平台社群正在逐漸壯大與發展,也是蠻有趣的研究領域。
以AI建構、訓練、部署服務為核心提供了網路、虛擬化等傳統領域一個新發揮的空間。
還請大家期待!
以上文章結合自身觀察並參考自: https://medium.com/kubeflow/kubeflow-v0-7-delivers-beta-functionality-in-the-leadup-to-v1-0-1e63036c07b8
Kubeflow Slack: https://app.slack.com/client/T7QLHSH6U
Kubeflow Forum: https://groups.google.com/forum/#!forum/kubeflow-discuss
本篇同步刊載在 InfuseAI Medium https://medium.com/infuseai