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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 3月28日云栖大会开源专场,阿里云技术专家必嘫给大家带来了“在阿里云上构建机器学习应用”的演讲。本文主要从深度学习应用发展历史开始谈起,进而介绍了如何结合阿里云容器服务的机器学习解决方案快速打造一套深度学习应用的案例。

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 来了,我们今天再聊聊深度学习

相关实践学习
巧用云服务器ECS制作节日贺卡
本场景带您体验如何在一台CentOS 7操作系统的ECS实例上,通过搭建web服务器,上传源码到web容器,制作节日贺卡网页。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
9天前
|
机器学习/深度学习 人工智能 算法
探索人工智能:机器学习的奥秘与应用
本文深入浅出地探讨了人工智能领域中的核心技术——机器学习,揭示了其背后的原理和广泛的实际应用。通过浅显易懂的语言和生动的例子,本文旨在为非专业读者打开一扇了解并利用机器学习的大门,同时激发对这一前沿技术的兴趣和思考。
23 1
|
12天前
|
机器学习/深度学习 人工智能 搜索推荐
如何让你的Uno Platform应用秒变AI大神?从零开始,轻松集成机器学习功能,让应用智能起来,用户惊呼太神奇!
【9月更文挑战第8天】随着技术的发展,人工智能与机器学习已融入日常生活,特别是在移动应用开发中。Uno Platform 是一个强大的框架,支持使用 C# 和 XAML 开发跨平台应用(涵盖 Windows、macOS、iOS、Android 和 Web)。本文探讨如何在 Uno Platform 中集成机器学习功能,通过示例代码展示从模型选择、训练到应用集成的全过程,并介绍如何利用 Onnx Runtime 等库实现在 Uno 平台上的模型运行,最终提升应用智能化水平和用户体验。
26 1
|
20天前
|
机器学习/深度学习 PHP 开发者
探索PHP中的面向对象编程构建你的首个机器学习模型:以Python和scikit-learn为例
【8月更文挑战第30天】在PHP的世界中,面向对象编程(OOP)是一块基石,它让代码更加模块化、易于管理和维护。本文将深入探讨PHP中面向对象的魔法,从类和对象的定义开始,到继承、多态性、封装等核心概念,再到实战中如何应用这些理念来构建更健壮的应用。我们将通过示例代码,一起见证PHP中OOP的魔力,并理解其背后的设计哲学。
|
22天前
|
机器学习/深度学习 缓存 运维
智能化运维:机器学习在IT管理中的革命性应用
【8月更文挑战第28天】 随着技术的飞速发展,传统的IT运维方式已不能满足现代企业的需求。智能化运维,通过整合机器学习技术,正在重塑我们对IT基础设施的管理方法。本文将探讨智能化运维的概念、实施步骤及其带来的变革,同时分享一些成功案例,以期为读者提供一种全新的视角和思考路径。
45 6
|
19天前
|
机器学习/深度学习 存储 前端开发
实战揭秘:如何借助TensorFlow.js的强大力量,轻松将高效能的机器学习模型无缝集成到Web浏览器中,从而打造智能化的前端应用并优化用户体验
【8月更文挑战第31天】将机器学习模型集成到Web应用中,可让用户在浏览器内体验智能化功能。TensorFlow.js作为在客户端浏览器中运行的库,提供了强大支持。本文通过问答形式详细介绍如何使用TensorFlow.js将机器学习模型带入Web浏览器,并通过具体示例代码展示最佳实践。首先,需在HTML文件中引入TensorFlow.js库;接着,可通过加载预训练模型如MobileNet实现图像分类;然后,编写代码处理图像识别并显示结果;此外,还介绍了如何训练自定义模型及优化模型性能的方法,包括模型量化、剪枝和压缩等。
27 1
|
20天前
|
机器学习/深度学习 数据采集 人工智能
探索机器学习在金融欺诈检测中的应用
【8月更文挑战第30天】 随着金融科技的迅猛发展,机器学习技术在保障交易安全和打击金融欺诈中扮演着越来越重要的角色。本文将深入探讨机器学习模型在识别和预防金融欺诈方面的应用,并分析其优势与面临的挑战。通过对比传统方法,我们突出了机器学习在处理大数据、提高检测速度和精度方面的独特价值。同时,文中还将介绍几种常用的算法和模型,以及它们在实际场景中的运用情况。最后,本文提出了未来发展趋势和需要解决的关键问题。
|
21天前
|
机器学习/深度学习 人工智能 Android开发
揭秘AI编程:从零开始构建你的第一个机器学习模型移动应用开发之旅:从新手到专家
【8月更文挑战第29天】本文将带你走进人工智能的奇妙世界,一起探索如何从零开始构建一个机器学习模型。我们将一步步解析整个过程,包括数据收集、预处理、模型选择、训练和测试等步骤,让你对AI编程有一个全面而深入的理解。无论你是AI初学者,还是有一定基础的开发者,都能在这篇文章中找到你需要的信息和启示。让我们一起开启这段激动人心的AI编程之旅吧! 【8月更文挑战第29天】在这篇文章中,我们将探索移动应用开发的奇妙世界。无论你是刚刚踏入这个领域的新手,还是已经有一定经验的开发者,这篇文章都将为你提供有价值的信息和指导。我们将从基础开始,逐步深入到更复杂的主题,包括移动操作系统的选择、开发工具的使用、
|
22天前
|
机器学习/深度学习 数据处理 定位技术
构建您的首个机器学习项目:从理论到实践
【8月更文挑战第28天】本文旨在为初学者提供一个简明的指南,通过介绍一个基础的机器学习项目——预测房价——来揭示机器学习的神秘面纱。我们将从数据收集开始,逐步深入到数据处理、模型选择、训练和评估等环节。通过实际操作,你将学会如何利用Python及其强大的科学计算库来实现自己的机器学习模型。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你打开一扇通往机器学习世界的大门。
|
23天前
|
机器学习/深度学习 人工智能 算法
【悬念揭秘】ML.NET:那片未被探索的机器学习宝藏,如何让普通开发者一夜变身AI高手?——从零开始,揭秘构建智能应用的神秘旅程!
【8月更文挑战第28天】ML.NET 是微软推出的一款开源机器学习框架,专为希望在本地应用中嵌入智能功能的 .NET 开发者设计。无需深厚的数据科学背景,即可实现预测分析、推荐系统和图像识别等功能。它支持多种数据源,提供丰富的预处理工具和多样化的机器学习算法,简化了数据处理和模型训练流程。
33 1
|
25天前
|
机器学习/深度学习 自动驾驶 算法
揭秘机器学习:用Python构建你的首个预测模型
【8月更文挑战第26天】 机器学习,这个听起来既神秘又遥不可及的领域,实际上正悄然改变着我们的世界。从推荐系统到自动驾驶汽车,机器学习技术无处不在。本文将带你走进机器学习的世界,通过一个简单的Python代码示例,展示如何构建一个基本的线性回归模型来预测房价。不需要复杂的数学公式或深奥的理论,我们将以最直观的方式理解机器学习的核心概念。无论你是编程新手还是数据科学爱好者,这篇文章都将为你打开一扇新的大门,让你看到数据背后的力量。