云计算时代的深度学习训练-演道网

本网站用的阿里云ECS,推荐大家用。自己搞个学习研究也不错
图2
图 2

图 2 是深度学习平台的架构,底层是前面介绍的各个文件系统,在这个上面做了一层 Caching IO ,即分布式内存服务器,计算时所需要的数据都是通过它来做提取,大家可以参考一个开源项目 – AlluxIO ,七牛的设计跟它有一些近似。在 IO 之上抽象为 Docker,来计算任务和资源分配以及调度。在这个基础之上,编排系统也是参考了开源的项目。七牛做这个项目的时间其实比较早,大概一年两年前就做了,主要是担心开源项目任性说不干就不干了,所以自己写了一套东西。

有这么一套编排系统以后,可以很方便地构建一个分布式的系统,它的核心是一个参数服务器,这里推荐一个基于 Caffe 的分布式框架 Poseidon,它针对深度学习任务优化了计算集群内部的通信,在降低通信量的同时保证很好的迭代性。有了分布式的系统和编排系统之后,把上面的作业抽象为一个一个的独立镜像,比如数据清理,有五种数据清理的方法就做五个镜像。数据放大也类似,包括训练和推理,都会做出相应基本的镜像去调用。在这个基础上会把作业全都抽象为一个图的形式表达,以及用数据流的方式去表达整个作业的过程。

这些抽象完了以后,就是上面一个一个的应用,可以看到有迭代学习的需求,有增量学习的一些任务或者半监督的任务,包括模型怎么比较、怎么融合,都是跑在整个系统的 App。这个 App 通过底层这一套基于图和流式的系统来支撑。最后模型训练完了,会有一个 API 的管理系统,这个管理系统可以提供自动的 API 生成,提供自动的评估以及恢复的升级这些功能。例如训练完一个模型后,但不知道这个模型实际效果如何,这时可以选择一个恢复升级的方式,先升级 10%,再自动验证效果,如果好再升级 30%,可以把这个过程全部编排在 API 里。所有数据到达数据库存里,这就是整个深度学习系统。七牛用电影“机械姬”的女主角之名 Ava 来命名它,希望它能像 Ava 一样冰雪聪明。

下面稍微介绍一下上面跑的几个 App,流式的计算用法,例如一个镜像是一个基本的操作单元,还有一个是 eval 评估服务,只需要把数据流画出一张图,把地址指定,得到结果的集合,这是一个能够极大降低算法人员的工作成本的服务,使算法工程师能更专注算法本身。

图3

图 3 

图 3 是迭代和增量训练的系统,也是基于刚才那一套训练平台开发的 App。为了解决不断有新数据的流式训练的任务,传统的方法需要先建立一个数据文件,现在把这个过程放到一个独立的进程来做。没有新数据来的时候就会把这个数据编排到整个数据池的底部,在训练的时候可能会用一些 Cheet,会用同个模型,因为不知道是哪个,甚至训练到一半发现不对劲,但是又不想把当前的训练停下来,随时可以开启一个新的训练,用当前这个模型改一个参数让它跑,前面的训练以一个副本的形式在跑,最后达到做模型融合或者模型比较的方法。最后在模型融合或者模型比较完成以后,把模型推到一个 API 生成器上自动生成 API 。整套过程下来,可以减少总是重复训练同一批数据的环节。

图4

图 4 

这个也是七牛做得比较有意思的实验,半监督的方式打标,怎么做?来了数据先保证数据打过标,不过还是会有没打过标的,尤其流式进来的数据,这个数据量很大,打标也很痛苦,七牛用一些训练好的分类器对未打标的数据做分类,同时做一个聚类,未打过标的数据中跟打过标的数据聚类最接近的一些数据,以及标签是一致的数据,用打过标的训练新的模型,这个过程需要迭代,一开始没有打过标的用了 20%,下次迭代一次以后又会加 10%,迭代几轮以后可以很大程度降低一个打标的工作,最后用这样的方式训练新的模型。

图5

图 5 

图 5 是模型融合的方法,列举了三种方法,七牛都在做一些尝试。最简单的是线性的融合方式,比较复杂的是中间有一个网络做融合,第三个比较传统,把融合放在前面一层。用的最多是线性的融合方法,节省资源,也不太伤脑筋。

总结

AI  需要三方面的结合:平台、算法和数据。只有这三点能非常好地结合到一起,才能产生经济效益。

转载自演道,想查看更及时的互联网产品技术热点文章请点击http://go2live.cn

未经允许不得转载:演道网 » 云计算时代的深度学习训练-演道网

赞 (0)
分享到:更多 ()
已有 0 条评论