首先这是个没有实现的东西,只是我的一个设想,其次虽然不想浪费今天发送的机会,但是今天有点心情不好,按倩姐的说法就是有点丧,所以就简单的描述下。
这个Idea来源于bvc (百度第一个最高奖,利用空闲的cpu资源来做计算的服务),我们把这个方案搬到GPU上
需要先实现GPU的共享机制(按之前的文章,包括业界方案已经可以实现)
需要有个分布式存储服务用户存储tensorflow的checkpoint文件,用于中断后恢复(也是一大把)
方案:
对于训练服务,我们可以将训练的Pod混布到Serving服务的GPU卡上,这里可能需要实现特殊的调度策略,假设Serving的容器是request 是1个GPU的情况下(但其实资源使用很低),我们需要能把混布的Pod调度过去;
需要用Daemonset之类启动个服务监视混布的Pod占用的资源情况,占用值超过设定的值,就把这个pod踢掉,让调度器重新调度
只对于算子Worker进行以上设计,PS角色还是尽量保证其稳定性(通常PS也不需要GPU),并且worker存日志到分布式存储上,不然重启就没了
结合bvc的实践经验,以及目前普遍的GPU使用情况,闲散资源量足够的情况下,及时是个在线服务,也可以保证足够的稳定性要求,况且我们这里只用于训练,这么一说好像Serving也可以这么玩,前面的负载均衡弄好就行。
用脚本demo示例如下
1 |
|