资源优化方案和效果
背景
之前机器学习平台可用机器数量为324台,其中CPU机器289台,GPU机器35台。但由于一台机器上只能部署一个训练实例,导致集群整体资源利用率很低,约为50%。且由于机器被划分成多个Mesos集群,导致管理和维护成本较高,资源不能实现灵活调度。
目标
提升资源利用率到80%以上。
方案
集群合并
合并前合并前集群划分情况:
- wangjing集群48台
- sandbox集群51台
- wangjing集群143台
- merge集群24台
- test集群15台
- cpu集群8台
- gpu集群35台
其中merge集群用于运行merge应用,test和cpu用于测试,由于merge和测试应用一般只是临时短期运行,这三个集群长期处于空闲状态。且由于wangjing、sandbox等集群长期处于满负荷状态,导致测试时经常无空闲机器可用。
每增加一个集群,维护成本至少增加一倍,给我们带来了很大的负担。
效果
- 集群合并后,维护成本降低20%,节省机器数量5台。
资源分组
由于之前采用了物理隔离方式,机器被划分到7个集群,如果想要在各组直接调配资源,成本非常高。集群合并后,通过在应用层实现资源分组,实现了灵活的资源隔离和调配。
资源分组效果
- 实现了灵活的资源隔离和调配,维护成本降低5%。
Merge调度
由于Merge采用各自启停管理的方式,经常出现资源死锁问题,导致问题频繁发生。如果将Merge的启停调度全部交由Alpha管理,可从根本上解决死锁问题,且保证full模型的正常有序生成。
由于Merge应用运行在独立的merge集群,merge集群包含24台机器。如果能保证正常调度,只需15台机器即可,且由于Merge是间歇性运行,空闲时间可以用于Alpha功能测试。
Merge调度效果
- 上线后,Merge连续两月调度正常,未出现问题。相对之前,每周节约3小时维护工时,共节省机器14台。
单机多实验
之前每个训练实例都独占一台机器(机器配置:内存128G,磁盘500G,CPU 32~40core),而很多训练实际资源利用率不足40%(广告不足10%),如果能在一台机器上运行多个训练实例,将有效提升资源利用率。
单机多实验效果
广告节省机器6台,benchmark节省机器5台,主流量节省机器10台,共计节省21台。
调整训练CPU配额
之前训练启动时配置所需CPU为30,modeldump所需CPU为2,而集群中很多机器CPU核心数为32,这就导致如果某台机器上启动了超过一个modeldump,这台机器就无法启动训练。如果将训练CPU调整为25,将大幅降低这种情况出现的概率,且并不会影响训练和modeldump的正常运行。
调整训练CPU配额效果
- 节省3~5台机器。
优化Marathon调度算法
调研中。。。