Katib 实验生命周期
Katib 实验生命周期
当用户创建一个实验时,Katib Experiment 控制器、Suggestion 控制器和 Trial 控制器协同工作,为用户的机器学习模型实现超参数调优。实验工作流程如下所示
实验被提交到 Kubernetes API 服务器。Katib Experiment 变异和验证 webhook 会被调用,分别用于为实验设置默认值和验证 CR。
Experiment 控制器创建 Suggestion。
Suggestion 控制器根据新的 Suggestion 创建算法部署和服务。
当 Suggestion 控制器验证算法服务已准备就绪后,它会调用该服务生成
spec.request - len(status.suggestions)
组超参数,并将它们附加到status.suggestions
中。Experiment 控制器发现 Suggestion 已更新,并为每个新的超参数集生成相应的 Trial。
Trial 控制器根据 Trial 中的
runSpec
和新的超参数集生成Worker Job
。相关的 job 控制器(Kubernetes batch Job、Kubeflow TFJob、Tekton Pipeline 等)生成 Kubernetes Pod。
Katib Pod 变异 webhook 会被调用,将指标收集器 sidecar 容器注入到候选 Pod 中。
在 ML 模型容器运行时,指标收集器容器从注入的 pod 中收集指标,并将指标持久化到 Katib DB 后端。
当 ML 模型训练结束时,Trial 控制器会更新对应 Trial 的状态。
当 Trial 结束时,如果需要,Experiment 控制器会增加对应 Suggestion 的
request
字段,然后流程回到step 4
。当然,如果 Trial 满足任一end
条件(超出maxTrialCount
、maxFailedTrialCount
或goal
),Experiment 控制器会结束所有操作。