XGBoost 训练 (XGBoostJob)
使用 XGBoostJob 训练 XGBoost 模型
旧版本
此页面介绍的是 Kubeflow Training Operator V1,有关最新信息请查看 Kubeflow Trainer V2 文档。
此页面描述了用于使用 XGBoost 训练机器学习模型的 XGBoostJob
。
XGBoostJob
是一个 Kubernetes 自定义资源,用于在 Kubernetes 上运行 XGBoost 训练 Job。Kubeflow 对 XGBoostJob
的实现在 training-operator
中。
注意:由于 Istio 自动 sidecar 注入,XGBoostJob
默认无法在用户命名空间中工作。为了使其运行,需要在 PyTorchJob
pod 或命名空间中添加注解 sidecar.istio.io/inject: "false"
来禁用它。有关如何将此注解添加到您的 yaml
文件的示例,请参阅XGBoostJob
文档。
创建 XGBoost 训练 Job
您可以通过定义 XGBoostJob
配置文件来创建训练 Job。请参阅IRIS 示例 的清单。您可以根据您的要求修改配置文件。例如:在 Spec 中将 CleanPodPolicy
设置为 None
,以在 Job 终止后保留 pod。
cat xgboostjob.yaml
部署 XGBoostJob
资源以开始训练
kubectl create -f xgboostjob.yaml
现在您应该能够看到已创建的 pod,其数量与指定的副本数匹配。
kubectl get pods -l job-name=xgboost-dist-iris-test-train
在 CPU 集群上训练需要 5-10 分钟。可以通过查看日志来了解训练进度。
PODNAME=$(kubectl get pods -l job-name=xgboost-dist-iris-test-train,replica-type=master,replica-index=0 -o name)
kubectl logs -f ${PODNAME}
监控 XGBoostJob
kubectl get -o yaml xgboostjobs xgboost-dist-iris-test-train
请参阅状态部分以监控 Job 状态。以下是 Job 成功完成时的示例输出。
apiVersion: kubeflow.org/v1
kind: XGBoostJob
metadata:
creationTimestamp: "2021-09-06T18:34:06Z"
generation: 1
name: xgboost-dist-iris-test-train
namespace: default
resourceVersion: "5844304"
selfLink: /apis/kubeflow.org/v1/namespaces/default/xgboostjobs/xgboost-dist-iris-test-train
uid: a1ea6675-3cb5-482b-95dd-68b2c99b8adc
spec:
runPolicy:
cleanPodPolicy: None
xgbReplicaSpecs:
Master:
replicas: 1
restartPolicy: Never
template:
spec:
containers:
- args:
- --job_type=Train
- --xgboost_parameter=objective:multi:softprob,num_class:3
- --n_estimators=10
- --learning_rate=0.1
- --model_path=/tmp/xgboost-model
- --model_storage_type=local
image: docker.io/merlintang/xgboost-dist-iris:1.1
imagePullPolicy: Always
name: xgboost
ports:
- containerPort: 9991
name: xgboostjob-port
protocol: TCP
Worker:
replicas: 2
restartPolicy: ExitCode
template:
spec:
containers:
- args:
- --job_type=Train
- --xgboost_parameter="objective:multi:softprob,num_class:3"
- --n_estimators=10
- --learning_rate=0.1
image: docker.io/merlintang/xgboost-dist-iris:1.1
imagePullPolicy: Always
name: xgboost
ports:
- containerPort: 9991
name: xgboostjob-port
protocol: TCP
status:
completionTime: "2021-09-06T18:34:23Z"
conditions:
- lastTransitionTime: "2021-09-06T18:34:06Z"
lastUpdateTime: "2021-09-06T18:34:06Z"
message: xgboostJob xgboost-dist-iris-test-train is created.
reason: XGBoostJobCreated
status: "True"
type: Created
- lastTransitionTime: "2021-09-06T18:34:06Z"
lastUpdateTime: "2021-09-06T18:34:06Z"
message: XGBoostJob xgboost-dist-iris-test-train is running.
reason: XGBoostJobRunning
status: "False"
type: Running
- lastTransitionTime: "2021-09-06T18:34:23Z"
lastUpdateTime: "2021-09-06T18:34:23Z"
message: XGBoostJob xgboost-dist-iris-test-train is successfully completed.
reason: XGBoostJobSucceeded
status: "True"
type: Succeeded
replicaStatuses:
Master:
succeeded: 1
Worker:
succeeded: 2
最后修改于 2025 年 2 月 15 日:trainer: 在 Training Operator v1 文档中添加弃用警告 (#3997) (8ad90c5)