Job机制
Job用来创建1个或多个Pod,并保证指定数量(.spec.completions
)的Pod成功完成。当一个Pod成功完成时(.status.phase=Succeeded
),Job会记录已完成的Pod的数量,但完成的数量达到指定值时,这个Job就完成了。可以通过以下3种方式来判断一个Job是否已完成:
.status.completionTime
是否为空。Job完成时该字段会被设置成Job完成的时间,否则为空.spec.completions
和.status.succeeded
是否相等,即对比期望完成数和已成功数,当二者相等时,表示Job已经完成.status.conditions[0].type
:type为Complete
和Failed
时,分别表示Job执行成功和失败
Pod的中的容器可能因为各种各样的原因失败,比如退出码不为0、超出内存限制被kill掉,容器失败分两种情况:
.spec.template.spec.restartPolicy = "OnFailure"
:容器失败后会不断重启,直到成功(退出码为0).spec.template.spec.restartPolicy = "Never"
:容器不会重启,Pod的状态转为Failed
当Pod执行失败时,Job会不断创建一个新的Pod进行重试,直到失败次数达到.spec.backoffLimit
指定的数值,整个Job的执行失败。可以通过判断.status.failed
和.spec.backoffLimit
是否相等,即已失败数是否已经达到上限,来判断Job是否已经执行失败。如下,当.spec.backoffLimit
设置为3时,.status.failed
已经达到3,Job失败,不会再尝试创建新的Pod:
kubectl get -n demo jobs j-centos-2020-08-01-15-19-55-w -oyaml |grep status -A 10
status:
conditions:
- lastProbeTime: "2020-08-01T07:21:04Z"
lastTransitionTime: "2020-08-01T07:21:04Z"
message: Job has reached the specified backoff limit
reason: BackoffLimitExceeded
status: "True"
type: Failed
failed: 3
startTime: "2020-08-01T07:19:55Z"
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
如果Pod在执行过程中被意外删除(如使用kubectl delete
),Job会重新创建一个新的Pod。
适用场景
Job不是设计用来完成通信密集型的并行程序,如科学计算领域常见的场景。它支持并行地处理一组独立但相关的work item,如发送邮件,渲染帧,转码文件和扫描NoSql数据库中的key
相关配置
.spec.completions
:完成该Job需要执行成功的Pod数.spec.parallelism
:能够同时运行的Pod数.spec.backoffLimit
:允许执行失败的Pod数,默认值是6,0表示不允许Pod执行失败。如果Pod是restartPolicy为Nerver,则失败后会创建新的Pod,如果是OnFailed,则会重启Pod,不管是哪种情况,只要Pod失败一次就计算一次,而不是等整个Pod失败后再计算一个。当失败的次数达到该限制时,整个Job随即结束,所有正在运行中的Pod都会被删除.spec.activeDeadlineSeconds
: Job的超时时间,一旦一个Job运行的时间超出该限制,则Job失败,所有运行中的Pod会被结束并删除。该配置指定的值必须是个正整数。不指定则不会超时
参考资料
https://kubernetes.io/docs/concepts/workloads/controllers/job/
在机器学习与人工智能的领域中,分类是最为基础和重要的任务之一。AI-900认证作为微软的基础级人工智能考试,其中涉及到的分类技术是必不可少的知识点。通过对分类技术的深入了解,您可以不仅为AI-900认证考试做好充分准备,还能在实际应用中运用这些技术解决复杂问题。本篇文章将为您全面解析机器学习中的分类算法,包括算法的工作原理、应用场景、性能评估以及优化策略。
1. 分类技术概述
1.1 什么是分类?
分类是机器学习中的一种监督学习任务,它将输入数据映射到一个有限的类别集合。具体来说,分类任务的目标是预测一个数据点属于哪一个类别或类。该方法通过已标记的数据集来训练模型,模型根据这些训练数据学会区分不同类别的数据,从而实现对新数据的预测。分类任务一般分为二分类和多分类两大类。
- 二分类问题:任务是将数据分为两个类别。例如,判断一封邮件是“垃圾邮件”还是“正常邮件”。
- 多分类问题:任务是将数据分为三个或更多类别。例如,根据给定的特征预测一张图片属于“猫”
评论记录:
回复评论: