本篇文章7071字,读完约18分钟
周四,雷研究会邀请跨国it巨头thoughtworks的高级数据架构师白华川在网上公开课上做讲座,讲解张量在工程项目中的应用。
此前,白先生和思想工作高级顾问佟达先生接受了雷锋的采访。他们分享了初学者在开始张量流时遇到的一些问题,以及他们的入门经验。请参考:万事开头难!为了开始张量流,tf男孩必须理解这九个问题。
此外,思维作品的在线培训“TensorFlow &神经网络算法高级应用班”将于下周二在mooc.ai上推出,由两名教师授课。要注册,请点击。
闲话少了,这个公开课采访了两位老师,梳理了两个话题:
企业大数据平台
张量流应用场景
这是公开课的录像:
公开课的文本版不方便童鞋看视频。请阅读本公开课的以下成绩单。
由于篇幅较长,这个公开课的成绩单分为上下两部分。这是最后一个,关于企业级大数据平台及其架构。这是因为张量流的商业工程应用必须基于可靠的大数据基础设施。
请注意张量流应用场景的下一部分。
白华川:大家晚上好。欢迎来到这个公开课,它也将在“张量流&神经网络算法高级应用课”开始前作为一个讲座。
这次我们讨论的是张量流在工程中的应用场景,它更倾向于工程实践。也就是说,从工程的角度来看,在张量流项目的所有方面应该做什么?
张量流作为一个深度学习框架,只是整个工程开发项目的一部分——我们实际上是在做开发,面对一个非常大的系统。因此,我们面临的问题是:
在整个系统中,我们的项目应该如何发展?
我应该如何使用张量流?
在哪种情况下张量流是更好的选择?
让我自我介绍一下。我是思想工作的白华川。我以前从事过大数据,然后我们开始尝试并朝着人工智能的方向努力。我们致力于集成人工智能、机器学习和大数据。在研究了许多相关的机器学习框架后,我们还制作了自己的深度学习框架deep learning。斯卡拉。它是由scala编写的,目前是开源的,所以你可以了解它。
这是关于我们公司的。你可以在网上了解到,思想工厂是“敏捷”的倡导者。例如,“重构”和“敏捷网络开发方式”是我们公司的同事写的。
让我们来看这个公开课的第一部分。
本质上,我们不能做任何事情,从大数据到人工智能或其他与机器学习相关的项目。因此,如何规划我们的数据以及如何设计我们的架构是非常重要的。根据我的经验,所有没有大数据架构的人工智能项目都不会有特别好的结果。
人工智能项目和数据项目可以完全独立。假设我们只有几条数据,我们也可以做人工智能。但是当谈到生产时,如果你不计划底层数据,你的整个人工智能的效果基本上是负面的,不会有特别大的影响。
就数据而言,从早期到现在,我们经历了不同的迭代周期:
最早的数据处理方法很简单,可能是搞excel,当场计算数据。渐渐地,我们的数据管理方法将倾向于使用数据库。多个客户端连接到同一个数据库进行数据处理。
然后我们发明了数据仓库。在bi时代,我们所有的数据都是通过数据仓库统一上报的。
在那之后,它进化到了现在的阶段。随着计算机硬件的发展,我们有了一个数据湖。数据湖是数据仓库的一个扩展方面,它为机器学习提供了良好的支持。
在数据分析方面,早期每个人的需求都只是数据可视化:我根据数据可视化的结果做出决策和判断,然后给出关键决策来指导下一步的发展方向。机器学习引入后,一些相关的分析工作实际上是由计算机完成的。从我们的数据中计算出结果后,计算机可以做出初步的决定,为人们提供参考,然后人们可以做出最终的决定,这也是目前人工智能最常用的方式。
虽然我们在做人工智能,但没有任何干预,我们还没有达到100%计算机结果的水平。因此,从本质上讲,当前的人工智能仍然是人们的辅助参考。我们仍然需要有人来处理。当然,人工智能的最终进化方案,我们必须希望完全依靠计算机来处理它,而没有人必须处理它。
该架构图是商业界的大数据架构平台。对于一个企业来说,在历史发展过程中,它会有一个非常大的信息技术系统,其数据源遍布不同的系统。在很早的时候,我们就提出了数据集成的概念,因为同一批具有相同业务意义的数据在不同的系统中,其存储模式和表示模式完全不同。因此,为了完成这部分工作,早期的数据仓库诞生了。我们用常规数据和元数据来处理这批数据。
对于企业级大数据平台,除了完成bi的这一部分,我们还有一个额外的要求,那就是机器学习。我们希望我们的大数据架构可以用来支持机器学习。正如您在架构图中看到的,它前面会有一个数据通道。数据通道可以理解为bi中etl的一部分,但本质上它比etl更高。对于数据通道,etl和etl的区别在于etl需要转换数据,而数据通道只是同步数据。其次,ETL是一个相对独立的模块,而数据通道是平台的一部分,由调度器管理。例如,我们的数据通道可以是一个爬虫。
数据湖接下来,我们将进入数据湖。数据湖是大数据中提出的一个概念。本质上,它主要负责数据存储。就数据存储而言,它属于大数据,必须解决几个问题,即结构化数据、半结构化数据和非结构化数据的存储。
其次,要解决数据安全和数据可靠性的问题。在此基础上,我们可以看到hadoop的底层数据是hdfs,这也是数据湖的一种常见实现。
数据探索走得更远,我们可以看到数据探索。当您成为企业级大数据平台时,您将面临这样一种情况:
我已经为企业做了数据集成,我们的数据湖也存在,但是当我下一步想做机器学习时,我会发现一个问题——我不能很快知道我在企业中需要什么数据;或者企业现在有这些数据,但是这些数据非常大,我们怎么知道我们现在有什么数据?格式是什么?
诞生在这个平台上的服务被称为数据发现,它被翻译成数据探索。这项工作本质上是为数据科学家准备的。在我们建立了数据服务平台之后,我们需要做一系列的调查,从数据科学家的角度来看这批数据,看看它所代表的特征和维度是否能够为我们提供一个很好的人工智能支持。
因此,这部分工作更多地由有经验的数据科学家承担。他们需要的是一个简单的数据探索工具,因为他们不需要全部拿出来。就数据湖而言,我们放进去的数据基本上是pb。在我们的项目中,tb及以上的数据非常常见。因此,对于数据科学家来说,没有必要加载完整的数据,而且成本太高。更可取的是快速检索数据格式,然后列出哪些数据。看着这个数据符号不符合我的需要,所以除此之外,我们需要一个数据探索服务来为他提供这样的支持。
此外,本质上,它还有另一个功能:管理数据服务的云数据。因为我们需要快速找到数据,我们的数据(元数据)是否需要针对数据湖进行管理?例如,如果我们提供一个数据平台,那么从数据通道进入的数据属于哪个业务系统,以及它是如何被规划的。
数据仓库与数据预处理来自数据湖的底部。
它的数据来自数据湖。这就是数据湖和数据仓库的区别。在传统的bi系统中,有一个从数据源到数据存储的过程,称为etl。数据规范化后,etl会再次将数据发送到数据仓库。在大数据架构中,我们会发现我们的基本处理是数据湖上的数据预处理。
此时,数据湖和数据仓库有什么区别?
首先,数据仓库的所有数据都是结构化的,这意味着它的数据是结构化的,这意味着信息是丢失的。对于您的静态业务需求,丢失的数据可能不那么明显——例如,如果我只是做一份报告或做一些统计、平均和其他计算,那么我可能会使数据正常化,没有问题。然而,如果我们想进行机器学习,我们更喜欢提取大量的数据特征。一旦数据被组织起来,很大一部分信息就会丢失。这样,当通过机器学习进行特征提取时,就会出现非常不准确的问题。
此外,对于数据仓库,它更注重结构化数据的管理。事实上,在大数据下,结构化数据只是我们必须处理的数据的一部分,而不是全部。此外,我们还有非结构化数据和半结构化数据,而数据仓库在处理这些数据时并不是特别有效。
数据湖的概念诞生了。我们所有的数据都放在数据湖中,我们的处理放在数据预处理中。预处理将遵循我们的业务。当我们需要一项业务时,我们会通过数据预处理来处理。这里,我们将前面提到的工作从数据通道和数据湖之间的位置转移到后面的数据预处理。
对于企业来说,我们的组织结构可以很好地运作。因为在商业智能和数据仓库中,会有一个团队或角色负责etl或者在从另一个地方处理数据后迁移数据。这样,当我们的业务发生变化时,我们的整个数据源应该从新数据接触和重新打开的地方重新清理。这个响应周期将特别长,
在大数据架构下,由于数据湖的存在,这一业务的变化是我们所做的,但只是计算。我们的计算规则变了,但是湖里的数据还在里面。因此,计算成本必须远低于移动数据的成本。
经过数据预处理后,有两个分支。上面的分支是在线分析和数据可视化。说到这一块,它是为了符合和包括那些我们在早期做bi系统时需要的东西。例如,我们必须显示静态报告,bi系统中的最终报告包括向上钻取和向下钻取。事实上,这些需求可以通过在线分析来实现。目前,在大数据方面,我们还将借鉴传统思想和传统bi方法中的一些思想,这些思想特别优秀。例如,olap和创建多维数据集的方式在整个数据分析中发挥了很好的作用。所以目前,我们可以完全覆盖这一块。
下面是机器学习和决策分析。数据预处理本身并不做一些静态报表分析的相关工作,但是数据预处理包括特征提取,用于支持机器学习。这样,我们的数据预处理分支不仅可以满足其静态数据分析,还可以满足与机器学习相关的操作。
最低级别有一个服务时间表。我们可以看到,我们的服务调度,从基础到最后,都是由整个服务来调度的,所以我们将建立一个统一的大数据调度系统,这样的好处是所有的任务都将由调度系统统一调度,一个很好的任务安排将会按顺序执行。
另一种方式。至于早期作为bi系统使用的etl工具,像kettle这样的工具,你已经见过很多了,但是相对缺乏调度功能。首先,它缺乏时间安排;其次,支持分布式操作不是特别友好。例如,我们运行了一个釜式脚本,它可以将数据从一个数据源提取到另一个数据源,但是就其本身而言,您的工具不能像spark一样分布到不同的节点,它必须被并行处理。因此,当我们有一个服务调度层时,我们可以调度所有的任务。这样,我们不仅可以确保所有作业都可以被监控,还可以保存一些状态。例如,如果一个作业失败,我知道在哪里可以再次恢复。当我们有服务调度时,我们可以得到它的所有状态。对于最右边的部分,我们可以很好地监控它。
企业数据成熟度模型正如我前面提到的,对于一个企业来说,无论我们做人工智能还是数据分析,前提都必须是规划其大数据平台。大数据平台直接决定了所有结果的好坏。因此,我们定义了一个企业数据成熟度模型。目前,可能有很多需求或场景我们已经看到,每个人都会说,我们只是想做人工智能,我们的目标是做人工智能。但事实上,从现实来看,要达到真正成熟的人工智能还有很大的跨度。
那么如何测量这个跨度呢?
最重要的是,我们提出了一个数据传输模型来评估你目前所处的位置;其次,你想要什么结果?
例如,在第一阶段,我们想知道的只是从数据中发现问题。此时,需求非常简单。我只是做一份订单报告,并展示相关工具。此时,你可能还没有实现人工智能的一些功能,因为你还没有达到这个水平。你现在所拥有的,或者你所拥有的数据源,根本不支持你去做。
通过这种评估,除了对其现状进行整理和评估之外,我们还可以根据前面的整个大数据方案来决定您可以实施哪一层。本质上,我们之前看到的大数据架构方案的每一部分都可以作为一个渐进的过程来分离。这里我们可以看到几个阶段:
首先,看看发生了什么。
其次,分析它发生的原因。
第三阶段,知道会发生什么。
这一阶段将涉及人工智能。也就是说,只有当我们达到第三阶段时,我们才能认为您的所有业务需求和数据支持都已经达到了需要人工智能干预的阶段。此时,我们将考虑在您的大数据平台上连接您的整个机器学习。
因此,在不同阶段实现不同的功能也是对数据平台非常严格的评估。也就是说,你的每一个阶段都可以无缝地增加到下一个阶段。之后,当我们预测会发生什么时,我们肯定会考虑如何优化它,这是最后阶段。
当我们的机器有了数据和模型,整个机器学习系统就完善了,它可以实现一个自我选择的功能。根据你的数据,它可以依靠人们的经验找出你没有发现的东西。这是我们希望达到的最终目标。
在本节中,大数据平台架构将向您展示我们已经完成或总结的大数据架构的不同实践。
传统建筑
这是一个传统建筑。早在机器学习之前,就有一个过程:在使用bi系统之后,会有一个阶段--当数据量出现时,数据仓库的数据处理就会出现瓶颈。此时,我们需要一个架构来保持原始业务不变。维护外部需求并更换底层技术部件,从而提高整体性能。这种架构的实现通常相对简单。简单来说,我们根据左边的数据源,通过etl工具将数据放入数据存储层,数据源可以是数据库或其他ftp。在最右侧,我们将为您提供与原始服务类似的服务,中间将有一个数据存储和一个搜索引擎。这种搜索引擎主要提供检索功能。在这种传统架构发展之后,我们有了另一种架构,这就是所谓的流动市场架构。
如上所述,传统架构本身是一种线性服务。相对而言,它的响应很慢,etl的时间更长。对于常规数据,我们的访问更多的是面对别人的备份数据库,或者在业务系统真正把数据放到数据库后,我们才访问它。从这个角度来看,我们所有的数据都严重滞后于业务发展,也就是说,业务产生数据。在业务生成数据之后,您需要很长时间来获取数据。
流架构在此之上,我们提出了一个流架构。流架构是:当数据进来时,我们以流的形式直接访问数据,甚至在我们得到流数据之后,我们以消息的形式将流数据直接推送到前端。这样,它只能满足预警的功能。例如,如果我在操作和维护,我可能需要一个数据流来更好地满足我当前的实质性需求。
Lambda架构在流架构之后演变成了lambda架构。
在过去的几年中,这种架构已经在我们所有的系统中广泛实施,并且在涉及到社交大数据架构平台时也是如此。长期以来,Lambda架构一直是首选。它主要分为两批,综合了传统架构和流架构的一些优点。换句话说,数据处理也是如此,即数据访问。但是在数据访问之后,它将被分成两部分:
首先,您的数据将进入数据湖并永久存储。
其次,数据进入流处理。根据您的一些计算结果,流处理的数据将以消息的形式直接推送到前端。流处理,以及上面的批处理,即数据存储和数据预处理,这一层一般称为批处理作业;;以下流处理称为实时处理。两者的逻辑是一样的,但是他们面对的数据是不同的。上述数据存储和数据预处理都是面向海量数据的;而下面流处理面对的是增量数据。在lambda架构中有一种叫做前端视图合并的技术,即我的流处理是根据增量数据计算的,它会立即显示给前端;数据输入后,它将触发批处理作业,这将触发完整的计算。当总计算完成时,它将合并结果集和通过流处理计算的结果集,以确保最终的一致性。因为损失处理可能出错,毕竟这是增量计算,所以最终的结果必须是完全正确的计算。因此,此时,流处理将被bash作业的结果覆盖,我们称之为最终一致性,它可以确保数据的正确性。
Kappa架构是对lambda架构的部分改进:在kappa架构中,我们认为数据是流式的,这意味着我们所有的数据都可以流式传输。当数据被访问时,我们的数据进入消息队列,因此它将被放入数据存储器,也将进入流处理。流和以前一样:处理后,它作为消息被推到前端。
那么为什么在数据存储中没有批处理作业层呢?它不再进行离线计算,因为我们所有的数据都可以回放。当我们发现某个结果计算不正确时,我们需要重新计算。就kappa架构而言,它认为重新计算是重复访问先前数据的动作。因此,它以流式方式处理所有数据,从而避免完全相同的逻辑计算。
正如我前面提到的,lambda架构分为两部分,一部分是流,另一部分是批处理作业。他们面对不同的数据集,但他们的计算逻辑是相同的。然而,卡帕建筑被省略了,相同的部分被合并了。
统一架构
相比之下,它有点类似于lambda架构。不同的是,它的流变成了与模型相关的东西。目前,将大数据架构和机器学习架构相结合是一种完美的架构,在这种架构中我们可以将机器学习付诸实践。在batchjob一级,它主要从事模型培训。当模型被训练时,新的数据进入并流过模型来预测结果。这个结果可以以消息的形式推出。通过这种方式,在最外层,您可以获得流的预算结果。
接下来请关注Feng.com雷人工智能研究会的后续安排(公开号:雷锋网)。
“张量流&神经网络算法高级应用类”即将开始!
下周,将在mooc.ai上推出由两位老师,思维工厂童达和白华川主持的tensorflow培训,以系统地宣讲和消除疑虑。
你一直想要一个老司机带头吗?这是一个好机会。
think works是think works的讲师,是全球领先的it咨询公司,是联合国妇女儿童组织和世界卫生组织的合作伙伴。总部设在芝加哥,在全球15个国家设有42个办事处。
2012年,think works排名在谷歌和facebook之前,被评为世界上最难面试的公司。
2016年,思维工场荣获“女性科技人员最佳雇主”奖。
培训课程介绍:从初级到高级,理论+实战,一站式深入了解张量流!
本课程面向深入学习的开发人员,教授如何使用张量流解决特定问题,如图像识别和文本分析。为期10周的课程将从张量流的原理和基本实践技能开始,逐步教会学生如何在张量流上构建cnn、自编码、rnn、gan等模型,最终掌握一套基于张量流的深度学习和发展的专业技能。
作为思想工作的高级技术专家,童达和白华川两位教师在构建大数据平台和开发深度学习系统方面有着丰富的经验。
开始时间:4月25日(星期二),每周二和周四晚上20: 00到21: 00
课程时长:共20小时,10周完成,每周2次,每次1小时
地址:mooc.ai/course/82
在线教学,开放预订!
相关文章:
万事开头难!为了开始张量流,tf男孩必须理解这9个问题
教你如何使用张量流实现基于dnn的文本分类
雷锋原创文章。严禁擅自转载。详情请参考转载说明。
来源:搜狐微门户
标题:TensorFlow在工程项目中的应用 公开课视频+文字转录(上)
地址:http://www.shwmhw.com/shxw/59951.html