快速在阿里云上构建机器学习应用

3月28日云栖大会开源专场,阿里云技术专家必嘫给大家带来了“在阿里云上构建机器学习应用”的演讲。本文主要从深度学习应用发展历史开始谈起,进而介绍了如何结合阿里云容器服务的机器学习解决方案快速打造一套深度学习应用的案例。

深度学习应用发展的介绍

深度学习在2016年有两款应用特别火爆,影响到每个普通人的生活。第一个是会下围棋的AlphaGo,它向大家证明了计算机不只有强大的运算能力,同时具备了自学能力,更厉害的是这种学习能力是可以纵向深入的,换句话说,不需要人赋予的逻辑,计算机可以通过大量的数据和不断的训练成为一个领域的专家。

而另一款是萌萌的手机应用:Prisma,这也是一款基于深度学习技术的手机应用,在2016年底,它分别登上了ios和Android手机最佳应用的头名,成为全球潮人的家具旅行必备良品。这款产品的功能直白一点说,就是用户提供自家小区的照片,结合绘画大师的艺术风格,最后产生一款有大师风格的用户照片。用机器学习的语言来描述,这个工作分为两个部分
1. 求解描述大师风格的方程f,这是整个过程中最消耗时间的事情,大概占据了整个消耗时间的99%
2. 当风格方程f的参数确定后,将x代入方程f

这套风格转换的深度学习算法并不是Prisma首创的,实际上在2015年,就有三个来自德国的研究员发明了这套算法,并发表了论文。同时他们也创办了一家叫Deep Art的公司。用户在 Deep Art 网页上上传自己的照片,然后通过 Deep Art 提供的 “机器人梵高” 进行新画创作。整个过程需要等待几个小时让计算机进行数据运算和处理。用户可以选择清晰程度不等的作品。用户可以花上 19 欧买一张适合明信片用的作品,或者多掏 100 欧,买一张大尺寸油画级别的。他们的生意不错但是并没有大火。

其中的原因有两个:

  1. 等待一副图片的产生需要几个小时的用户体验不佳,要知道用户是没有耐心等待的
  2. 它没有提供手机App,导致用户覆盖率不够高。

而这时一个聪明的俄罗斯程序员阿列克谢 · 莫伊谢延科夫(Alexei Moiseyenkov)意识到了这个聚宝盆并没有真正开启,他要做一款速度超快的手机应用。能实现相同的功能。经过两个月的研究,他发现慢的原因在于,原始的风格迁移过程中,每生成一张图片,都相当于要训练一次模型,这中间可能会迭代几百几千次。如果了解过一点机器学习的知识,就会知道,从头训练一个模型要比执行一个已经训练好的模型要费时太多。而这也正是原始的风格迁移速度缓慢的原因。他解决了这个技术问题后,同时开发出了手机应用。Prisma 在面世仅仅一周后,就收到了俄罗斯网络公司 http://Mail.Ru 的价值200万美元的投资。

分享这个故事的想告诉大家的是如何把AI的技术转化成相关的产品,实现数据,技术和场景的联动,才是真正的价值,也是真正的挑战。下面会给大家演示如何在阿里云上快速搭建这款价值千万美金的深度学习应用。

在阿里云上构建类似Prisma的深度学习应用

要构建深度学习应用,选择一款深度学习工具是必不可少的步骤。TensorFlow是谷歌于2015年11月9日正式开源的计算框架。TensorFlow计算框架可以很好地支持深度学习的各种算法,但它的应用也不限于深度学习。这里我们选择TensorFlow作为数值计算库,而使用的代码在github上:fast-style-transfer)

接下来,要梳理一下机器学习的工作流程,它分为数据准备,训练程序开发,训练任务执行和在线预测服务四个部分,在每个阶段都有相应的工作。

针对于这个流程,容器服务团队提供了云上机器学习解决方案。这个方案以容器服务为核心,贯穿了前面提到的机器学习生命周期,并且无缝的整合了阿里云的计算,存储,负载均衡等服务。它的好处在于利用了容器技术,但是并不需要用户深入了解容器技术。

具体操作步骤

1. 准备数据

通过osscmd和图形用户界面上传数据,当数据非常巨大时,可以考虑利用oss提供的解决方案。

2. 通过图形用户界面一键式的定制云端实验开发环境,并且支持tensorboard查看训练趋势。这里我们的目的是调试训练代码逻辑。

3. 构建云端训练,完成模型的导出

使用git导入应用代码, 如果在需要安装python依赖库,可以在应用的根目录下放置requirements.txt, 这样就可以在应用初始化的时候安装这些依赖包.对于分布式存储,这里有一个约定:在执行环境的/input文件夹对应于选定oss数据卷的根目录,/output对应训练程序要输出到oss数据卷。目前云端训练支持单机和多机两种模式,如果是多机模式,需要分别指定参数和任务服务器的数量。机器学习解决方案会在调度时刻,将生成的参数传递给任务服务器,。如果训练过程中需要利用tensorboard查看训练状况也是支持的。

4. 利用导出的模型,执行在线预测

创建预测服务,这里预测服务具体支持两种: TensorFlow Serving和自定义服务。TensorFlow Serving支持加载TensorFlow导出的标准模型,自定义服务可以支持用户自己开发的预测应用。对这两种服务,都可以从数据卷中加载模型或者checkpoint,并且自动绑定负载均衡服务,同时还可以指定预测实例的个数,保证应用的高可用

总结

这次分享利用阿里云容器服务机器学习解决方案搭建了一个和Prisma功能类似的深度学习应用,并且实践了从模型训练,导出以及预测的全生命周期工作流程,这会是个逐步迭代不断优化的方案.我们后面会不断迭代优化这一方案,希望帮助数据科学家们专注于机器学习价值本身,进而提供最大的价值。

  • 简化:一键整合机器学习应用和阿里云GPU,NAS,OSS,SLB,SLS等服务; 快速构建从模型学习到发布工作流程
  • 优化:提供针对特定场景性能优化的TensorFlow和Caffe镜像;利用持续交付的最佳实践优化整体流程
  • 定制化:可使用用户自定义的镜像,满足高阶用户自定义需求,平衡灵活性与自动化

最后放出彩蛋,展示一下视频风格转换的效果:

视频风格转换

参考材料

深度学习实践:使用Tensorflow实现快速风格迁移
https://github.com/floydhub/fast-style-transfer
中国版 Prisma 来了,我们今天再聊聊深度学习

时间: 2024-08-03 21:03:16

快速在阿里云上构建机器学习应用的相关文章

如何快速在阿里云上构建自己的机器学习应用

摘要:在2017云栖大会深圳峰会开源专场上,阿里云容器服务技术专家车漾做了题为<在阿里云上构建机器学习应用>的精彩演讲,车漾首先从2016年深度学习最火的两个应用AlphaGo与Prisma谈起,从宏观层面分享了机器学习以及深度学习所做的事情,并就Prisma的发展故事谈起,为大家介绍了应该学会以工程思想思考和解决问题,并着重介绍了阿里云基于容器服务的机器学习解决方案架构设计以及如何借助阿里云快速搭建自己的机器学习应用,精彩不容错过. 以下内容根据嘉宾演讲视频以及PPT整理而成. 在2016年

如何在阿里云上构建高可用的跨AZ部署方案

引言: 针对企业而言,不管业务是不是在云上,服务的稳定和连续性总归是无法回避的话题,为了降低不可抗力因素对服务提供造成的影响,我们有了高可用性和容灾的概念.虽然我们的产品已有很高的可用性,我们仍不能忽视构建服务高可用性和容灾的重要性. 针对一般企业而言,主要会用到ECS, SLB, RDS, OSS 产品介绍: ECS 云服务器.相当于阿里云上的虚拟机,本身没有高可用性和容灾,需要通过架构来实现. SLB 负载均衡,高可用性和容灾可以从两点来阐述: 1. 负载均衡的服务提供是基于集群部署的,各集

如何在阿里云上构建高可用应用

业务高可用是我们每个项目的需求,一个经常故障的项目,会让我们觉得不靠谱而选择放弃,从而导致项目的失败.今天,我们来聊一聊,如何让你自己的业务能够更加稳固的运行! 本次我们从四个不同的角度,来分析,如何让我们的应用更加稳固,平稳运行. 一.        程序架构 优秀的代码 优秀的代码非常重要,即使我们拥有最好的硬件资源和架构,如果我们没有一套健壮的代码,其他资源再好都没有用,所以代码在设计和编写时,应当注意代码的健壮程度.优秀的代码不止开发起来方便,同时维护成本也较低,对于后续的优化来说,健壮

从运维的角度分析使用阿里云数据库RDS的必要性--你不应该在阿里云上使用自建的MySQL/SQL Server/Oracle/PostgreSQL数据库

开宗明义,你不应该在阿里云上使用自建的MySQL or SQL Server数据库,对了,还有Oracle or PostgreSQL数据库. 云数据库 RDS(Relational Database Service)是一种稳定可靠.可弹性伸缩的在线数据库服务.基于飞天分布式系统和全SSD盘高性能存储,支持MySQL.SQL Server.PostgreSQL和PPAS(高度兼容Oracle)引擎,默认部署主备架构且提供了容灾.备份.恢复.监控.迁移等方面的全套解决方案. 当然,并不是指所有用户

在阿里云上部署生产级别Kubernetes集群

阿里云是国内非常受欢迎的基础云平台,随着Kubernetes的普及,越来越多的企业开始筹划在阿里云上部署自己的Kubernetes集群.本文将结合实战中总结的经验,分析和归纳一套在阿里云上部署生产级别Kubernetes集群的方法.文中所采取的技术方案具有一定的主观性,供各位读者参考.在实践中可以根据具体使用场景进行优化. 目标 当我们刚接触Kubernetes进行测试集群的搭建时,往往会选择一篇已有的教程,照着教程完成集群搭建.我们很少去质疑教程作者每一步操作的合理性,只想快点把集群搭建起来,

在阿里云上两分钟玩转AlextNet

本系列将利用Docker技术在阿里云弹性GPU和容器服务上,帮助您上手TensorFlow的机器学习方案 第一篇:打造TensorFlow的实验环境 第二篇:轻松搭建TensorFlow Serving集群 第三篇:打通TensorFlow持续训练链路 第四篇:利用Neural Style的TensorFlow实现,像梵高一样作画 第五篇:轻松搭建分布式TensorFlow训练集群(上) 第六篇:在阿里云上两分钟玩转AlextNet 简介 AlexNet 是 2012 年由 Alex Krizh

玩转阿里云上Kubernetes 1.7.2 高可用部署

随着Kubernetes社区的不断壮大,其版本不断更迭,新功能及BugFIX也不断更新,促使其部署方式也不断的变化,本文将带您在阿里云上快速的部署一个高可用的Kubernetes集群.并且添加阿里云CloudProvider支持,让您可以方便的自由的使用阿里云上的SLB,NAS,阿里云盘,VPC网络等云资源. 部署结构图 如上图,脚本通过执行SSH命令的方式部署一个M + N节点的Kubernetes集群,M=Number(Master) N=Number(Worker). 支持VPC网络,确保

携手阿里 “云上贵州”再发力

--7+N云工程观摩汇报会暨阿里云开发者大会西南峰会将在贵阳召开 本文讲的是携手阿里 "云上贵州"再发力,12月11日消息,贵州联合阿里巴巴将于本月20日-22日在贵阳联合举办"7+N云工程观摩汇报会暨阿里云开发者大会西南峰会",旨在向开发者展示"云上贵州"建设成果,吸引大数据开发者向西南聚集,与贵州一起发展大数据产业. 据悉,此次西南峰会是阿里首次将开发者大会放在杭州以外举办,显示了其对贵州发展大数据产业的认同与支持.届时,阿里云计算平台上长出

在阿里云上使用Marathon

背景 之前的文章<阿里云容器服务测评>就高可用零宕机方面对容器服务作了详细测评,本文我们介绍一下小博无线目前的线上环境,Mesos+Marathon,是如何做到高可用零宕机的. Marathon Marathon作为Mesos的容器调度框架,本身就提供了非常可靠的高可用方案: 自身的High Availability Mode保证了单点故障时,依然能够提供服务 蓝绿部署机制在新版容器健康之后再停止旧版容器,确保新旧服务平滑切换 当容器健康检查持续失败,Marathon会将其kill,并启动新的