近年來幾乎每間公司都在談 AI,從自然語言處理 (NLP)、電腦視覺,到推薦系統,機器學習 (ML) 已經滲透到各種領域。然而,很多團隊在實務中都會遇到相似的問題:
這些問題,正是 MLOps (Machine Learning Operations) 想解決的。就像 DevOps 幫助軟體工程團隊把「開發」和「運維」的鴻溝縮小,MLOps 則是把「機器學習」和「工程落地」結合起來。而 Kubeflow,就是目前最知名的 開源 MLOps 平台。
Kubeflow 是一個建構在 Kubernetes 之上的機器學習平台,目標是:
換句話說,Kubeflow 提供了一個「像 Kubernetes 對應應用程式一樣」的角色,只是這次對象是 ML workflow。
由於它是建構在 Kubernetes 上,所以 Kubeflow 的每個元件其實都是一組 Kubernetes Object,例如 Deployment、Service、Custom Resource (CRD)。舉幾個例子:
apiVersion: v1
kind: Pod
metadata:
name: notebook-pod
namespace: kubeflow-user-example
spec:
containers:
- name: notebook
image: jupyter/tensorflow-notebook:latest
resources:
limits:
cpu: "2"
memory: "4Gi"
apiVersion: batch/v1
kind: Job
metadata:
name: pipeline-step-preprocess
namespace: kubeflow
spec:
template:
spec:
containers:
- name: main
image: my-ml-image:latest
command: ["python", "preprocess.py"]
restartPolicy: Never
apiVersion: serving.kserve.io/v1beta1
kind: InferenceService
metadata:
name: my-model
namespace: kubeflow
spec:
predictor:
sklearn:
storageUri: "s3://my-bucket/models/sklearn/iris"
這些 YAML manifest 讓我們更清楚地看到,Kubeflow 並不是「黑盒子」,而是利用 Kubernetes 原生物件去組合出一個 MLOps 平台。
如果把機器學習流程比喻成一條生產線,從資料收集 → 特徵工程 → 模型訓練 → 驗證 → 部署 → 監控,每個階段都可能有不同工具、不同負責人。Kubeflow 嘗試把這些環節統一到同一個平台上:
統一平台
不需要再分散使用 Jupyter Notebook、獨立的腳本和雲端部署服務,Kubeflow 提供了完整解決方案。
支援多種框架
TensorFlow、PyTorch、MXNet 等常見框架,都能整合在 Kubeflow 裡。
自動化 pipeline
訓練流程不再是「人工跑一堆 Python 腳本」,而是可以用 pipeline 描述、版本化、重複執行。
模型服務化 (Model Serving)
訓練好的模型可以透過 KFServing(後來更名為 KServe)快速部署成 REST/gRPC API。
傳統上,機器學習流程常常是:
這中間會出現大量溝通成本與落地障礙。而 Kubeflow 的想法是:直接在 Kubernetes 裡做端到端的 ML lifecycle,讓不同角色的人(DS/ML/DevOps)在同一個平台協作。
這篇文章先幫大家釐清一個概念:
下一篇,我會介紹 Kubeflow 的核心元件,以及一個典型的使用方式,幫助大家更具體想像它在團隊裡的角色。
參考資料: