写在最前:
- 小乙老师简介:AI-GPU-k8s运维开发专家
 - 目前看机会,有机器学习平台岗位或者需求联系我 
mxy1875 -  以下的内容都只是 <小乙老师机器学习平台运维开发课程的一小部分> : 课程在抖音账号<小乙运维杂货铺>中,购买后赠送前后端代码 

 
- 01: 数据准备与管理可以理解为:
为模型训练准备数据,比如自动驾驶中依赖的数据采集标注等等,其中最主要的是触发工作流cpu/gpu数据处理任务 - 02: 模型开发: 其实就是适配主流的训练框架,提供开发机环境
 - 03: 训练与优化: 
这点最核心,是通过平台创建训练任务,到一个具体的k8s集群上运行pod,在gpu节点上进行AI训练 - 04: 模型部署: 
其实就是交付,可以理解为模型二进制如何一键部署到在线集群跑推理任务 - 05: 持续学习: 
就是一些版本管理等后续流程 
- 总的来说需要一个平台:
 - 底层管理多个云,多个线下IDC的算力资源(注意算力不单指GPU还有CPU异构BPU等)
 - 上层给让用户可以申请开发机、提交数据处理、提交多机训练的任务
 
- 这点开发起来大同小异:无非就是场景的几种加上内部特定逻辑:比如gpu资源闲置被kill
 
- Queuing 队列资源排队
- Pending 过了队列排队到所有podready前的状态(这里仍然可能是没资源,没有经过gang调度)
- Succeeded 任务正常结束
- Failed 任务异常退出
- Terminated 任务异常退出
- Completed 任务结束可能是正常或者异常
- Running 正常运行
- killed  被kill组件
- killed-by-user 被用户主动kill
- zero-gpu-kill 因为gpu零利用率被kill解决思路:
- 开发一个纠正组件,在用户提交任务的时候根据历史真实使用值进行调整
什么是历史真实使用值
- 这里有个假定:用户周期性提交的任务资源利用率是相似的
- 我们可以计算作业的真实使用值,并且抽取信息持久化保存下来
cpu和内存资源如何计算:使用 agg_over_time横向聚合
- cpu计算逻辑,85-95 10个分位值的平均值
- 内存计算逻辑, max值 +上浮10% 避免oom
当前提交作业如何跟历史作业关联起来
- 可以根据多种方式
  - 提交人
  - 任务标签
  - 任务名称
- 目前采用任务名称计算: 前缀匹配,找到最相近的那个job需求
1. 一个队列中区分高低优先级任务
2. 不能影响到队列外部
  1. 当队列中没有资源:已经有queuing任务时,默认按照入队时间调度
  2. 高优任务会优先调度
3. 当高优胖任务和低优瘦任务同时存在,且队列资源满足瘦任务:低优瘦任务被调度
优先级不能被滥用!!!
1. 滥用后果,没加优先级任务长期处于饥饿状态- 上述功能只是一小部分
 - 最近看机会 AI-GPU-K8s-机器学习,联系我
 - 有需要完整机器学习平台go+volcano+vue运维开发代码和课程的也可以联系我
 




















