一個不小心在鐵人賽最後兩篇又開闢了一個新的主題 而且好像不來個五六篇寫不完哈哈
總之第一次參加鐵人賽 單純自我挑戰 把最近學的用的還有遇到的問題都記錄下來 希望有緣路過有看到的讀者有得到點什麼
kubeflow寫完之後 還是會時不時分享一些東西 沒有意外的話應該會都是devops相關的 有興趣的歡迎追蹤~
在上一篇文章,我們聊到為什麼機器學習需要一個像 Kubeflow 這樣的平台,以及它的核心價值:Portable、Scalable、Composable。這一篇,我們要更深入看看 Kubeflow 的「組成零件」,還有它的典型用法。
Kubeflow 並不是單一服務,而是一組模組化的元件。常見的有:
Kubeflow Pipelines (KFP)
Kubeflow Notebooks
apiVersion: v1
kind: Service
metadata:
name: notebook-svc
spec:
selector:
app: notebook
ports:
- port: 80
targetPort: 8888
apiVersion: serving.kserve.io/v1beta1
kind: InferenceService
metadata:
name: mnist-model
spec:
predictor:
tensorflow:
storageUri: gs://models/mnist
apiVersion: kubeflow.org/v1beta1
kind: Experiment
metadata:
name: random-example
spec:
objective:
type: maximize
goal: 0.99
objectiveMetricName: accuracy
algorithm:
algorithmName: random
apiVersion: kubeflow.org/v1
kind: PyTorchJob
metadata:
name: pytorch-job
spec:
pytorchReplicaSpecs:
Master:
replicas: 1
template:
spec:
containers:
- name: pytorch
image: pytorch/pytorch:1.10.0
Worker:
replicas: 2
template:
spec:
containers:
- name: pytorch
image: pytorch/pytorch:1.10.0
我們來想像一個真實場景:
這樣一來,從研究到部署,團隊都在同一平台上協作,不再需要額外橋接環境。
Kubeflow 選擇 Kubernetes 作為基礎,有幾個關鍵理由:
Kubeflow 常見的應用場景包括:
如果說 Kubernetes 解決了「應用程式部署與運維」的問題,那麼 Kubeflow 就是解決「機器學習專案從實驗到生產」的問題。
它的核心價值在於:統一平台 + 模組化設計 + 建立在 Kubernetes 生態系之上。
而這些價值其實具體落在一個個 Kubernetes Object (Pod、Service、Job、CRD) 上,這讓我們能透過 YAML manifest 更直觀理解 Kubeflow。
接下來的文章,我會進一步分享 Kubeflow 的安裝與基本操作,帶大家從實務出發,一步一步上手。
參考資料: