背景
从下面两张图中可以看到,有大量实验资源利用率不足50%(当前为23个,2019.08.21数据,占比约42.5%),这些训练大多都独占一台机器,造成了巨大的资源浪费,致使当前集群资源利用率只有52.5%。
CPU使用率 内存使用率目标
提升资源利用率到70%,节约30台物理机(配置:cpu32C,mem128G,ssd512G,万兆网卡,¥32000/台)。
方案
1.实验等级划分
按照所占用CPU核数对实验划分为6个等级(数值越大,等级越高):
- 0~5核
- 5~9核
- 10~14核
- 15~19核
- 20~24核
- 25核以上
2.等级推荐策略
监控各训练Docker容器负载情况,根据前24小时的数据给出推荐等级。
实验初次启动时,用户可以自行设定实验等级。
3.升级和降级
设定推荐等级为rlevel
升级:用户可以设定实验等级为 <=rlevel+1,如果用户想提升实验等级 >rlevel+1,必须由分组负责人审批,并说明原因。
每次重启实验时,如果设定等级 >rlevel+1,都需要负责人审批。
降级:当前集群中剩余机器不能满足训练等级要求时,用户可以选择主动降低实验等级,并增加实例数量,来启动实验。
下次重启实验时,用户可以恢复实验等级。
4.单独运行Merge
资源使用率从上图可以看到,当训练进行Merge(模型合并)时,资源占用率会明显上升,此时训练出错的风险较高。如果将Merge单独运行,则可以明显降低出错风险,并保证资源占用率的平缓和稳定。所以,需要将所有训练的Merge单独运行和调度。
网友评论