如何快速在阿里云上构建自己的机器学习应用
摘要:在2017云栖大会深圳峰会开源专场上,阿里云容器服务技术专家车漾做了题为《在阿里云上构建机器学习应用》的精彩演讲,车漾首先从2016年深度学习最火的两个应用AlphaGo与Prisma谈起,从宏观层面分享了机器学习以及深度学习所做的事情,并就Prisma的发展故事谈起,为大家介绍了应该学会以工程思想思考和解决问题,并着重介绍了阿里云基于容器服务的机器学习解决方案架构设计以及如何借助阿里云快速搭建自己的机器学习应用,精彩不容错过。以下内容根据嘉宾演讲视频以及PPT整理而成。
在2016年有两个深度学习应用使得深度学习这个概念走入了平常百姓家,大家开始意识到深度学习技术好像和我们的生活开始产生联系了。第一件事情就是AlphaGo战胜了围棋世界的高手李世石,它向我们证明了一件事情:计算机不但具有强大的运算能力,它甚至开始学会学习了,更可怕的是计算机的学习能力是一种纵向深入的学习能力,也就是随着计算机看到的数据越来越多,随着时间的不断往前发展,计算机有可能成为某个领域的专家,在围棋中是这样,在其他的领域,比如医学等领域也都会有同样的影响。可以说,AlphaGo是第一个使我们真正意识到机器学习具有一种自我演进能力的应用。



这个厉害的深度学习算法实际上并不是Prisma这个公司的创始人发明的,而是在2015年,也就是Prisma大火的前一年,三个德国的数据科学家发明了这个算法并且利用这个算法创办了自己的创业公司叫做DeepArt,它所能做的事情就是提供一个网站让用户将自己的图片上传上去并选择一个风格,经过3到5个小时的计算产生处一个有自己图片内容的大师风格的作品。这个网站上线之后效果还算不错,有一些人愿意花100多欧元去得到这样一幅作品,但是并没有大火。














当程序开发结束之后,开始进行训练。这时就需要指定训练输入的数据集,以及预处理的模型,这里的框架有多种选择,还可以指定预定义的框架,这里面还可以选择是不是支持GPU,然后还有指定数据需要写入到哪个数据件里面以及数据来源是什么,还需要指定总共训练的次数以及需要保存的地点是在什么位置,都是需要一些规约来定义这些事情的。
整个方案的最大特点就是速度会非常快,就是可以快速地在这套解决方案上搭建出来自己的机器学习小应用。这里面做的事情首先会从GitHub上将应用下载下来,然后这里面的规约就会自动安装自定义的Python依赖,之后就开始调用GPU资源并启动,开始构建网络,之后真正开始进行训练。当将Checkpoint指定到一个更好的位置的时候就会将云的产生数据存放到分布式存储上。当拥有这些数据之后就可以进行预测,预测的具体内容包括把之前计算过的东西保存下来,之后根据保存的数据和模型提供一个Read API,这里面并没有TensorFlow Serving这个标准框架而是自己实现了使用Python写的框架,并使用Checkpoint方式加载应用。并且如果需要使用负载均衡可以提供更多的实例的数量,并指定加载数据的模型数据卷以及阿里云的弹性的SLB负载均衡服务,就会很快地将服务提进来。当将服务提进来之后还是通过路由列表,通过阿里云提供的负载均衡访问端点进行访问。它所能提供的东西就是在这里上传一个图片,然后根据所指定的不同的风格进行转换就可以得到不同的风格图片,基本上就实现了与Prisma相似的功能。也就是说在现有的开源技术上,就可以在阿里云上构建自己的一个小应用,并且可以提供一站式运维的体验。甚至在阿里云上不仅可以转换图片的风格,现在还可以转化视频的风格。
总结

第二个好处就是优化,与容器服务团队进行合作的还有一个比较有名的就是阿里云的高性能计算团队,像对于阿里妈妈这些的优化都是他们团队做的,他们会提供一些特定场景性能优化的TensorFlow和Caffe的一些镜像,针对一些特定的场景进行性能优化,而不是百分百的优化。另外一件事情就是这套方案在持续集成和持续交付这件事情上是比较有经验的。其实可以将机器学习看做两部分,第一部分可以看做实验科学,需要不断地去尝试,找出最佳的组合来做推演;第二部分其实是交付的科学,如何将模型交付到机器上,如何进行A/B Test,而这件事情又是容器服务团队非常擅长的事情,既可以帮助优化性能,又能够帮助优化流程。
第三件事情就是定制化,阿里云希望能够通过为用户提供更大的灵活性,比如增加自己定义的镜像以及operator等来满足高级用户的需求,并平衡灵活性和自动化之间的关系。
最后更新:2017-05-17 18:31:45