:::: MENU ::::

TalkingData's Blog

现在开始,用数据说话。

Blog

  • 十二 18 / 2017
  • 0
Data

锐眼洞察 | 数据准备迈向Serverless(翻译)

作者:George Leopold

原文:Data Prep Goes Serverless

译者:TalkingData研发副总裁 闫志涛

本译文禁止商用,转载请注明作者与来源!

译者评论:

云服务正在吞噬越来越多的IT的预算,尤其是在美欧等国家。而在国内,各种云服务也取得了巨大的进展。而对于大数据分析来说,从自建数据中心到利用公有云服务的弹性来进行数据处理,也越来越变为一个趋势。对于很多公司来说,随着人员的增加,越来越多的数据科学家和数据分析师需要计算资源来进行数据的处理和建模。面向这些需求,自己购买大量的计算和存储资源显然是巨大的成本开销,而且还很难解决需求与供给间的矛盾。因此,将数据分析和建模工作迁移到云端成为一个不错的选择。而公有云提供商也意识到了这个机会,于是在公有云上提供serverless的数据准备工具就成了一个趋势。这篇文章介绍的就是相关的内容。

云供应商管理计算和存储资源的平台的兴起,为诸如serverless数据准备工具等新的服务打开了大门。自助式服务的准备工具的列表正在增长,供应商提供不同的方法来将原始数据转变为可以便于进行分析的数据。“这些工具旨在减少准备数据的时间和复杂度,从而提高分析的的工作效率”。Gartner最近在对自助服务的数据准备工具的评估中指出。这些供应商估计数据科学家花费超过80%的时间去准备他们用于分析的数据。

基于云的serveless数据准备工具正在取得重大的进展,因为数据分析师正在寻找新的ETL工具去处理他们自己的数据集,从而能够便于进行分析,他们希望这些ETL工具能够替换那些传统的用于数据仓库ETL的标准的工具。

在最近的Gartner对自助数据准备供应商的调查中获得最高分的工具包括Lavastorm和Trifacta。Google最近宣布与Trifacta合作开发称为Google Cloud Dataprep的托管Data Wrangling的测试版本。

这两家合作伙伴说,这个服务旨在利用Google云平台加速面向分析的数据准备工作。这个数据准备工具使用了Google的serverless数据准备引擎——Google Cloud Dataflow,可以根据需要来管理计算资源。

Google通过增加对BigQuery和云存储的支持扩展了Trifacta数据准备服务。

在一个使用案例中,来自物联网和其他设备的原始事件数据被放入BigQuery中,通过添加数据描述符,然后与其他数据源相结合,可以使用Looker等专门支持Google数据库的分析工具非常容易的进行查询。

在一篇博客文章中,Qubit分析产品经理Mark Rittman表示,他使用这个配置来设置BigQuery表以接收运行在Google Compute Engine虚拟机上的服务器发送的流式注入的数据。 利用Fitbit健康追踪器的数据,他利用“类似电子表格的界面”的Google工具来处理数据。

Rittman指出,目前还缺少一些对Google Cloud API的支持,例如对谷歌自然语言处理API。 他预计,Google会升级和增加更多扩展到Trificata代码中从而能够支持更多serverless分析的特性。

Serverless数据准备顺应了大数据分析从私有化Hadoop部署到公有云转变的趋势。Gartner估计全球公有云服务将会增长18%达到2470亿美金,到2020年,云服务将会占领分析市场采购的大部分预算。

 

  • 十二 18 / 2017
  • 0
Tech

锐眼洞察 | 用新的CARTO.js 4.0库制作的15个创意地图(翻译)

作者:Devon Hopkins

原文:15 Creative Maps Made with the New CARTO.js 4.0

译者:TalkingData产品副总裁 闫辉

本译文禁止商用,转载请注明作者与来源!

开发人员需要开源工具才能创建视觉效果好且功能强大的应用。CARTO和“位置智能社区”长期以来一直支持开源项目,为现代的地理空间技术的发展做出贡献,让所有公司都能利用他们的位置数据。

如今,我们很高兴地宣布CARTO.js发布4.0 beta版本。

CARTO.js是一个开源的JavaScript库,与CARTO引擎生态系统中的各种API进行交互。新版本CARTO.js 4.0提供了额外的功能来提取和过滤CARTO内的数据,以便您可以创建自定义的UI组件,例如小部件、弹出窗口、图例等等。

如果您使用的是以前版本的CARTO.js,请参阅Beta版本的文档,来了解更多关于新旧库的基本概念和工作流程变更的信息。
CARTO.js的当前测试版仅包含对JavaScript库所做的更改。未来的增强将包括对核心应用程序功能的维护。

一次黑客马拉松

我们举办了一次内部黑客马拉松展示这次Javascript库更新的功能(比如在CUBE和Google Maps上显示CARTO数据并创建完全自定义的Web应用程序),并收集来自我们内部专家的反馈。

团队有3个小时的时间来创建一个体现CARTO.js 4.0的强大功能的地图或Web应用程序。

为了给您提供一些启发,下面是他们在不到3个小时内完成的一些最酷的内容(点击图片查看浏览器中的完整地图并与之互动):

美国2006至今发生的野外火灾

fires-by-category.77819ead_.png

这个令人惊叹的地图显示了按类别颜色编码的美国野外火灾。该地图描绘了全国各地火灾密度的惊人图景,以及火灾如何按照分类和记录的有趣视角。

7只红背伯劳的季节迁徙运动

redbacked-shrike.730682a3_.png

迁移模式

这个应用漂亮地映射“红背伯劳”每年穿越大陆的鸟类迁移模式。提供七只鸟的独立路径并追踪它们在每个季节的运动情况,这张地图提供了一个动物保护地图模板,可以跟随全球不同物种。

美国地名密度图

name-map-identity.f71d374f_.png

地名可以有很大的区域图案。这张地图让用户可以探索和发现新的、意想不到的模式,在全国各地如何命名。

一个地理小游戏

trivia-game.d3d6a0a0_.png

地名冷知识游戏

在这个快速的问答游戏中,突出了CARTO可以作为教学工具的方式之一,玩家需要使用他们的世界地理知识和地图上提供的一些提示来定位给定的城市。

新骑行地图窗口小部件

bike-suffering.380f8002_.png

骑行地图

这张地图通过使用一些新的小部件来绘制图片,可视化出特定骑行的强度。饼图和折线图可以让潜在的骑手感受到旅行的难度,并且可以将这些数据聚合起来创建一个索引,就像图中每个部分遭遇分数一样。

FBS大学橄榄球运动员的家乡和学校

fbs-college-football.98395732_.png

FBS大学橄榄球

查看FBS(Bowl Division)每个队伍的大学生橄榄球运动员的家乡情况。这张地图还可以提供每个特定运动员的信息,可以让你深入了解你最喜爱的团队的招募工作。

“权利的游戏”的距离计算器

game-of-thrones-calculator.7a4b156c_.png

“权利的游戏”的距离

凛冬将至?小指头还使用远距传物吗?乌鸦比龙还快吗?为了回答这个问题,我们的团队使用CARTO.js和我们的“权力的游戏”底图来构建GoT距离计算器。根据季节发现哪个角色路途最多。

乡村旅游促活地图

tourism.486277a6_.png

旅游推广地图

这张地图旨在促进当地旅游业。这张地图有几个层次,突出住宿、餐厅和酒吧,这个地图可以为造访Moralzarzal镇的游客指明正确的路线。该地图还提供了来自当地名胜的Mapillary街景图像。

套索工具

lasso-tool.e72d9298_.png

套索工具

该地图使用套索功能来绘制形状,并专注查看自定义地理区域中的数据点。

喜欢地震的人应该住在哪里

earthquake.cba63fca_.png

你喜欢搬到爱地震的地区吗?你可能想,这个爱好可能太危险了?别担心,在这张地图上你可以找到所有美国的县,周边至少邻近最近有地震的地区。所以你可以选择一个安全的地方居住,同时接近你最喜欢的爱好。

二战后的国家演进

animated-time-border-history.b4c7b189_.png

国家演进

这个时间序列图创造性地呈现了二战后半个世纪以来的国际不稳定。通过强调国家边界线的变化,以及改变的国名,地图描绘了这个动荡时代的画面。

爆炸的动态图

giphy-explosion.89de6ebf_.png

这个有趣的用来自Giphy工具的动态GIF图做的爆炸效果试验,当你鼠标滑过地图,可以看到世界各地流行地的名字。

一支特殊力量带来的犯罪报道

london-crime.283ca384_.png

伦敦犯罪

这个地图将HighCharts图表库与CARTO.js 4.0结合在一起,创建了一个交互式小部件,用于对伦敦及周边地区对犯罪(按类型)进行映射和可视化。

冷知识游戏

trivia-game.d3d6a0a0_.png

冷知识游戏2

另一个使用CARTO.js创建的快速地理游戏,要求您输入国家/地区名称。 如果你点击正确,你赢了! 3次尝试失败后,显示正确的答案。

美国自2000年以来的污染

pollution-in-the-us.1cb9d7a7

美国的污染

这幅美丽的地图显示了过去16年来美国几个城市的污染水平。在小部件中用图表形式显示所选年限里有明显污染的地区,使用户能够根据四种不同类型的空气污染状况来细分他们的视图。

 

  • 十二 18 / 2017
  • 0
Tech

锐眼发现 | 促进新一代人工智能产业发展三年行动计划

原文:工业和信息化部关于印发《促进新一代人工智能产业发展三年行动计划(2018-2020年)》的通知

 

促进新一代人工智能产业发展三年行动计划

(2018-2020年)

当前,新一轮科技革命和产业变革正在萌发,大数据的形成、理论算法的革新、计算能力的提升及网络设施的演进驱动人工智能发展进入新阶段,智能化成为技术和产业发展的重要方向。人工智能具有显著的溢出效应,将进一步带动其他技术的进步,推动战略性新兴产业总体突破,正在成为推进供给侧结构性改革的新动能、振兴实体经济的新机遇、建设制造强国和网络强国的新引擎。为落实《新一代人工智能发展规划》,深入实施“中国制造2025”,抓住历史机遇,突破重点领域,促进人工智能产业发展,提升制造业智能化水平,推动人工智能和实体经济深度融合,制订本行动计划。

一、总体要求

(一)指导思想

全面贯彻落实党的十九大精神,以习近平新时代中国特色社会主义思想为指导,按照“五位一体”总体布局和“四个全面”战略布局,认真落实党中央、国务院决策部署,以信息技术与制造技术深度融合为主线,推动新一代人工智能技术的产业化与集成应用,发展高端智能产品,夯实核心基础,提升智能制造水平,完善公共支撑体系,促进新一代人工智能产业发展,推动制造强国和网络强国建设,助力实体经济转型升级。

(二)基本原则

系统布局。把握人工智能发展趋势,立足国情和各地区的产业现实基础,顶层引导和区域协作相结合,加强体系化部署,做好分阶段实施,构建完善新一代人工智能产业体系。

重点突破。针对产业发展的关键薄弱环节,集中优势力量和创新资源,支持重点领域人工智能产品研发,加快产业化与应用部署,带动产业整体提升。

协同创新。发挥政策引导作用,促进产学研用相结合,支持龙头企业与上下游中小企业加强协作,构建良好的产业生态。

开放有序。加强国际合作,推动人工智能共性技术、资源和服务的开放共享。完善发展环境,提升安全保障能力,实现产业健康有序发展。

(三)行动目标

通过实施四项重点任务,力争到2020年,一系列人工智能标志性产品取得重要突破,在若干重点领域形成国际竞争优势,人工智能和实体经济融合进一步深化,产业发展环境进一步优化。

——人工智能重点产品规模化发展,智能网联汽车技术水平大幅提升,智能服务机器人实现规模化应用,智能无人机等产品具有较强全球竞争力,医疗影像辅助诊断系统等扩大临床应用,视频图像识别、智能语音、智能翻译等产品达到国际先进水平。

——人工智能整体核心基础能力显著增强,智能传感器技术产品实现突破,设计、代工、封测技术达到国际水平,神经网络芯片实现量产并在重点领域实现规模化应用,开源开发平台初步具备支撑产业快速发展的能力。

——智能制造深化发展,复杂环境识别、新型人机交互等人工智能技术在关键技术装备中加快集成应用,智能化生产、大规模个性化定制、预测性维护等新模式的应用水平明显提升。重点工业领域智能化水平显著提高。

——人工智能产业支撑体系基本建立,具备一定规模的高质量标注数据资源库、标准测试数据集建成并开放,人工智能标准体系、测试评估体系及安全保障体系框架初步建立,智能化网络基础设施体系逐步形成,产业发展环境更加完善。

二、培育智能产品

以市场需求为牵引,积极培育人工智能创新产品和服务,促进人工智能技术的产业化,推动智能产品在工业、医疗、交通、农业、金融、物流、教育、文化、旅游等领域的集成应用。发展智能控制产品,加快突破关键技术,研发并应用一批具备复杂环境感知、智能人机交互、灵活精准控制、群体实时协同等特征的智能化设备,满足高可用、高可靠、安全等要求,提升设备处理复杂、突发、极端情况的能力。培育智能理解产品,加快模式识别、智能语义理解、智能分析决策等核心技术研发和产业化,支持设计一批智能化水平和可靠性较高的智能理解产品或模块,优化智能系统与服务的供给结构。推动智能硬件普及,深化人工智能技术在智能家居、健康管理、移动智能终端和车载产品等领域的应用,丰富终端产品的智能化功能,推动信息消费升级。着重在以下领域率先取得突破:

(一)智能网联汽车。支持车辆智能计算平台体系架构、车载智能芯片、自动驾驶操作系统、车辆智能算法等关键技术、产品研发,构建软件、硬件、算法一体化的车辆智能化平台。到2020年,建立可靠、安全、实时性强的智能网联汽车智能化平台,形成平台相关标准,支撑高度自动驾驶(HA级)。

(二)智能服务机器人。支持智能交互、智能操作、多机协作等关键技术研发,提升清洁、老年陪护、康复、助残、儿童教育等家庭服务机器人的智能化水平,推动巡检、导览等公共服务机器人以及消防救援机器人等的创新应用。发展三维成像定位、智能精准安全操控、人机协作接口等关键技术,支持手术机器人操作系统研发,推动手术机器人在临床医疗中的应用。到2020年,智能服务机器人环境感知、自然交互、自主学习、人机协作等关键技术取得突破,智能家庭服务机器人、智能公共服务机器人实现批量生产及应用,医疗康复、助老助残、消防救灾等机器人实现样机生产,完成技术与功能验证,实现20家以上应用示范。

(三)智能无人机。支持智能避障、自动巡航、面向复杂环境的自主飞行、群体作业等关键技术研发与应用,推动新一代通信及定位导航技术在无人机数据传输、链路控制、监控管理等方面的应用,开展智能飞控系统、高集成度专用芯片等关键部件研制。到2020年,智能消费级无人机三轴机械增稳云台精度达到0.005 度,实现 360 度全向感知避障,实现自动智能强制避让航空管制区域。

(四)医疗影像辅助诊断系统。推动医学影像数据采集标准化与规范化,支持脑、肺、眼、骨、心脑血管、乳腺等典型疾病领域的医学影像辅助诊断技术研发,加快医疗影像辅助诊断系统的产品化及临床辅助应用。到2020年,国内先进的多模态医学影像辅助诊断系统对以上典型疾病的检出率超过95%,假阴性率低于1%,假阳性率低于5%。

(五)视频图像身份识别系统。支持生物特征识别、视频理解、跨媒体融合等技术创新,发展人证合一、视频监控、图像搜索、视频摘要等典型应用,拓展在安防、金融等重点领域的应用。到2020年,复杂动态场景下人脸识别有效检出率超过97%,正确识别率超过90%,支持不同地域人脸特征识别。

(六)智能语音交互系统。支持新一代语音识别框架、口语化语音识别、个性化语音识别、智能对话、音视频融合、语音合成等技术的创新应用,在智能制造、智能家居等重点领域开展推广应用。到2020年,实现多场景下中文语音识别平均准确率达到96%,5米远场识别率超过92%,用户对话意图识别准确率超过90%。

(七)智能翻译系统。推动高精准智能翻译系统应用,围绕多语言互译、同声传译等典型场景,利用机器学习技术提升准确度和实用性。到2020年,多语种智能互译取得明显突破,中译英、英译中场景下产品的翻译准确率超过85%,少数民族语言与汉语的智能互译准确率显著提升。

(八)智能家居产品。支持智能传感、物联网、机器学习等技术在智能家居产品中的应用,提升家电、智能网络设备、水电气仪表等产品的智能水平、实用性和安全性,发展智能安防、智能家具、智能照明、智能洁具等产品,建设一批智能家居测试评价、示范应用项目并推广。到2020年,智能家居产品类别明显丰富,智能电视市场渗透率达到90%以上,安防产品智能化水平显著提升。

三、突破核心基础

加快研发并应用高精度、低成本的智能传感器,突破面向云端训练、终端应用的神经网络芯片及配套工具,支持人工智能开发框架、算法库、工具集等的研发,支持开源开放平台建设,积极布局面向人工智能应用设计的智能软件,夯实人工智能产业发展的软硬件基础。着重在以下领域率先取得突破:

(一)智能传感器。支持微型化及可靠性设计、精密制造、集成开发工具、嵌入式算法等关键技术研发,支持基于新需求、新材料、新工艺、新原理设计的智能传感器研发及应用。发展市场前景广阔的新型生物、气体、压力、流量、惯性、距离、图像、声学等智能传感器,推动压电材料、磁性材料、红外辐射材料、金属氧化物等材料技术革新,支持基于微机电系统(MEMS)和互补金属氧化物半导体(CMOS)集成等工艺的新型智能传感器研发,发展面向新应用场景的基于磁感、超声波、非可见光、生物化学等新原理的智能传感器,推动智能传感器实现高精度、高可靠、低功耗、低成本。到2020年,压电传感器、磁传感器、红外传感器、气体传感器等的性能显著提高,信噪比达到70dB、声学过载点达到135dB的声学传感器实现量产,绝对精度100Pa以内、噪音水平0.6Pa以内的压力传感器实现商用,弱磁场分辨率达到1pT的磁传感器实现量产。在模拟仿真、设计、MEMS工艺、封装及个性化测试技术方面达到国际先进水平,具备在移动式可穿戴、互联网、汽车电子等重点领域的系统方案设计能力。

(二)神经网络芯片。面向机器学习训练应用,发展高性能、高扩展性、低功耗的云端神经网络芯片,面向终端应用发展适用于机器学习计算的低功耗、高性能的终端神经网络芯片,发展与神经网络芯片配套的编译器、驱动软件、开发环境等产业化支撑工具。到2020年,神经网络芯片技术取得突破进展,推出性能达到128TFLOPS(16位浮点)、能效比超过1TFLOPS/w的云端神经网络芯片,推出能效比超过1T OPS/w(以16位浮点为基准)的终端神经网络芯片,支持卷积神经网络(CNN)、递归神经网络(RNN)、长短期记忆网络(LSTM)等一种或几种主流神经网络算法;在智能终端、自动驾驶、智能安防、智能家居等重点领域实现神经网络芯片的规模化商用。

(三)开源开放平台。针对机器学习、模式识别、智能语义理解等共性技术和自动驾驶等重点行业应用,支持面向云端训练和终端执行的开发框架、算法库、工具集等的研发,支持开源开发平台、开放技术网络和开源社区建设,鼓励建设满足复杂训练需求的开放计算服务平台,鼓励骨干龙头企业构建基于开源开放技术的软件、硬件、数据、应用协同的新型产业生态。到2020年,面向云端训练的开源开发平台支持大规模分布式集群、多种硬件平台、多种算法,面向终端执行的开源开发平台具备轻量化、模块化和可靠性等特征。

四、深化发展智能制造

深入实施智能制造,鼓励新一代人工智能技术在工业领域各环节的探索应用,支持重点领域算法突破与应用创新,系统提升制造装备、制造过程、行业应用的智能化水平。着重在以下方面率先取得突破:

(一)智能制造关键技术装备。提升高档数控机床与工业机器人的自检测、自校正、自适应、自组织能力和智能化水平,利用人工智能技术提升增材制造装备的加工精度和产品质量,优化智能传感器与分散式控制系统(DCS)、可编程逻辑控制器(PLC)、数据采集系统(SCADA)、高性能高可靠嵌入式控制系统等控制装备在复杂工作环境的感知、认知和控制能力,提高数字化非接触精密测量、在线无损检测系统等智能检测装备的测量精度和效率,增强装配设备的柔性。提升高速分拣机、多层穿梭车、高密度存储穿梭板等物流装备的智能化水平,实现精准、柔性、高效的物料配送和无人化智能仓储。

到2020年,高档数控机床智能化水平进一步提升,具备人机协调、自然交互、自主学习功能的新一代工业机器人实现批量生产及应用;增材制造装备成形效率大于450cm3/h,连续工作时间大于240h;实现智能传感与控制装备在机床、机器人、石油化工、轨道交通等领域的集成应用;智能检测与装配装备的工业现场视觉识别准确率达到90%,测量精度及速度满足实际生产需求;开发10个以上智能物流与仓储装备。

(二)智能制造新模式。鼓励离散型制造业企业以生产设备网络化、智能化为基础,应用机器学习技术分析处理现场数据,实现设备在线诊断、产品质量实时控制等功能。鼓励流程型制造企业建设全流程、智能化生产管理和安防系统,实现连续性生产、安全生产的智能化管理。打造网络化协同制造平台,增强人工智能指引下的人机协作与企业间协作研发设计与生产能力。发展个性化定制服务平台,提高对用户需求特征的深度学习和分析能力,优化产品的模块化设计能力和个性化组合方式。搭建基于标准化信息采集的控制与自动诊断系统,加快对故障预测模型和用户使用习惯信息模型的训练和优化,提升对产品、核心配件的生命周期分析能力。

到2020年,数字化车间的运营成本降低20%,产品研制周期缩短20%;智能工厂产品不良品率降低10%,能源利用率提高10%;航空航天、汽车等领域加快推广企业内外并行组织和协同优化新模式;服装、家电等领域对大规模、小批量个性化订单全流程的柔性生产与协作优化能力普遍提升;在装备制造、零部件制造等领域推进开展智能装备健康状况监测预警等远程运维服务。

五、构建支撑体系

面向重点产品研发和行业应用需求,支持建设并开放多种类型的人工智能海量训练资源库、标准测试数据集和云服务平台,建立并完善人工智能标准和测试评估体系,建设知识产权等服务平台,加快构建智能化基础设施体系,建立人工智能网络安全保障体系。着重在以下领域率先取得突破:

(一)行业训练资源库。面向语音识别、视觉识别、自然语言处理等基础领域及工业、医疗、金融、交通等行业领域,支持建设高质量人工智能训练资源库、标准测试数据集并推动共享,鼓励建设提供知识图谱、算法训练、产品优化等共性服务的开放性云平台。到2020年,基础语音、视频图像、文本对话等公共训练数据量大幅提升,在工业、医疗、金融、交通等领域汇集一定规模的行业应用数据,用于支持创业创新。

(二)标准测试及知识产权服务平台。建设人工智能产业标准规范体系,建立并完善基础共性、互联互通、安全隐私、行业应用等技术标准,鼓励业界积极参与国际标准化工作。构建人工智能产品评估评测体系,对重点智能产品和服务的智能水平、可靠性、安全性等进行评估,提升人工智能产品和服务质量。研究建立人工智能技术专利协同运用机制,支持建设专利协同运营平台和知识产权服务平台。到2020年,初步建立人工智能产业标准体系,建成第三方试点测试平台并开展评估评测服务;在模式识别、语义理解、自动驾驶、智能机器人等领域建成具有基础支撑能力的知识产权服务平台。

(三)智能化网络基础设施。加快高度智能化的下一代互联网、高速率大容量低时延的第五代移动通信(5G)网、快速高精度定位的导航网、泛在融合高效互联的天地一体化信息网部署和建设,加快工业互联网、车联网建设,逐步形成智能化网络基础设施体系,提升支撑服务能力。到2020年,全国90%以上地区的宽带接入速率和时延满足人工智能行业应用需求,10家以上重点企业实现覆盖生产全流程的工业互联网示范建设,重点区域车联网网络设施初步建成。

(四)网络安全保障体系。针对智能网联汽车、智能家居等人工智能重点产品或行业应用,开展漏洞挖掘、安全测试、威胁预警、攻击检测、应急处置等安全技术攻关,推动人工智能先进技术在网络安全领域的深度应用,加快漏洞库、风险库、案例集等共享资源建设。到2020年,完善人工智能网络安全产业布局,形成人工智能安全防控体系框架,初步建成具备人工智能安全态势感知、测试评估、威胁信息共享以及应急处置等基本能力的安全保障平台。

六、保障措施

(一)加强组织实施

强化部门协同和上下联动,建立健全政府、企业、行业组织和产业联盟、智库等的协同推进机制,加强在技术攻关、标准制定等方面的协调配合。加强部省合作,依托国家新型工业化产业示范基地建设等工作,支持有条件的地区发挥自身资源优势,培育一批人工智能领军企业,探索建设人工智能产业集聚区,促进人工智能产业突破发展。面向重点行业和关键领域,推动人工智能标志性产品应用。建立人工智能产业统计体系,关键产品与服务目录,加强跟踪研究和督促指导,确保重点工作有序推进。

(二)加大支持力度

充分发挥工业转型升级(中国制造2025)等现有资金以及重大项目等国家科技计划(专项、基金)的引导作用,支持符合条件的人工智能标志性产品及基础软硬件研发、应用试点示范、支撑平台建设等,鼓励地方财政对相关领域加大投入力度。以重大需求和行业应用为牵引,搭建典型试验环境,建设产品可靠性和安全性验证平台,组织协同攻关,支持人工智能关键应用技术研发及适配,支持创新产品设计、系统集成和产业化。支持人工智能企业与金融机构加强对接合作,通过市场机制引导多方资本参与产业发展。在首台(套)重大技术装备保险保费补偿政策中,探索引入人工智能融合的技术装备、生产线等关键领域。

(三)鼓励创新创业

加快建设和不断完善智能网联汽车、智能语音、智能传感器、机器人等人工智能相关领域的制造业创新中心,设立人工智能领域的重点实验室。支持企业、科研院所与高校联合开展人工智能关键技术研发与产业化。鼓励开展人工智能创新创业和解决方案大赛,鼓励制造业大企业、互联网企业、基础电信企业建设“双创”平台,发挥骨干企业引领作用,加强技术研发与应用合作,提升产业发展创新力和国际竞争力。培育人工智能创新标杆企业,搭建人工智能企业创新交流平台。

(四)加快人才培养

贯彻落实《制造业人才发展规划指南》,深化人才体制机制改革。以多种方式吸引和培养人工智能高端人才和创新创业人才,支持一批领军人才和青年拔尖人才成长。依托重大工程项目,鼓励校企合作,支持高等学校加强人工智能相关学科专业建设,引导职业学校培养产业发展急需的技能型人才。鼓励领先企业、行业服务机构等培养高水平的人工智能人才队伍,面向重点行业提供行业解决方案,推广行业最佳应用实践。

(五)优化发展环境

开展人工智能相关政策和法律法规研究,为产业健康发展营造良好环境。加强行业对接,推动行业合理开放数据,积极应用新技术、新业务,促进人工智能与行业融合发展。鼓励政府部门率先运用人工智能提升业务效率和管理服务水平。充分利用双边、多边国际合作机制,抓住“一带一路”建设契机,鼓励国内外科研院所、企业、行业组织拓宽交流渠道,广泛开展合作,实现优势互补、合作共赢。

  • 十二 15 / 2017
  • 0
Tech

锐眼洞察 | TensorFlow在企业中的应用——深度学习生态概述 ③(翻译)

作者:Sean Murphy & Allen Leis

原文:Considering TensorFlow for the Enterprise

译者:TalkingData Heisatis

本译文禁止商用,转载请注明来源与译者!

导语:本文翻译自 O’Reilly 的一篇报告,介绍了 TensorFlow 在企业中的应用,对深度学习生态进行了概述。报告篇幅较长,译文将分为三篇发布,本文为第三篇

第一篇回顾:锐眼洞察 | TensorFlow在企业中的应用——深度学习生态概述 ①(翻译)

第二篇回顾:锐眼洞察 | TensorFlow在企业中的应用——深度学习生态概述 ②(翻译)

屏幕快照_2017-12-11_下午6.36_.00_.png

第三章:深度学习框架及生态系统探索

虽然令人印象深刻,但TensorFlow本身“仅仅”是一个使用数据流图进行数值计算的开源库。 如第2章所述,有许多开源竞争者可以用来构建,训练和运行复杂神经网络的推理; 未来甚至会出现更多。深度学习框架的生态系统是围绕着这个框架本身的,不仅由原作者创建,而且还由社区建立,在不断发展的空间中形成了一个长期的解决方案。 这是TensorFlow丰富而不断增长的生态系统,迫使许多人使用它。 对每个TensorFlow组件的详细使用将超出本报告的范围,但我们将努力介绍相关的部分,并提供一些更大的整体难题的视角。

Python是生态系统力量的一个很好的例子。该语言的卖点之一是其“能力内置”的理念; 它带有一个标准的库,使许多任务(如发出HTTP请求)变得简单。即使采用这种方法,Python也将其一些成功归功于其生态系统。 Numpy和Scipy图书馆为数字和科学计算奠定了坚实的基础,扩展了语言的核心功能和使用它的社区。像scikit-learn这样的库,几乎可以作为机器学习领域的算法的参考实现,而Pandas是基于Python的数据分析的事实标准,它们建立在Numpy和Scipy的基础之上,为了帮助Python争夺数据科学首选编程语言的宝座。像Enthought和Continuum Analytics这样的公司创建了Python的分发版本,其中包括许多外部依赖造成安装困难的关键库。这简化了Python的部署,拓宽了用户群体。 IPython Notebook已经发展成为Jupyter(Julia Python R)来支持Python以外的新语言。 Jupyter正在成为数据科学,深度学习和人工智能的标准IDE。支持基于Python的深度学习库,也不仅扩展了Python的生态系统,而且也因为这个生态系统而成为可能。

我们将TensorFlow生态系统划分为几个功能类别。 第一组通过使用TensorFlow设计,构建和训练神经网络更容易,从而增加了库的直接效用。 这方面的几个例子是预建的或预训练的深度神经网络,用于跟踪训练进度的图形界面(TensorBoard)以及TensorFlow(Keras)的更高级别API。 第二类包含可以预判行为并易于管理的工具。下一个类别是用于连接到其他流行的开源项目(如Hadoop、Spark、Docker和Kubernetes)并与之交互的组件。 最后一类是减少训练深度神经网络的时间和成本的技术,因为这通常是需要进一步发展的部分。

这个部分大致上遵循TensorFlow工作流程的三个阶段:(1)数据准备、(2)训练、(3)推理和模型服务。 我们不会把太多的精力放在准备用于TensorFlow的数据上;假设从其他类型的机器学习过渡到现在的企业已经有了清理,准备训练数据的机制。 图3-1显示了生态系统如何与整个工作流程保持一致。

3-1.png

图3-1 TensorFlow生态系统各个部分与整个工作流程之间的一致性

1. 改进网络设计和训练

以下工具和开源项目能够帮助软件工程师和数据科学家设计、构建和训练深度学习模型,力求为TensorFlow用户创造即时的价值。如果您是新手,我们建议您以相关的预建神经网络为出发点,然后仔细研究Keras,这可以简化复杂网络的创建并为模型提供一些便捷性。 如果您的应用程序涉及序列数据(文本、音频、时间序列等),请不要跳过Tensor2Tensor。 无论你的经验水平如何,期望你使用TensorBoard。

估计

TensorFlow为机器学习(tf.estimator)提供了一个更高级别的API。 它包含许多内置的模型——线性分类、线性回归、神经网络分类、神经网络回归以及组合模型,并支持更快速地配置、训练、预测和评估。

预建神经网络

深度神经网络设计仍然是一种学术追求和艺术形式。 为了加速DL的使用,TensorFlow附带了许多可供即时使用的示例神经网络。 在开始任何项目之前,请检查此目录以查看是否有可用的跳转启动。 特别值得一提的是Inception网络,这是一种卷积神经网络,在2014年的ImageNet大规模视觉识别挑战中,在分类和检测方面都表现出最好的效果。

Keras

Keras是一个用Python编写的高级API,专为人类在尽可能短的时间内构建和实验复杂的神经网络而设计。 您可以使用Keras作为TensorFlow的模型定义抽象层,也可以与其他TF相关的工具兼容。 有趣的是,Keras提供了一个将网络从一个深度学习库转移到另一个深度学习库的潜在可移植性途径,与实现标准模型抽象最接近。 目前它不仅能够在TensorFlow上运行,还能在Theano、Microsoft Cognitive Toolkit以及最近的MXNet上运行。 此外,Keras是Deeplearning4J的Python API。

用于TensorFlow的机器学习工具包

该工具包提供了开箱即用的高级机器学习算法(参见下面的列表),该算法受流行的scikit-learn库的启发,可立即使用,优于使用TF的低级API重写算法。

  • 神经网络(DNN,RNN,LSTM等)
  • 线性和逻辑回归
  • K-means聚类
  • 高斯混合模型
  • WALS矩阵分解
  • 支持向量机(L1和L2正则化)
  • 用于上下文优化的随机双重坐标上升
  • 随机森林
  • 决策树

重要的是,所有这些算法都具有分布式实现,并且可以并行执行跨机器,与非并行实现相比,性能显著提高。

Tensor2Tensor(T2T)

T2T是一个建立在TensorFlow之上的开源系统,用于支持最先进的深度学习网络的开发和训练,特别关注sequence-to-sequence模型(用于翻译文本或为图像提供说明)。这个在2017年发布的库正在被Google Brain团队积极使用、开发、维护和支持。 它还包括以下内容:

  • 许多包含不同类型的数据的数据集(文本,音频和图像)
  • 超参数配置
  • 最近的一些学术论文中的最佳模型,包括:

- “Attention Is All You Need”

– “Depthwise Separable Convolutions for Neural Machine Translation”

– “One Model to Learn Them All”

该软件的目标是提供比基本TensorFlow API更高的抽象级别,并将许多最佳实践和交易中的难学“技巧”封装到软件中,在所有软件之间实施标准化接口。

TensorBoard

机器学习通常很难形象化,神经网络一直被批评为黑盒子,几乎没有透明的内部工作。 深度网络图可能难以可视化。 很多图层中的数据流很难原位观察甚至后验。 从实践者的角度来看,了解和调试神经网络可能是非常困难的。

TensorBoard是一个可视化工具的集合,提供对TensorFlow图形的洞察,并允许开发人员或分析人员了解、调试和优化网络。 这些工具的用户界面是基于浏览器的。 它提供了三个核心功能:

图表结构的可视化

理解一个神经网络的第一步,可以由几十层,几十万个节点或更多的网络组成,从视觉上检查和验证网络的结构。

摘要的可视化

TensorBoard允许您附加总结,以捕获在训练和执行过程中流过图表的各种张量。 这些张量可以表示输入数据或网络权重,直方图显示网络权重或网络中其他张量如何随时间变化。

嵌入式可视化器

TensorBoard还允许您在三维界面中显示机器学习结果。

通用的功能是很方便使用的,例如学习期间的图表汇总统计。 您还可以深入了解特定图层的输出以运行您自己的分析。 这使得可以在这些值作为下一层的输入之前审查来自一层的输出分布。 TensorBoard读取序列化的TensorFlow事件数据。 尽管某些功能和可视化功能是在没有设置的情况下自动提供的,但其他功能和可视化功能需要更改代码才能捕捉要显示的数据,并且您可以选择收集摘要信息的节点或对象。

谷歌有持续的TensorBoard发展的大目标。 首先,TensorFlow调试器将与TensorBoard集成在一起,以便您可以通过此工具可视化调试信息。 接下来,TensorBoard即将支持允许复杂和定制可视化的插件,这些插件可用于在各种问题领域中查询具有独特可视化需求的特定神经网络类型。 最后,Google计划发布一个“组织级”的TensorBoard,不仅为个人而且为团队设计,以便结果可以迅速传播,共享的发展历史可以继续保持。

TensorFlow调试器

TensorFlow带有一个专门的调试器(tfdbg),它可以在通过TensorFlow图形进行训练和推理时自动检测任何数据。 TensorFlow(tdb)有一个有趣的第三方开源调试器,具有强大的可视化功能。 这被作者描述为:“TDB之于TensorBoard,就像GDB之于printf。 两者在不同的情况下都是有用的。”然而,作者Eric Jang显然是被Google Brain聘用的,外部的努力已经被放弃了。

2. 部署网络用于预测

由于需要大量的计算需求,深度学习训练通常会承担大部分压力。 但是,如果没有人使用深度神经网络,那么最新的深度神经网络是没有价值的。 以强大、可扩展和高效的方式提供预测功能对于深度学习库和生态系统的成功至关重要。

TensorFlow Serving

训练结束后,企业将面临如何运行深度学习网络和机器学习模型的决策。 将会有一些用例,例如在研究、实验或者异步预测/分类活动中,交互性是不需要的。 然而,在许多情况下,企业将希望为面向用户的应用程序提供实时预测(如移动应用程序中的对象检测,例如HBO硅谷的“Not Hotdog”应用程序),人为决策支持或自动化指挥和控制系统;这就要求将先前训练过的网络投入生产进行预测。

部署机器学习模型带来的需求在设计生产系统方面打开了潘多拉盒子。 我们如何提供最高水平的表现? 如果我们需要为不同的操作公开多个模型呢? 我们如何管理部署过程或处理多个模型版本的配置管理?

TensorFlow Serving提供了一个面向生产的高性能系统来解决这个模型部署的问题;它托管TensorFlow模型并允许远程访问它们以满足客户端请求。 重要的是,所提供的模型是可版本化的,使得用新的权重或迭代更新网络变得容易,同时维护独立的研究和生产分支。 您无法通过浏览器发出HTTP请求来与TensorFlow服务进行通信。 相反,构建在C++上的性能的服务器实现了gRPC接口。 gRPC是Google的远程过程调用框架,旨在以可扩展的方式高效地连接数据中心内的服务。 因此,需要建立一个客户端来与服务器通信。 深度学习和机器学习模型必须以Google的protobuf格式保存。 TensorFlow服务可以在CloudML中或通过使用Docker / Kubernetes进行(自动)扩展。

进程内服务

在某些情况下,组织可能不想部署TensorFlow Serving或不能使用TensorFlow Serving RPC服务器来为模型提供服务。在这些情况下,通过在应用程序中包含核心TensorFlow库,您仍然可以直接使用保存的模型。进程内服务提供了一种非常轻量级的机制来提供预测功能,但TensorFlow Serving所提供的好处却没有,比如自动请求批处理或模型版本控制。

举个例子,我们来考虑一个用Python库Flask构建的基本网站。该网站将允许用户使用深度卷积神经网络来上传图像并识别图像内的对象。从我们的角度来看,有趣的部分发生在用户上传照片之后,并且经过训练的卷积神经网络被加载之后。一旦收到照片,Flask服务器将显示网络输入照片,执行预测,并返回结果。所有的预测能力都将由TensorFlow库提供,这些库很容易被基于Flask的Web服务器调用。类似的方式也可以用在移动设备上(请参阅http://tensorflow.org/mobile)

3. 与其他系统集成

企业正在考虑采用的新技术的一个重要方面是如何适应现有的企业基础架构。 尽管当今的大数据格局非常拥挤和复杂,但是有一些明显的技术在许多行业的大数据栈中发挥作用。

数据摄取选项

深度学习的关键是大量的数据,必须清理、调整,然后用于训练神经网络。为了达到这个目的,数据集是必须事先准备的。 幸运的是,我们有很多选择。 首先,TensorFlow支持在TFRecords中的协议缓冲区上建立自己的本地TensorFlow格式(tf.Example和tf.SequenceExample)。 请注意,Apache Beam对TFRecords有本地支持。 其次,稍微慢一些,TensorFlow内置了读取JSON,逗号分隔值(CSV)和Avro数据文件的功能。 最后,最终用户可以使用Python来读取数据,包括Pandas数据表中的数据。 因为最后一个选项最慢,所以最好进行测试和实验。 最后,TensorFlow支持几种不同的分布式存储选项,包括Apache Hadoop HDFS、Google Cloud Storage和Amazon Elastic File System。

TensorFlowOnSpark

雅虎非常友好地开放源代码,允许分布式TensorFlow训练和预测运行在为Apache Spark构建的集群上。 从企业角度来看,这可能非常强大,因为许多希望使用TensorFlow的公司可能已经在使用Spark进行数据分析和机器学习 。 因此,组织可以重新使用现有的集群资产,而不是单独设置单独的基础设施来进行深入学习,从而使转换变得更加容易。 此外,这可以减轻将数据从一个集群转移到另一个集群的需求——这是常常一个痛苦且耗时的过程。

从策略的角度来看,TensorFlowOnSpark与TensorBoard兼容,甚至在集群设置训练期间配置Spark执行器来运行Tensorboard。 该API是最小的,使其快速学习和使用,只需要很少的变化便能通过现有的TensorFlow代码运行。

TensorFlowOnSpark提供了三个方面的手段:

  • 在spark中启动/配置TensorFlow群集
  • 通过将Spark的弹性分布式数据集(RDD)转换为feed_dict将数据馈送到TensforFlow图
  • 完成后关闭TensorFlow群集

为了最大限度地利用Spark,你需要运行TensorFlow程序,这个程序将完全饱和资源;否则,性能不会像任何分布式应用那样线性扩展。 在缺点方面,TensorFlowOnSpark并不完全符合所有的社区项目(如Keras)。 此外,在Java虚拟机(JVM)中运行的Spark可能会在失败时提供一些相对难以理解的错误消息。 无论如何,如果您的企业已经在使用Spark群集,这可能是运行分布式TensorFlow进行训练的最简单方法。

“Ecosystem” Repo

“Ecosystem” Repo是Google公司在GitHub上的一个Apache 2.0许可的开放源代码存储库,其中包含将TensorFlow与众多开源软件集成在一起的示例:

Docker:

Dockerfiles中的一组示例,用于构建具有各种TensorFlow配置的容器。

Kubernetes:

用于在Kubernetes上运行分布式TensorFlow的YAML模板文件。

Marathon (on top of Mesos):

在Marathon中运行的TensorFlow的配置文件,Mesos的容器流程,它是一个集群管理器。

Hadoop:

使用TRRecords格式实现Apache Hadoop MapReduce的InputFormat / OutputFormat。

Spark-tensorflow-connector:

用于读取和写入Spark 2.0+ SQL DataFrame中的TensorFlow记录(TFRecords)的库。

考虑“生态系统”回购的一个起点,探索如何将TensorFlow与其他软件集成在一起。

4. 加速训练和预测

训练深度神经网络需要大量的计算能力,通常超过了通用微处理器集群可以提供的功能。 然而,随着深度学习的价值越来越明显,寻求更高性能的硬件变得至关重要。 GPU很快就被用于这个任务,后来,为这个用例专门设计的定制硬件也在开发中。 需要注意的是,如果没有足够的训练数据和足够的计算能力,深度学习将是无关紧要的,并且如今也不会取得的如此令人印象深刻的成功。

GPU和CUDA

使用图形处理单元(GPU)以大规模并行方式执行浮点计算已经引起了近二十年来重视性能的程序员的兴趣。 实际上,GPU上的通用计算(GPGPU)这个术语是在2002年创造的。NVIDIA一直是这个用例的一个长期推动者,并为公司的GPU开发了其专有的计算统一设备架构(CUDA)作为并行计算平台和编程模型。

训练深度学习网络已经成为这个领域的杀手级应用,NVIDIA借助NVIDIA深度学习软件开发套件(NVIDIA Deep Learning Software Development Kit)增强了其CUDA产品,该套件包含一个GPU加速的神经网络(称为cuDNN)所需的关键原语库。训练深度网络,与英特尔最快的CPU相比,使用NVIDIA提供的最快的GPU可以提供10到100倍的加速。

张量处理单元

在2016年5月世界了解Google IO的谷歌张量处理单元(TPU)之前,GPU被用于加速深度神经网络的基准。第一代TPU于2016年5月在Google I / O会议上宣布, 加速预测工作量(不是训练)使用量化的整数算术,而不是浮点。 第一个第一代TPU的优秀技术概况在网上发布,过去一年中提供了一篇非常全面的技术文章,可在线获得。重要的是,这个第一代TPU已经在Google的数据中心 一年多的时间,并帮助谷歌的AlphaGo赢下了世界冠军李世乭。

第二代TPU于2017年发布,可进行预测和训练,并进行浮点运算。 每个单独的处理器提供45 teraflops的性能,并被安排到一个四芯片,180 个teraflop的设备。 64个这样的设备组装成一个容器,提供了11.5千万亿次的深度学习性能。对于任何面向服务器的处理器来说,这两个芯片的关键在于它们不仅提供令人印象深刻的浮点性能,而且 比传统处理器消耗更少的电力。

为什么这对企业来说很重要? 因为TPU降低了模型训练所需的成本和时间。 尽管Google没有出售TPU的计划,但通过Google的云产品可以提供这种功能。 此外,考虑到公司控制整个堆栈,Google有一些有趣的选择可以在软件和硬件上进行优化。 Google并不是这个领域唯一的公司。 英特尔于2016年8月收购了一家定制芯片加速深度学习的小公司Nervana。

Google Cloud TPU和CloudML

Cloud TPU是目前提供alpha版本的Google Cloud服务,使用户能够使用第二代TPU对机器学习模型进行训练和预测。 您可以使用标准虚拟机和自定义虚拟机类型连接到Cloud TPU,该产品还与其他Google云端平台产品(包括Google Compute Engine和BigQuery)完全集成。这是企业利用Google TPU的最直接方式。Google还通过云计算机学习引擎(Cloud ML)的一些功能间接公开TPU。

5. 本章小结

对于任何采用深度学习的企业来说,面临的问题是如何融入组织现有的工作流程和数据通道。 TensorFlow数据流水线由三个阶段组成:(1)数据准备、(2)模型训练、(3)模型服务和预测。 这三个都直接从TensorFlow库和新兴的生态系统获得了大量的支持。 这个数据流水线与企业中的传统机器学习流水线非常相似,但有一个显着的区别。 对于深度学习模式,模型训练会花费更多的时间和资源。 生态系统试图通过支持多个GPU甚至Google自己的TPU来弥补这种情况。

参考资料:

  • Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott E. Reed, Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke, and Andrew Rabinovich, “Going Deeper with Convolutions”, Computer Vision and Pattern Recognition (2015).
  • N.P. Jouppi et al., “In-Datacenter Performance Analysis of a Tensor Processing Unit”, Proceedings of the 44th Annual International Symposium on Computer Architecture (June 2017): 1-12.
  • Patrick Kennedy, “Google Cloud TPU Details Revealed,” STH, May 17, 2017, https:// www.servethehome.com/google-cloud-tpu-details-revealed/.
  • Cloud TPUs – ML accelerators for TensorFlow | Google Cloud Platform.

结论

本报告试图介绍深度学习,以及它的使用和使用TensorFlow的企业会遇到的核心问题。我们首先介绍了深度学习的情况,特别是与更传统的机器学习技术相比较,并且盘点了一些使用了深度学习技术的最新应用。如果您的组织对使用音频、视频、图像或自由文本数据感兴趣,深入学习是值得探索的。接下来,我们盘点了深度学习的各种框架,特别关注以企业为中心的库,包括微软的Cognitive Toolkit、MXNet和Deeplearning4J。最后,我们讨论了TensorFlow库和现有的生态系统,以了解各种组件如何补充图书馆的核心功能,并协助网络训练和预测。我们希望这个概述能够帮助企业内的决策者和技术领导者驾驭不断发展的深度学习世界。

关于作者

Sean Murphy是PingThings Inc.的联合首席执行官,这是一家以人工智能为核心的创业公司,将先进的数据科学和机器学习带入全国的电网。在获得马里兰大学数学与电子工程双学士学位后,Sean在约翰·霍普金斯大学(Johns Hopkins University)的生物医学工程专业毕业,获得荣誉学位。他在约翰霍普金斯大学应用物理实验室担任高级科学家十多年,主要从事机器学习、高性能、云计算、图像分析和异常检测。从科学转向MBA课程,他毕业于牛津大学。他利用自己的商业头脑创建了一家电子邮件分析公司和一家数据科学咨询公司。 Sean还曾担任A系列资助的医疗保健分析公司的首席数据科学家,以及精品研究生教育公司Manhattan Prep的研究和指导主任。他是多个学术领域的多本书和数十篇论文的作者。

Allen Leis是一位经验丰富的数据工程师,有时也是一名数据科学家,位于华盛顿。他以前的工作需要为美国海军、美国参议院和非营利组织开发网络系统,他目前致力于数据分析的技术“狂野西部”以及机器学习。 Allen目前担任各种数据科学初创公司的顾问和软件工程师,以引导他们的数据摄入、清洗和机器学习。 除了投身于解决大数据工程和分布式计算问题,他平常会参与乔治敦大学数据科学证书课程的教学,或沉迷于马里兰大学计算机科学研究生的课程。

(全文完,感谢阅读)

  • 十二 15 / 2017
  • 0
Tech

锐眼洞察 | TensorFlow在企业中的应用——深度学习生态概述 ②(翻译)

作者:Sean Murphy & Allen Leis

原文:Considering TensorFlow for the Enterprise

译者:TalkingData Heisatis

本译文禁止商用,转载请注明来源与译者!

导语:本文翻译自 O’Reilly 的一篇报告,介绍了 TensorFlow 在企业中的应用,对深度学习生态进行了概述。报告篇幅较长,译文将分为三篇发布,本文为第二篇

第一篇回顾:锐眼洞察 | TensorFlow在企业中的应用——深度学习生态概述 ①(翻译)

屏幕快照_2017-12-11_下午6.36_.00_.png

第二章:选择一个深度学习框架

当决定采用深度学习时,第一个问题就是你应该选择哪个深度学习库(以及为什么)?深度学习已经成为许多大型科技公司的重要差异化因素,每一个都已经发展或正在倡导一个特定的选择。如谷歌的TensorFlow,微软的认知工具包(又名CNTK)。亚马逊正在支持学术界建造的MXNet,这导致有人质疑其内部开发的DSSTNE(Deep Scalable Sparse Tensor Network Engineer)的寿命。百度拥有并列分布式深度学习(PADDLE)库。 Facebook有Torch和PyTorch。英特尔拥有BigD等等。毫无疑问未来还会有更多选择出现。

我们可以对各种深度学习库进行评估,包括性能,支持的神经网络类型,易用性,支持的编程语言,作者,社区的支持等等。为了提高竞争力,每个库应该支持使用图形处理单元(GPU),最好是多个GPU和分布式计算集群。表2-1总结了十几种可用的顶级开源深度学习库。

图2-1.png

表2-1 12个选定深度学习框架的一般信息和GitHub统计信息(每个适用列中的“最佳”值以粗体突出显示)

支持的编程语言

几乎所有表内列出的框架都是用C ++实现的(可以使用Nvidia的CUDA进行GPU加速),但是在Lua中有后端的Torch和为Java虚拟机(JVM)写了后端的Deeplearning4J。使用这些框架的一个重要问题是他们支持哪些编程语言进行魔性训练,允许神经网络从数据中学习并更新内部权重的计算密集型任务,以及支持哪种语言进行推断,通过之前训练得到模型和新数据获得预测值。

由于推断是生产中比较常见的任务,人们可能会争辩说,库支持推理的语言越多,插入现有企业基础架构就越容易。一般来说训练过程需要专业技术,支持的语言可能会比较有限。理想情况下,一个框架需要可以支持这两个任务的同一套语言。

不同类型的网络

有许多不同类型的神经网络,学术界和工业界的研究人员几乎每天都在开发具有相应新缩写词的新网络类型。例如前馈网络、全连接网络、卷积神经网络(CNN)、受限玻耳兹曼机器(RBM)、深度信念网络(DBN)、自动去噪编码器、堆叠去噪自动编码器、生成对抗网络(GAN) 、循环神经网络(RNN)等等。如果要用图形或列表来表示不同的神经网络类型/结构,神经网络俱乐部是一种初步的选择。

已经受到广泛关注的两种网络类型是卷积神经网络,其能够处理图像作为输入,以及可以处理时序数据的循环神经网络及其变体(例如LSTM),支持将句子中的文本、时间序列数据、音频流等等作为输入。企业选择的深度学习库应该支持最广泛的网络,至少需要尽量与业务需求相关。

部署和操作选项

尽管机器学习和深度学习通常需要大量的训练数据,但深度学习确实预示着从大数据向大型计算的过渡。 对于企业来说,这可能是最大的问题和潜在的障碍,从更传统的机器学习技术过渡到深度学习。训练大规模的神经网络可能需要几周甚至几个月的时间;因此即使是50%的性能增益也能带来巨大的收益。 为了使这个过程变得可行,训练网络需要大量的原始计算能力,这些计算能力通常以一个到多个GPU,或专用处理器的形式出现。 理想情况下,一个框架将支持单CPU、多CPU、GPU环境以及他们的异构组合。

无障碍的帮助

提供帮助的程度对于库的实用性和成功性而言是非常重要的组成部分。 文档量是衡量平台是否成功(及其潜在寿命)的有力指标。大量的文档促使用户容易选择和使用库。 随着生态系统的不断发展,在线教程、电子书籍和在线图书、视频、在线和离线课程,甚至会议等多种形式的文档都是需要的。特别要注意的是企业商业支持的问题。尽管上述所有库都是开源的,但只有一个库提供直接的商业支持:Deeplearning4J。 第三方很可能会更愿意提供咨询服务来支持每个库的使用。

1. 企业级的深度学习

从十几个深度学习框架中进行选择,我们对其中四个更适合企业生产环境部署的库进行了深入研究:TensorFlow、MXNet、Microsoft Cognitive Toolkit和Deeplearning4J。 为了大致估算受欢迎程度,图2-1显示了按Google搜索量衡量的搜索词相对全球范围内的兴趣。

图2-2.png

图2-1 在深度学习开源框架中,全球搜索“随时间推移的兴趣” 最大相对值(100)出现在在2017年5月14日这周

TensorFlow

Google在处理大规模数据方面有着丰富的历史经验,运用机器学习和深度学习为消费者和企业创造有价值的服务。 当Google发布开源软件时,业界都会比较关注,特别是有新版本发布时。 2011年,Google内部使用名为DistBelief的系统进行深度学习,该系统能够使用“大规模机器集群在深度网络中分发训练和推理”。凭借多年运营这个平台的经验, Google最终于2015年11月发布了 TensorFlow。

TensorFlow是用于表达机器学习算法的界面,以及用于执行这种算法的实现。 使用TensorFlow表达的计算可以在各种各样的异构系统上执行,从移动设备(例如手机和平板电脑)到大型分布式系统(数百台机器)以及数千个计算设备(如GPU)。 该系统是灵活的,可以用来表达各种各样的算法,包括深度神经网络模型的训练和推理算法,它已经被应用在十几个计算机科学等研究领域,进行机器学习系统部署和投产, 例如语音识别,计算机视觉,机器人学,信息检索,自然语言处理,地理信息提取和计算药物成分等。

有些人认为这是一个赢家通吃的领域,可以说TensorFlow已经赢得了开发者的心。 虽然这个声明可能还为时过早,但TensorFlow目前拥有令人印象深刻的源动力。 几乎所有的指标都显示,TensorFlow都是深度学习领域最活跃的开源项目。 现在已经产生了相当多有关TensorFlow的书籍和高端会议。以Google搜索量衡量,已经获得了全球范围内广泛的关注和兴趣,并且具有最多的有关活动聚会。 对竞争对手来说,这种领先将很难被超越。

MXNet

MXNet是我们将深入研究的最新的深度学习框架。 它于2017年1月进入Apache孵化,截至2017年10月的最新版本是目前已经发布 1.0 正式版。 问题是,由于其比较新而且竞争对手很强大,企业是否应该考虑到这种替代性的深度学习框架呢? 亚马逊在2016年11月宣布:“Apache MXNet是AWS 选择的深度学习框架”。 MXNet背后的创始机构之一,卡内基梅隆大学和CMU机器学习系教授Alexander Smola博士,2017年7月加入亚马逊可能并非巧合。

为了进一步证明MXNet 的竞争力,最新的框架版本允许开发人员将MXNet深度学习模型转换为Apple的CoreML格式,这意味着数十亿iOS设备现在可以为使用MXNet的应用程序提供推理功能。 另外请注意,苹果公司是与上述任何一个深度学习框架都没有关联的大型科技公司。

什么是MXNet,它是如何改进现有的库的?

MXNet是一个多语言机器学习库,用于简化机器学习算法的开发,特别是深度神经网络。 嵌入在宿主语言中,它将声明性符号表达式与命令张量计算相结合。它提供了自动分化来推导梯度。 MXNet具有计算和内存的高效性,可运行在各种异构系统上,从移动设备到分布式GPU集群。

MXNet是由许多顶尖大学(包括CMU,麻省理工学院,斯坦福大学,纽约大学,华盛顿大学和阿尔伯塔大学)合作而成的。从其最近的开发情况看,作者有机会已有的深度学习框架中学习并改进。 框架努力提供灵活性能。 开发人员可以混合使用符号和命令式编程模型,并且可以通过动态依赖调度程序来并行化两者。 开发人员还可以利用预定义的神经网络层来构建复杂的网络,代码很少。 重要的是,MXNet远不止支持Python。 它也具有完整的Scala、R、Julia,C ++、甚至Perl的API。 最后,MXNet代码库很小,专为在GPU和CPU上进行高效扩展而设计。

微软认知工具包(CNTK)

尽管互联网崛起,微软仍然是企业领域的主要厂商之一。 因此,微软研究院推出深度学习框架应该是不足为奇的。 以前称为“计算神经工具包”(CNTK),该工具包显然是从微软研究院的世界级语音识别团队中涌现出来的,然后推广到其他问题集。 2014年出现了第一篇综合报告,2016年1月在Github上发布了该软件。2016年,该软件在会话语音识别领域取得了人类的表现。 与竞争对手相比,该工具包有望实现高效的可扩展性和令人印象深刻的性能。

Deeplearning4J

Deeplearning4J在这个列表中有些奇怪的框架。 尽管Python已经成为深度学习的近乎事实上的首选语言,但Deeplearning4J是在Java中开发的,旨在使用JVM并与基于JVM的语言(如Scala、Clojure、Groovy、Kotlin和JRuby)兼容。 请注意,底层计算采用C / C ++和CUDA编码。 这也意味着Deeplearning4J可以同时支持Hadoop和Spark。 其次,许多早期的深度学习框架是由学术界出现的,而第二波则是由大型科技公司兴起的。 Deeplearning4J是不同的,因为它是由一个位于旧金山的小型科技创业公司(Skymind)在2014年创建的。尽管Deeplearning4J是开源的,但还是有一家公司愿意为使用该框架的客户提供付费支持。

2. 行业观点

Jet.com提供了深度学习库选择的一个有趣的例子。 Jet.com是一家从上到下采用微软技术栈的公司,是美国为数不多的专注于F#编程语言的商店之一(他们也使用C#和.NET框架)。 对于云服务,该公司使用Microsoft Azure。 尽管重度依赖微软,Jet.com还是使用TensorFlow进行深度学习。 该公司最初是从Theano开始的,但在TensorFlow 发布之后迅速转换到了TensorFlow。

TensorFlow运行在具有在Microsoft Azure云中运行的GPU的虚拟实例上。

作为一家技术创业公司,PingThings在选择不同的技术方面有很大的余地。 Google在这个领域的突出地位以及大量的文档和教程都是选择TensorFlow的强大动力。 然而,PingThings正在与国家科学基金会(NSF)和高级研究计划署能源(ARPA-E)资助的项目与多个研究机构的合作者合作,同时在公用事业部门内部署硬件。 因此,Google设计TensorFlow来平衡研究和大规模运营的需求是非常重要的事实。 Tensor2Tensor(我们稍后讨论的生态系统的一部分)特别吸引人,因为它专注于序列数据。 MXNet是一个有趣的新选项,未来的发展将受到关注,特别是考虑到其卓越的性能和亚马逊的支持。

3. 本章小结

TensorFlow做得非常好:有竞争力的性能,对不同神经网络类型的强大支持,大量的硬件部署选项,支持多GPU、多种编程语言选项等等。然而,库的魅力超越了这个功能集。Google通过分布式文件系统和Map-Reduce计算框架的结合,在帮助启动大数据革命方面发挥了重要作用,并在今天继续领跑业界。 此外,谷歌内部有许多成功的技术迭代,然后看到广泛的发布。受欢迎的容器编排系统Kubernetes就是这样一个例子,它是早期内部系统(如Borg和Omega)的多年经验和教训的结果。谷歌在网络技术和软件工程方面的推进规模,学术界和工业界之间的平衡,似乎特别适合于深度学习的淘金热。

TensorFlow继承了这种合理性,目的是充分灵活地进行深入的研究,同时也足够强大,以允许其模型的生产部署。未来可能会出现更新的框架,可以借鉴TensorFlow的经验教训,改进库的各个方面,提供多种编程方法,或提供更高的性能。上述许多库都试图做一个或多个这样的事情。 然而,TensorFlow正在不断应用这些教训,努力提高性能并探索新的方法。 只要Google的重量和努力落在TensorFlow后面,它将继续成为深度学习库的一个强大、安全、实际上默认的选择,特别是考虑到我们在第3章中描述的生态系统。

参考资料:

  1. J. Dean et al., “Large Scale Distributed Deep Networks,” Advances in Neural Information Processing Systems 25 (2012).
  2. M. Abadi, A. Agarwal, P. Barham, E. Brevdo, Z. Chen, C. Citro, G.S. Corrado et al., “TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems”, preliminary white paper (2015).
  3. T. Chen et al., “MXNet: A Flexible and Efficient Machine Learning Library for Hetero‐ geneous Distributed Systems”, NIPS Machine Learning Systems Workshop (2016).
  4. A. Agarwal et al. (2014). “An Introduction to Computational Networks and the Com‐ putational Network Toolkit”, Microsoft Technical Report MSR-TR-2014-112 (2014).

(未完待续)

  • 十二 15 / 2017
  • 0
Data

锐眼洞察 | 隐私合规新时代(翻译)

作者:Dimitri Sirota

原文:Always New Era Continuous Privacy Compliance

译者:TalkingData全球业务负责人 戴民

本译文禁止商用,转载请注明来源与译者!

距欧盟GDPR实施仅几个月,就有越来越多的企业在思考应该做些什么,使其业务符合新规的要求。很多企业首先尝试的是做一些基于隐私影响评估(PIA)的调查,因为对于隐私领域的专家来说,这是他们最熟悉的方法。但是新规GDPR的核心是数据保护,包括数据安全和数据责任。这两者中的任何一个都不能通过调查来实现。要想满足这两个要求,需要丰富的数据知识以及具备监测变化、风险活动以及潜在违规行为的能力。PIA在应用过程中能发挥其应有的作用,但是在隐私设计和隐私运营方面,只有数据驱动的持续隐私监测才可以做到。

事与愿违

近年来,数据违规行为风行,个人数据错误使用事件频发。为应对此类问题,立法者和监管者想方设法制定各种措施来保护数据。但是,如果对储存的个人数据没有进行详细的统计计算,很多措施是无法实施的。这在很多方面也反映了很多企业在保护其最隐私的信息资产的方式发生了巨大变化。

隐私领域的专家过去是通过制定更合理的政策和流程来保证合规性,而PIA在某些方面就是用来衡量政策和流程的有效性。但是证据显示,数据违规发生的频次和范围仍在加剧。这无疑证明调查研究在数据保护、数据隐私和数据政策方面是无效的。通过主观评测或者不完整的调查问卷来降低数据风险几乎是不可能的。管控风险应从制定客观精准的衡量指标开始。

数据风险在不断演化

过去几年,在评估第三方风险和供应商风险管理领域,客观风险评价指标发生了几次演化。过去,第三方风险也是通过表格或者问卷的形式进行评估的。然而,这种形式也限制了评估的重复性、客观性和预测性。因此,最近几年,第三方风险评估变得更加实用,对于那些想降低风险的人来说,这种结果性评估能够为他们提供一定的指导。

随着BigID几个工具的发布,这些工具主要是用于寻找、匹配和分析个人数据。风险评估已经从过去的基于调查的主观性评估,转化为数据驱动的持续性风险评估。了解数据收集或加工是否超过法律或者商业政策的红线,已经成为了数据监测的一个功能。数据合规和风险管控的方法,已经从过去单纯的靠猜测转化为24小时不间断的监测。

运营隐私

像GDPR这样的法规不断地在鼓励公司去运营隐私,从研发到生产都要能够保证隐私不被泄漏。这就要求数据风险是能够被监测和衡量的。调查能够让一个企业感觉他们所作所为是符合数据隐私法规的,但是那只是一种假的安全感。去真正的运营隐私,需要有数据意识,并在研发和生产过程中持续衡量隐私。BigID就是致力于运用数据知识24小时不间断保证隐私合规和安全。

  • 十二 15 / 2017
  • 0
Ideas

锐眼发现 | 2018年用户体验设计趋势

作者:Anthony Miller

原文:The State of UX for 2018

译者:倪尔东

审校:郑几块

转载于:人人都是产品经理

 

2017年就要过去了,让我们预测一下2018年的用户体验演变趋势。

本文将回顾2017年数字世界中的显著变化,并将展望2018年在设计和开发领域让我们继续保持领先的那些趋势。

一、更简单的导航

导航体验是2017年设计师中的热门话题。设计师殚精竭虑,拿出熬秃少年头的精神,就是为了创造更易用的用户体验,而导航设计在其中作用重大。

线性导航

为了简化导航体验,许多应用程序和网站聚焦于创建线性(或分步)的导航体验。

互联网产品和开发者利用这种类型的导航,让用户感受到每一个“下一步”之间的逻辑关系。这种类型的导航尤其适合目标驱动型的应用程序(例如Uber)和电商网站(例如Amazon和Best Buy),在这些应用和服务中,用户都有明确的使用目标。

语音交互

语音交互(VUIs)已经成为一种更好的交互选择。

自然语言处理能力发展迅猛,这使得程序能够处理各种不同类型的语音指令。

资料显示,有相当比重的年轻人正在使用语音指令来处理任务

在明年,语音交互将会跳出移动应用的范畴,大举进入物联网领域和智能家居系统。

不久的将来,我们将会拥有更加先进的语义识别能力,从而增强我们和系统的交互效率。

二、减除冗余和理解增强

如今,减除视觉冗余和增强界面的可理解性已经成为许多交互设计师的目标,并且他们颇为热衷此道。

设计师们首先删除无关信息(噪音),然后通过强化内容并且使用简洁的设计语言,从而达到有序增强目标信息(信号)的目的。

内容优先

内容优先的设计方法与设计中的极简主义息息相关。

设计师为了达到“少即是多”的目标,删除掉所有无关元素、聚焦于真正重要的东西——内容和功能。界面中的元素之间大量留白,同时减少元素的复杂修饰。

但是,这种方法的缺点是:界面有时太过于中性化。

Instagram for iOS (2015 vs. 2017)

简洁的视觉语言

我们都知道:强烈的视觉层次更容易让用户与产品进行交互。

在网站和APP的使用背景中,强烈的视觉层次意味着用户能根据清晰的视觉引导在屏幕上有序阅读。强烈的视觉符号(例如功能性按钮的鲜明颜色)结合简约的布局可以创建一个非常简单轻松的用户体验。

提交按钮的鲜艳颜色. 图片来源:Airbnb

大标题

大标题有大量留白和大字体两个特点。

大标题为用户提供两个主要的好处:让文本更突出,也更方便阅读。

苹果在iOS11中使用粗体标题

三、以不同的目标为导向使用动效

动效已经成为交互的一部分。

在交互设计中有两种最重要的动效类型——功能型动效和愉悦型动效(情绪安慰型动效)。

功能型动效

功能型动效能为用户带来界面清晰有逻辑的感觉,这种类型的动效能用来简化与产品交互的过程。

刚发布的iPhone X和手势交互动效将被用来描述复杂的转换和空间关系:

功能型动效能够使复杂变化变得容易使用户理解。图片来源:Jae-seong, Jeong

情绪安慰型动效

为了创建更人性化的体验,开发者们在用户使用过程中增加了令人愉悦的交互细节——但是这些细节没有任何功能性的目的,主要用于建立与用户情感上的联系。

利用动效来增强体验。图片来源:Andy Orsow

四、视频的优势

视频内容在2017年的市场营销领域出现井喷式增长。

根据 Hubspot 统计:每周有78%的用户在线观看视频,每天有55%的用户在线观看视频。

以注意时长为导向的视频内容

自从进入移动互联网时代,人类的注意时长从2000年的12秒降到了如今的8秒。

市场营销人员以注意时长为导向,调整他们的内容——就像360度视频和Facebook Live都是这种适应的产物。

主页上的欢迎视频

视频从一开始就设计成吸引用户注意力之用——这就是为什么很多网站使用视频作为欢迎页面的原因。

特斯拉不仅向网站访客介绍公司产品,他们还会放一个关于产品故事的视频,这将创造一段难忘的体验。

五、情绪化智能设计

人机关系已经不那么理性,而变得更加情绪化。

我们因机器帮助到我们达成目标感到快乐,因电脑出了故障而迅速恼怒。

在2017年,我们看到了向情绪化智能设计的转变的趋势。

情绪设计旨在创建一种基于理解人类用户感受的反馈系统,它能够创造出正面积极的情绪反馈。

失误地图

在很长一段时间内,设计师基于理想的用户行为创造体验。

从2017年开始,很多设计师认识到:为非理想的用户行为创造体验也同样重要。

失误地图主要用于:发现用户在使用产品时发生的消极问题的场景。

产品经理会试着理解造成用户“错误”使用的场景,通过对用户犯错场景的理解,产品经理会想办优化解决这些问题——至少让他们看上去不那么令人尴尬。这是给予用户的一种人性化的反馈。

失误地图的一个正面案例来自Slack:如果你有一条写到一半的消息然后点击了退出,你会看到一个铅笔的标志提示你还没有写完这条消息。(译者注:类似于微信给人发消息写到一半退出到聊天列表页,你会看到红色的[草稿]标记符)

出现铅笔标志意味着你有写到一半未发送的消息。

在APP中出现更多微交互

在移动设备上,微交互正迅速成为很多设备独有的特性,它们能用来创造更简洁的体验。

简单的手势和恰到好处的微妙反馈,使我们在手机和产品间的交互变得自然流畅,如雨落荷叶般不经意地让人心情愉悦,却又转瞬即逝不拖泥带水。

Instagram Stories中的视觉反馈

传统的交互

聊天机器人和会话的用户界面(CUI)在2016年流行起来,聊天机器人和智能助手将会保持持续增长。

CUI和传统GUI的一个重要区别是:用户与产品交互的方式——会话交互会感觉更人性化。这就是为什么对话机器人如Zo和小冰很受用户欢迎的原因。

图片来源:EJ Hassenfratz

六、内容愈加重要

内容为王,内容是用户使用APP或浏览网站的原因。

在2017年,我们发现了两个和内容交互直接相关相关的趋势:

Facebook将以内容为核心

在2017年,Facebook成为最重要的内容消费服务之一;它不再是起点,而是一个强大的新闻和消息中心(译者注:国内参考微信)。

大公司助力识别内容的可信度

今天,内容可信度是一个十分严重的问题。每时每刻,数以百万计的内容被生产出来,我们将很难从中区分事实和假象。

根据由斯坦福大学的一项研究显示:很大比例的用户无法从他们的消息流中辨别真伪。

内容可信度的问题在2016年美国总统竞选活动期间尤其明显,这证明谎言比真相传播的要快。

幸运的是,像Google和Facebook这样的大公司已经意识到了这个问题,并开始测试“事实核实”功能,帮助用户辨别真伪。

七、可穿戴设备成为手机的替代品

随着Apple Watch3 Cellular的发布,很多人看到可穿戴设备的新纪元;最后,智能手表极有可能会成为手机的替代品。

如果你的手上戴有一块功能强大的手表,为什么你还会携带沉重的砖头在口袋里呢?

很明显,我们看到新设备已经翻开了新的篇章开始书写自己的历史,一段时间后,它会有自己的目标受众。

图片来源:Engaged

八、更简单的认证

登录名和密码的组合(也称为“证书”)是App和用户登录过程中所需要的信息——我们都知道,这是一种老掉牙的方式,真希望过去几年在这方面能有显著的改进。

在未来一年,这种认证方式将会有一些显著的变化。

使用聪明的认证方式

在大多数情况下,当人们忘记密码时他们会试图重置。

虽然重置选项作为忘记密码时的强制选项,不失为一种好的解决方案;但它仍然有一个重要的问题——用户为了登录需要很多额外的操作(如点击“重置密码”,查看收件箱消息,点击重置链接并创建一个新的密码)。在简化的过程中,许多应用和网站使用了创造性的登录方式,如临时密码(一次性密码将发送到手机):

Ebay会根据账户绑定手机号验证发送一个一次性密码,或者通过验证手机号更换整个账户/密码对:

例如Mdium和他的“神奇链接”

生物认证

今天很多设备使用不同的生物认证方式作为替代密码,在2018年,我们会通过一个更令人兴奋的方式登录到设备和应用。我们将使用最受保护的,也是最易于使用的方式——Face ID。

随着Face ID正式应用于iPhone X,它很有可能会成为未来的主流认证方式。

Craig Federighi在2017年的WWDC上展示Face ID

双重认证

盗取用户数据的网络攻击事件频发,这使得企业去思考他们的应用程序是否安全。

双重认证正迅速成为许多服务的认证方式——它增加了一层保护,可以显著降低用户设备数据失窃的概率。

图片来源:MIT

九、更个性化

越来越多的公司通过技术手段为用户提供个性化的内容推荐服务。

据Gartner的报告,用于识别客户意图的智能个性化引擎将使数字企业增加高达15%的利润。

机器学习

机器学习领域的重大进展,让许多公司能够在应用和服务中利用算法满足用户提供个性化的需求。

最好的个性化推荐的例子是亚马逊、Spotify和Netflix服务。

Netflix分析用户的兴趣并向用户推荐他们可能感兴趣的剧集

Netflix分享了它如何利用机器学习技术服务于个性化推荐的细节

移动应用的LBS

由于手机随时带在身边,手机上的APP可以使用位置数据来提供与用户的位置相关内容,这使服务更加适应周围的环境。

一些应用程序,例如Uber,已经使用这项属性来减少用户所需的操作。在2018年,我们将看到更多的应用程序通过使用这些功能来提升用户体验。

Uber外卖服务

十、无现金支付的崛起

无现金支付已经成为一个必然的趋势,使用非现金交易的人数在2017年实现了翻番。

根据Junpier Research的一封报告显示,苹果支付和安卓支付的用户数将在年末分别达到8600万和2400万。

相比于信用卡,安卓支付和苹果支付都是更安全的支付选项——毫无疑问,人们会更爱使用移动支付。

图片来源:Daily Express

这对设计师和开发者来说意味着什么呢?这意味着2018年我们将会为产品提供同时支持线上和线下场景的苹果/安卓支付的默认选项。

在线使用安卓支付

十一、增强现实地位增强

2018年会是增强现实年,很多人将会以手机作镜头进入虚拟世界。

Google Lens

Google Lens 是一种基于“增强现实”技术的应用,现在Pixel和Pixel 2手机上的谷歌助手已经搭载了这项技术,它能够让用户通过摄像头拍摄真实世界来获取信息。

好消息是:如果你想使用Lens从你周围的世界收集信息,你不再需要打开谷歌照片;你可以在使用人工智能助手时利用相机按钮,每次你按下快门Lens就会执行一个搜索。

Google Lens 的设计旨在提供可视化的信息展现方案。图片来源:Engadget

会出现更多能解决实际问题的AR应用

与仍处于早期探索期的VR不同,AR已经快速成为一项能向用户传递真实价值的技术手段。

今年,我们已经看到了类似宜家AR应用在帮助用户设计客厅时发挥的强大作用:

因为你能够将虚拟物品放置在真实物品和环境中,你向这些虚拟物品的潜在客户打开了新世界的大门

又或者你可以用AR来测量真实世界的物件,而无需使用皮尺来测量:

利用谷歌和苹果的AR开发者工具,开发AR应用会变得更容易

2017年苹果和谷歌同事发布了各自的移动AR开发平台——AR kit 和 AR Core. 这些平台都拥有高水平API,它们为开发者提供了可靠并且简单易用的开发和使用方法。

还有更好的是:目前已经有无数设备能够支持这些平台开发出来的应用。

移动AR技术平台使虚拟物品与物理现实环境结合得毫无违和感

十二、VR仍是潮流

很多人非常期待VR成为下一件大事,很不幸,2018年我们并不会看到VR像智能手机一样走进每家每户。

VR平台在成为大众平台之前需要经历一系列的挑战,但是,我们仍会在今年看到VR会有所进步。

VR设备会降价

对于硬件开发者来说,降低VR设备成本并让大部分人负担得起已经成为了最重要的目标。

就在几个月前,Oculus Rift和HTC Vive同时大幅降低了VR设备的售价,类似Google Daydream这样低价格设备的崛起会让更多人使用这项技术。

VR和Unity 3D

在接下来的一年,VR技术依然主要用于娱乐,这意味着开发者会使用Unity’s 3D 游戏开发平台为游戏发烧友开发惊险刺激的VR游戏。

2018年,我们期待看到这个游戏开发平台变得更加强大,并且有可能出现其他类似Unity’s VR的编辑开发平台。

浏览器中的VR

Mozilla的WebVR有机会在虚拟现实领域成为下一个大事件。有以下几点原因:

首先,它是最便宜的技术(只要使用与谷歌Cardboard和GearVR就可以了)。

第二,开发人员可以使用相同的编程语言来创建WebVR应用(不需要学习一门新语言,你可以使用JavaScript创建虚拟现实应用程序)。

最后,WebVR使用的APP和服务无须安装,只要打开链接,你就可以进入虚拟现实。

A-Painter 能够让你通过浏览器在虚拟现实中作画

附录:2018年网页产品设计的变化

今天设计师和开发人员使用现代方法,如敏捷和精益交互设计让他们快速迭代,创建产品,满足用户的需求和希望。

2018年我们将会看到一些产品设计会发生重大变革:

从MVP到MLP

今天很多公司都致力于创造MVP(或最小可行产品)来实现他们追求的价值。很明显,2018年MVP是不够的。

未来的设计将拥抱MLP——最小可爱上的产品(Minium Loveable Product),体验完美结合的可用性和用户体验需要将访问者转化为顾客。

MLP允许更容易传达利益相关者和首次用户接受该产品。

图片来源:Laurence McCahill

交互设计和服务设计的结合

在2018年,交互设计和服务设计应该会最终融合在一起。

由于越来越多的服务是由数字化的方式呈现和提供给用户,这两个领域已经开始发生融合了。

图片来源:Satu Kyröläinen

结论

就像所有的趋势和热潮一样,以上提到的有些会继续存在,而有些可能会消失。

但为了创造卓越的用户体验,对设计师来说:请别忘记初心——让人们生活得更好。

  • 十二 13 / 2017
  • 0
Tech

锐眼洞察 | TensorFlow在企业中的应用 ——深度学习生态概述 ①(翻译)

作者:Sean Murphy & Allen Leis

原文:Considering TensorFlow for the Enterprise

译者:TalkingData Heisatis

本译文禁止商用,转载请注明来源与译者!

导语:本文翻译自 O’Reilly 的一篇报告,介绍了 TensorFlow 在企业中的应用,对深度学习生态进行了概述。报告篇幅较长,译文将分为三篇发布,本文为第一篇

屏幕快照_2017-12-11_下午6.36_.00_.png

简介

很多企业考虑在自己的业务场景中应用通常所说的深度学习特别是TensorFlow框架,本报告就从这些企业的角度分析TensorFlow深度学习框架及其生态系统。许多企业对深度学习不是很感冒,而是将技术视为对现有数据分析流水线的扩充或替换。 我们发现,使用深度学习的决定引发了复合决策的分支连锁反应。 在考虑这个转变时,我们强调这些分支,并提供可用的选项,希望为考虑旅程的人们指明方向。 更具体地说,我们考察采用深度学习的潜在理由,研究各种可用的深度学习框架,最后从特定方面分析TensorFlow及深度学习生态。

由于TensorFlow的流行,这个框架不乏教程、报告、概述、演练,甚至还有书籍(如O’Reilly自己的Learning TensorFlow或TensorFlow深度学习)。 我们不会深入研究神经网络的基础知识、线性代数、神经元类型、深度学习网络类型,甚至如何用TensorFlow来启动和运行。本报告旨在帮助企业学习和决策。

我们从高层观点和两个不同的企业角度提供这些信息。其中一个观点来自与沃尔玛有限公司(Walmart,Inc.)2016年秋季收购的大型网上购物平台Jet.com的关键技术人员的讨论Jet.com使用深度学习和TensorFlow来改进目前由其他算法实现的诸多工作。第二个来自工业物联网(IIoT)创业公司PingThings,它将包括机器学习和人工智能(AI)在内的以时间序列为中心的数据平台,从发电到电力分配。虽然PingThings是一家创业公司,但公司与来自电网传输和分配部分的传感器的流式时间序列数据交互。这需要与公共事务部门、大型的传统企业进行广泛的合作;因此,PingThings面临着一家大公司相应的信息技术关注和需求。

第一章:选择使用深度学习

在采用深度学习这项新技术之前,企业首先需要明确的问题是,什么是深度学习?为什么要用这项技术?对于第一个问题,微软研究院李登做出了如下简要回答:

深度学习是一类机器学习技术,从2006年开始大量开发,其分层体系结构中的非线性信息处理的许多阶段被用于模式识别和特征学习。

术语“深度”是指网络中隐藏层的数量,通常大于一些相对较少的数目(例如5或7)。

我们不纠结于这个问题,因为有很多关于深度学习的书籍和文章可以参考。 但是,第二个问题仍然存在:如果现有的数据科学手段已经不但有效而且具备相当的操作性,为什么要费时费力,并且消耗组织资源来进行实现这项技术转换。

1. 一般原理

从一般角度来看,投资深度学习有很大的理由。真正的技术革命,即影响社会多个部分的革命,都是通过从根本上改变特定能力或任务的成本曲线来实现。以传统的微处理器为例,在计算机出现之前,执行数学计算(加法、乘法、平方根等)对于人们来说是昂贵且耗时的。随着数字计算机的出现,算术成本急剧下降,这产生了两个重要影响。第一,所有依靠计算的东西,最终都会被降低成本并广泛使用。第二,许多以前限制问题解决方案的的假设不再有效(一个关键的假设就是数学计算成本很高)。出现了很多新机会,用曾经被认为不可能或财务上不可行的新方法来回顾旧问题。因此,计算机的普及让许多问题可以被重新定义为数学问题

可以说这种由深度学习所代表的“人工智能”的最新浪潮是技术上的一个阶段性变化。人工智能并不是永远改变计算的成本,而是不可逆转地降低了做出预测的成本。由于预测的成本下降以及预测的准确性提高,基于预测的商品和服务的价格会下降(同时质量可能会提高)。 一些现代服务,如天气预报,显然是基于预测。 其他如企业物流和运营等将继续沿着这个方向发展。 亚马逊根据本地客户下周订单确定本地仓库库存的能力将不再是例外,而是新常态。

此外,其他问题也将转化为预测问题。 拿自动驾驶汽车这个非常不受约束的问题来说吧。软件需要考虑的路况情况数几乎是无限的,并且永远不能在软件中明确列举。 然而,如果把问题重新定义为预测人类驾驶员在特定情况下会做什么,那么这一挑战性的问题就更容易处理。根据当今企业运营对预测的依赖程度,无论企业的实力依赖于企业内部还是外部,深度学习都将成为下一代成功企业的推动因素。

2. 特定的激励措施

采用深度学习可以提供显著的优势。深度学习和人工智能这么受关注,是因为它们可以提供可重复的优秀结果。深度学习是机器学习的一个子集,也可以被认为是AI的一个子集(图1-1)。

图1-1.png

图1-1 时变维恩图:人工智能,机器学习和深度学习间的关系

基于深度学习的解决方案不仅在某些任务中的性能超过了其他机器学习技术,与人类的能力相近,甚至在某些情况下超过了人的能力。例如,我们来看看自动机器翻译(从一种语言到另一种语言的文本翻译)性能改进的意义。早期,这种类型的软件比较新颖的,只在有限的少数情况下可能有用。随着翻译准确性的提高,翻译的经济性开始发生变化,适合自动翻译的案例也随之增多。由于翻译的准确性接近人工翻译,潜在的经济影响大了很多。一个翻译人员可以快速查看软件翻译的输出,从而增加翻译输出。 可以减少给定翻译任务量所需的翻译人数。最终,由于基于软件的方法超出了人工翻译的性能,翻译人员完全被软件所取代,软件可​​以每周七天,每天24小时按需运行。截至2016年底,Google翻译服务完全转移到了Google神经机器翻译系统——一种深度长短期记忆网络(LSTM)。

让我们再来看一些其他可以证明深度学习技术给企业带来潜在影响的例子。

3. 使用序列数据库

音频和文本是两种典型的序列数据库,这类数据相邻字母/音频片段之间距离越近,关系越紧密。格式自由、非结构化的文本对于传统算法处理方法来说是一个具有挑战性的数据类型。其他结构化数据的例子包括作为时间序列的浮点值捕获的传感器数据流。 如果企业拥有传统工程学或足够的科学背景,可以将序列数据库视为一维信号或时间序列。

自动语音识别

高斯混合模型(GMM)一直用于将语音转录成文本,直到深度神经网络和递归神经网相继出现,并且在过去近五年的时间内收到最好的效果。任何在Android手机上使用过Google智能助理的人都会亲身体验到这项技术的功能,它的业务影响是巨大的。

4. 使用图像和视频

图像是在二维空间数据关系密切的数据源。它的固有性质即假设图像中彼此相邻的点比相隔更远的点具有更强的关系。视频数据可以被看作一系列图像,且元素的空间关系在每个帧内保持,并且常常在后续帧中继续保持。

图像分类

图像分类是计算机科学和计算机视觉领域的一个经典问题。 为了对输入图像进行分类,算法从一组有限的预定义类别中为图像分配一个标签。 请注意,图像分类假定每个图像中都有一种物体。

图像分类一直被认为是计算机科学中一个非常具有挑战性的问题,因此每年都要进行视觉识别竞赛。在ImageNet大规模视觉识别挑战赛LSVRC-2010中,多伦多大学的深度卷积神经网络以6000万个参数和65万个神经元取胜。在2012年的比赛中,同一个网络的变体赢得了15.3%的错误率, 显着超过了第二名竞争对手的26.2%的错误率。 这种性能的飞跃是非常罕见的,有助于建立以卷积神经网络为主的技术方法。

自动游戏

Google的DeepMind团队表明,一个神经网络可以学习从古老的Atari 2600游戏机上玩七种不同的视频游戏,表现比以前的所有算法都要好,甚至胜过三个人类游戏专家。这个卷积神经网络是使用控制台直接馈送(基本上和人类玩家视角相同)和一个强化学习的变体Q- learning进行训练的。用视频反馈训练人工智能来执行有目标的复杂任务对企业有重大的意义。

自动黑白图片/视频着色

卷积神经网络已被用来对黑白照片进行着色,以前这种时间密集型操作过程有专家完成。加利福尼亚大学伯克利分校的研究人员用“全自动系统”和“人工辅助”两种方式“攻克了幻化彩色照片的幻觉问题”。尽管大多数企业没有对老电影着色的需求,但这一研究方法不仅证明了以深度学习技术为基础如何自动化地完成以前需要创造性专业知识才能完成的任务,也证明了人工智能和人类能够协作加速时间密集型任务的完成。

模仿毕加索

生成对抗网络(GANs)在深度学习领域中引起了相当大的轰动,并基于两种模式竞争来改善整体效果。 用原文的话说:

“生成模式可被看作造假者团队,试图生产假币同时避免被检测,而鉴别模型类似于警察,试图检测假币。两种模式间的竞争促使两边同时改进他们的方法,直到伪造品与真品无法区分。”

GANs被用来“学习”毕加索等著名画家的风格,然后把照片转换成模仿画家风格的画作。

5. 企业举例

为了更好地了解如何使用深度学习,让我们来看看行业内的几个例子。

Jet.com

Jet.com为这些新技术和能力如何转化为企业利益提供了一个很好的创新的例子。 Jet.com提供数百万种待售产品,其中许多是由第三方合作伙伴提供的。每个新产品都属于上千类别中的一类。过去,这种分类依赖文本描述和合作伙伴提供的信息。有时候这些信息是不正确、不准确或不一致的。 但是,通过使用TensorFlow和深度学习,Jet.com将产品的照片集成到分类通道中,显著提高了分类的准确性。因此,深度学习允许将新的数据类型(图像)快速集成到传统的数据分析流程中,以改善业务运营。

Jet.com使用深度学习解决的另一个问题是在搜索框中处理文本输入。例如,如果客户在搜索框中键入“矮脚电视柜”,则系统必须精确地解析这种自然语言来定位该客户意图的项目。

6. 潜在的缺点

和其他新技术一样,深度学习也有其缺点,特别是从企业角度来看。每一种新技术都存在一个共同的最首要的问题,其中有少数新技术尤其如此。例如大量的报道表明,数据科学家的数量急剧减少,深度学习专家更是极端缺乏。此外,大多数技术公司,谷歌、Facebook、微软、亚马逊、Twitter等,正在为这个稀缺人才而战,这既增加了人力成本,也增加了薪水成本。

从技术的角度来看,深度学习有几个潜在的缺点。首先,用最简单的技术解决问题几乎总是最好的。如果线性回归是有效的,那就用它来代替更为复杂的深度学习方法。其次,在需要时,深度学习需要大量的资源。训练神经网络不仅需要大数据集(精通机器学习的企业都会具备),而且还需要更大的计算力来训练网络。这意味着要么有多个图形处理单元(GPU),或者GPU的云资源。如果企业的理想用例在深度学习的范围之内,那么回报可能会很大。但是,取决于外部需求是多远,深度学习本身不会为产品和项目的成功与否提供保证。

最后,更广泛的领域被称为数据科学的原因。尽管有一些与预建网络直接支持的企业相关的用例(例如图像分类),但是很多企业都有兴趣通过深入的学习网络来扩展这些想法并开发相邻的功能。这应该被认为更多的是研究和开发工作,而不是一个伴随风险的工程计划。

7. 本章小结

深度学习代表了涉及许多不同数据模式(包括文本、图像、视频和声音)的许多任务的机器学习领域,或者具有可被利用的结构或空间构建特征的任何数据。而且,深度学习已经在一定程度上取代了特征提取和特征工程的重要问题,并选择了合适的神经网络结构。随着深度学习的不断发展,对网络和网络组件的性能和性能属性的更好的理解将会出现。深度学习的使用将转向更多的工程问题,以解决以下问题:我们如何将所需的神经元类型,网络层和整个网络组合成一个能够处理业务挑战的系统。

最终,问题不在于企业是否会使用深度学习,而在于每个组织如何参与到技术发展过程中来。许多公司可能已经使用了深度学习的服务。对于那些可以直接受益于深度学习产品和服务的公司来说,一个现实的问题是“我们要购买技术/服务”还是“我们要发明创造技术/服务”?如果存在提供满足性能要求的必要功能的高级API,企业可以应该使用它。但是,如果这是不可能的,企业必须发展内部的核心能力。如果选择后一种方法,那么下一个问题是,我们可以简单地通过微调来在已有技术成果来实现,还是我们需要发明全新的系统、架构、图层或者神经元类型来推进现有技术?这个问题的答案决定了企业需要准备何种人力资源。

参考资料:

  1. Li Deng, “Three Classes of Deep Learning Architectures and Their Applications: A Tutorial Survey”, APSIPA Transactions on Signal and Information Processing (January 2012).
  2. Ajay Agrawal, Joshua S. Gans, and Avi Goldfarb, “What to Expect from Artificial Intel‐ ligence,” MIT Sloan Management Review Magazine (Spring 2017).
  3. Yonghui Wu et al., “Google’s Neural Machine Translation System: Bridging the Gap between Human and Machine Translation”, technical report (October 2016).
  4. A. Krizhevsky, I. Sutskever, and G. Hinton, “ImageNet Classification with Deep Convo‐ lutional Neural Networks”, Advances in Neural Information Processing Systems 25 (2012).
  5. V. Mnih, K. Kavukcuoglu, D. Silver et al, “Playing Atari with Deep Reinforcement Learning”, NIPS Deep Learning Workshop (2013).
  6. R. Zhang, P. Isola, and A. Efros. “Colorful Image Colorization”, in ECCV 2016 (oral), October 2016.
  7. I. Goodfellow, J. Pouget-Abadie, M. Mirza, B. Xu, D. Warde-Farley, S. Ozair et al., “Gen‐ erative Adversarial Nets”, Advances in Neural Information Processing Systems 27 (2014).

(未完待续)

  • 十二 13 / 2017
  • 0
Enterprise

锐眼洞察 | 如果正确操作,人工智能可以变革零售体验(翻译)

作者:Greg Ng

原文:If Done Right, Artificial Intelligence Can Transform the Retail Experience

译者:TalkingData合伙人&执行副总裁 林逸飞

本译文禁止商用,转载请注明来源与译者!

在这篇特稿中,PointSource的数字化合作副总裁Greg Ng阐述了AI如何帮助公司根据每个客户的具体需求定制用户体验。 Gregory是一位在业界领先的创意总监、设计师以及直接效应营销员。作为该公司的副总裁,Gregory负责为客户开发新的数字产品,并与架构、开发和交付团队合作,以确保他们的长期成功。在加入PointSource之前,Gregory用了约20年的时间,专注于为一些世界大品牌(包括许多的财富500强企业)开发有效的、集成的、以结果为导向的营销方案。

十年来,以大数据为特征的人工智能(AI)已然成为一个显著的趋势。2013年以来,人工智能领域的投资翻了3倍。到2016年中期,基于人工智能的企业获得了近15亿美元的股权融资。显然,对包括零售业在内的各行各业来说,人工智能这项技术都将是一个游戏规则改变者。

当然,人工智能是一个宽泛的概念,涵盖了从科幻机器人到无人驾驶汽车的方方面面。对于零售商来说,这项技术带来的最重要的变化是个性化能力的提高。人工智能使零售商能够将大数据见解转化为可行的策略,如实时价格敏感度和量身定制的产品推荐。随着技术的不断发展,为个人消费者量身定制体验的想法变得更加现实。

但人工智能是复杂的,找到一个无缝的策略,平滑地将这些见解应用到用户体验中去,是件说起来容易、做起来难的事情。虽然人工智能驱动的个性化会彻底变革用户体验,但如果使用不当,它也会损害客户关系。在将这种技术纳入市场营销策略时,会出现一些可能损害用户体验的错误。

不一致的多渠道个性化

由于消费者通过多种渠道(桌面网站、移动应用、店内体验等)与品牌互动,因此当个性化将每个互动巧妙地联系在一起时,它是最有效的。虽然新技术能够使用数百万个数据点,但关键在于建立一个可创造平滑顺畅、全面体验的跨平台数字化框架。

将您的个性化策略类比呼叫中心来说: 无论客户与哪个呼叫中心联系,都应该从他提供的信息中得到相同的答复。由于不一致的答复对于零售商的呼叫中心来说不可接受的,所以同样的标准也应该适用于个性化策略。客户在某个平台上的行为应该告知整个客户体验体系。

例如,通过移动设备浏览零售商网站上的黑色毛衣,并随后在桌面端下单的顾客,不应在手机端不断收到该款毛衣的推荐。应当使整个品牌都了解到用户先前在某渠道上的行为及体验。

超出客户隐私的界限

虽然人工智能策略可以在品牌与顾客之间建立更亲密、更积极的关系,但是他们也可能走得过远。换句话说,执行不力的个性化努力可能令人毛骨悚然。

零售商应将每个用户触点视为登录点/签到。如果客户选择参与,那么这意味着零售商应该继续与他们分享个性化内容。如果他们不参与,零售商需要停下来并重新考虑他们发送的定制内容的类型和频率。这可能是个要退让的信号。

随着对技术侵入性的担忧加剧,零售商必须始终对界限保持敏感。如果顾客觉得零售商无视他们的隐私,他们很容易丧失对其的兴趣。随着科技的进步,零售商可以获得越来越多的有关顾客的信息,营销人员将不得不判定每个人的偏好,以免跨过界限走得太远。

糟糕的筹备以及无用的技术

在未来几年内,深度个性化将成为常态,落后的零售商将在市场上失去重要份额。认识到这一点,许多人都曾试图支持个性化策略,但由于数字解决方案的整合不佳而错过了机会。

一个主要原因是:许多零售商试图采取零碎的解决方案来避免昂贵的技术投资。没有人能回避这样一个事实: 一个具备人工智能功能的数字解决方案是要付出代价的。对于许多零售商来说,这意味着一种自上而下的数字化变革,而不是一种改进过时技术的肤浅的尝试。但是,数字化转型的投资回报远远超过了前期成本。放弃了必要的投资,零售商只会削弱他们的数字能力,使他们大大落后于竞争对手。

人工智能个性化的未来

尽管人工智能已经运用在零售商和消费者的日常互动中,但人工智能还在不断发展和提升。以亚马逊的数字私人助理Alexa为例。Alexa使用关键字和语音识别来执行各种任务,与用户个人信息相结合,它可以完成从播放音乐到在线订购等一系列任务。例如,询问Alexa泰国食物推荐的用户将收到基于地理信息和以往用户行为的个性化答复。虽然这清楚地展示了个性化所能做到的,但它还只是冰山一角。

随着更多的创新,下一代的Alexa可以对用户做出有更多细微差别的、微妙的答复。Alexa可以识别背景中的多个人,并推荐一个提供团餐的餐厅,它甚至可以识别语气中的细微变化。例如,这个助理可能会向不耐烦的顾客推荐以服务快捷著称的餐馆。

当然,这些只是AI如何改善数字化用户体验的一些例子。零售商和消费者面临的可能性是未知的,而且似乎是无穷无尽的。随着科技的进步,公司将能够把个性化用户体验做到行为发生的那一刻。

为了把握这种增长趋势,企业必须为全面整合人工智能做好准备。对其中一些公司来说,这可能意味着提高现有能力,统一全渠道战略。对于其他公司而言,拥抱AI将需要一个完整的数字化转型。无论哪种情况,零售商都需要现在就行动起来。

  • 十二 12 / 2017
  • 0
Enterprise

锐眼发现 | 混沌工程简介

作者:siddontang@简书

转载于:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

最近看到 Netflix 的混沌工程的介绍,感触颇深。在 TiDB 里面,我们为了保证系统的健壮性,也做了很多工作。在内部我们开始叫做 stability test,后来进化成 Schodinger 平台。之前我一直苦于没有没法对我们做得工作进行归类,毕竟它可能是一个 test,但又比 test 做得多一点,现在知道,原来我们一直做的其实算是一门工程实践。

既然是工程,那么就会有方法论,也就能详细的归纳总结出来实施的步骤,这样后面的同学就能非常快速的学习掌握,而不会像我们之前那么漫无目的的探索了,但我们现在还做不到这一步,而且相比 Netflix,我们还有很多路要走。所以我打算深入研究下 Netflix 是如何做的,在想想如何提升我们自己的工作。

介绍

首先,我们需要知道,混沌工程到底是什么。根据 Netflix 的解释,混沌工程师通过应用一些经验探索的原则,来学习观察系统是如何反应的。这就跟科学家做实验去学习物理定律一样,混沌工程师通过做实验去了解系统。

image.png

上图就是混沌工程的典型代表 – 猴子。拜 Netflix 所赐,现在大部分的混沌工程项目都叫做 Monkey,也就是一只讨厌的猴子,在你的系统里面上蹦下窜,不停捣乱,直到搞挂你的系统。

然后,我们需要知道,为什么需要混沌工程。应用混沌工程能提升整个系统的弹性。通过设计并且进行混沌实验,我们可以了解到系统脆弱的一面,在还没出现对用户造成伤害之前,我们就能主动发现这些问题。

混沌工程其实是很重要的,但我之前一直以为混沌工程就是测试,但它们还是有区别的。虽然混沌工程跟传统测试通常都会共用很多测试工具的,譬如都会使用错误注入工具,但混沌工程是通过实践对系统有更新的认知,而传统测试则是使用特定方式对某一块进行特定测试。譬如在传统测试里面,我们可以写一个断言,我们给定特定的条件,产生一个特定的输出,如果不满足断言条件,测试就出错了,这个其实是具有很明确的特性。但混沌工程是试验,而试验会有怎样的新信息生成,我们是不确定的。譬如我们可以进行下面的这些试验:

  • 模拟整个 IDC 当掉
  • 选择一部分网络连连接注入特定时间的延迟
  • 随机让一些函数抛出异常
  • 强制 NTP 时间不同步
  • 生成 IO 错误
  • 榨干 CPU

这些试验到底会有什么样的结果,有些我们可以预料,但有些可能我们就不会预先知道,只有发生了,才会恍然大悟,有一种『喔,这也会出现!』的感叹。

原则

在开始应用混沌工程之前,我们必须确保系统是弹性的,也就是当出现了系统错误我们的整个系统还能正常工作。如果不能确保,我们就需要先考虑提升整个系统的健壮性了,因为混沌工程主要是用来发现系统未知的脆弱一面的,如果我们知道应用混沌工程能导致显而易见的问题,那其实就没必要应用了。

虽然 chaos 有混乱的意思,但混沌工程并不是制造混乱。相反,我们可以认为混沌工程是用经验的方法来定位问题的一门实验学科。譬如,我们可以思考:『如果我们在系统里面注入混乱了,这个系统会怎样?』,或者『我们系统离混乱的边界还有多远?』。所以,为了更好的进行混沌试验,我们需要有一些原则来进行指导。

假定稳定状态

在一个复杂系统里面,我们有特别多的组件,有很多不同的输入输出,我们需要有一个通用的方式来区别系统哪些行为是可以接受的,而哪一些则是不合适的。我们可以认为当系统处于正常操作时候的状态就是稳定状态。

通常我们可以通过自己测试,来确定一个系统的稳定状态,但这个方法当然是比较低效的,另一种更常用的做法就是收集 metric 信息,不光需要系统的 metric,也需要服务自身的 metric,但收集 metric 需要注意实时性的问题,你如果收集一个每月汇总的 metric 信息,其实没啥用,毕竟系统是实时变化的。现在市面上面有很多不错的开源 metric 系统,譬如我们就在用的 Prometheus。

当我们能收集到信息之后,就需要用这些信息去描述一个稳定状态。这个难度比较大,因为不同的业务是不一样的,即使是同一个业务,不同时间也可能变化很大。但也有一些方法,譬如我们可以根据前面一段时间譬如上周的 metric 的曲线得到一个大概合理的稳定状态,也可以自己做很多压力测试,得到相关的数据。

当有了 metric 以及知道稳定状态对应的 metric 是怎样之后,我们就可以通过这些来考虑混沌实验了。思考当我们注入不同的事件到系统中的时候,稳定状态会如何变化,然后我们就会开始做实验来验证这个假设。

变更真实世界事件

在真实的世界中,我们可能遇到各种各样的问题,譬如:

  • 硬件故障
  • 网络延迟和隔离
  • 资源耗尽
  • 拜占庭错误
  • 下游依赖故障

做混沌试验的时候需要模拟这些故障,来看系统的状态。但从成本上面考虑,我们并不需要模拟所有的故障,仅仅需要考虑那些会比较频繁发生,而且模拟之后会很有效果的。在 TiDB 里面,我们主要就是模拟的网络,文件系统的故障,但现在看起来还是不够,后面会逐渐的添加更多。

在生产中进行试验

要看混沌试验有没有效果,在真实生产环境中进行验证是最好的方法。但我相信大部分的厂商还没这么大的魄力,这方面 Netflix 就做的很猛,他们竟然能够直接停掉 Amazon 上面的一个 Zone。

如果不能再生产环境中试验,一个可选的方法就是做 shadow,也就是通常的录制生产环境的流量,然后在测试中重放。或者模拟生产环境,自己造数据测试。

自动化持续执行

最开始执行混沌试验,我们可能就是人工进行,试验进行的过程中,看 metric,试验结束之后,通过收集的 metric 在对比,看系统的状态。这个过程后面完全可以做成自动化的,也就是定期执行,或者系统发布的时候执行等。

如果能做到自动化执行试验,已经很不错了,但我们可以做的更多,甚至有可能根据系统的状态自动化的生成相关的试验,这个 Netflix 已经做了很多研究,但我们这边还处于初级阶段,没考虑过自动化生成的问题。

最小化影响范围

在进行混沌试验的时候,一定要注意影响的范围,如果没预估好,把整个服务搞挂了,导致所有的用户都没法使用,这个问题还是很严重的。

通常都会使用一种 Canary 的方法,也就是类似 A/B 测试,或者灰度发布这种的,在 Canary 集群这边做很多试验。也就是说,如果真的搞坏了,那也只是一小部分用户被搞坏了,损失会小很多。

在 Canary 里面还有一个好处,因为我们知道整个系统的稳定状态,即使不做混沌测试,也可以观察 Canary 里面的状态是不是跟之前的稳定状态一致的,如果不一致,那也可能有问题。

实践

上面我们说了相关的原则,那么如何开始进行一次混沌试验呢?其实很简单,只要做到如下步骤就可以:

  1. 选择一个假设
  2. 选择试验的范围
  3. 明确需要观察的 metric 指标
  4. 通知相关的团队
  5. 执行试验
  6. 分析结果
  7. 增大试验的范围
  8. 自动化

譬如对于 TiDB 来说,譬如我们可以选择验证网络隔离对系统的影响,我们会:

  1. 假设一台机器的网络隔离对整个系统不会造成影响
  2. 将一个用户一台 TiKV 进行网络隔离
  3. 观察 QPS,latency,等指标
  4. 通知负责这个用户的 OPS 同学
  5. 断网
  6. 一段时间之后分析 metric
  7. 在多个集群测试
  8. 将这个流程自动化

上面只是一个简单的例子,实际还会复杂很多,但通过这种方式做了操作了很多次之后,大家都会更加熟悉自己的系统。

混沌成熟度模型

这里在简单说说混沌成熟度模型,Netflix 总结了两个维度,一个是复杂度,一个就是接受度。前者表示的是混沌工程能有多复杂,而后者则表示的是混沌工程被团队的接受程度。

复杂度分为几个阶段:

  • 初级
    • 试验没有在生产中进行
    • 进程被收工管理
    • 结果只反映系统 metric,没有业务的
    • 只有简单的事件进行试验
  • 简单
    • 试验可以在类生产环境中进行
    • 能自动启动执行,但需要人工监控和终止
    • 结果能反应一些聚合的业务 metric
    • 一些扩展的事件譬如网络延迟可以进行试验
    • 结果可以手工汇总和聚合
    • 试验是预先定义好的
    • 有一些工具能进行历史对照
  • 复杂
    • 试验直接在生产环境中进行
    • 启动,执行,结果分析,终止都是自动完成
    • 试验框架集成在持续发布
    • 业务 metrics 会在实验组和控制组进行比较
    • 一些组合错误或者服务级别影响的事件可以进行试验
    • 结果一直可以追踪
    • 有工具可以更好的交互式的对比试验和控制组
  • 高级
    • 试验在每个开发步骤和任意环境都进行
    • 设计,执行和提前终止这些全部都是自动化的
    • 框架跟 A/B 或者其他试验系统整合
    • 一个事件譬如更改使用模式和返回值或者状态变更开始进行试验
    • 试验包括动态作用域和影响,可以找到突变点
    • 通过试验结果能保护资产流失
    • 容量预测可以通过试验分析提前得出
    • 试验结果可以区分不同服务的临界状态

而接受度也有几个阶段:

  • 在暗处
    • 相关项目不被批准
    • 很少系统被覆盖
    • 很少或者没有团队有意识
    • 早期接受者不定期的进行试验
  • 有投入
    • 试验被被官方批准
    • 部分资源被用于实践
    • 多个团队有兴趣并投入
    • 少部分关键服务不定期进行试验
  • 接受
    • 有专门的 team 进行混沌工程
    • 应急响应被集成到框架,从而可以创建回归试验
    • 多数关键系统定期进行混沌试验
    • 一些试验验证会在应急响应或者游戏时间被临时执行
  • 文化
    • 所有关键服务都有频繁的混沌试验
    • 大多数非关键服务定期进行
    • 混沌试验已经是工程师的日常工作
    • 默认所有系统组件都必须参与,如果不想进行,需要有正当的理由

如果按照这上面两个维度来看,我们其实做的并不好,所以还有很大的提升空间。

总结

上面就是对混沌工程的简单介绍,后面我会考虑依照混沌工程的原则,开始工程化的实践。虽然之前我们做过很多工作,如果能用理论开始指导,就能更进一步了。

页面:1234567...38
随时欢迎您 联系我们