2018年2月5日星期一

谷歌大中华区总裁:中国科技已经领先世界半代之远

李根 发自 CBD量子位 出品 | 公众号 QbitAI

谷歌过去一年在中国怎么样?

答案,就藏在今天上午北京召开的Think with Google年度峰会里。

首先登场的是谷歌大中华区总裁石博盟(Scott Beaumont)

石博盟去年圣诞飞回伦敦度假,这次"返乡"之旅带给他一些沮丧的印象。石博盟发现英国还有伦敦几乎没有变化,这与他平常在上海感受到的日新月异非常不同,石博盟说"能够在亚洲、在中国工作非常荣幸"。

在回忆了去年的一次参观和交流之旅后,他看到很多其他地方还未出现的科技进步,石博盟直言:"中国在科技方面,已经领先世界半代之远。"

他还给出结论:幸之在华,亲历前沿。

石博盟表示,中国企业的实力在不断夯实,这些企业开始有很大的抱负,走向全球的信心。一切正刚刚开始。

AI是谷歌一定会谈到的话题。石博盟说AI能够AI能帮助提升广告投放效果,能让每个人获得便利。AI已经渗透到谷歌的每一个产品。

去年AlphaGo对阵柯洁,石博盟也在现场观战。他说AlphaGo帮助柯洁成为更强的棋手,而且他非常赞赏围棋选手,既是历史的传承者,也原意去拥抱新技术。

"我希望大家拥抱AI,不要被吓到"石博盟表示。

随后谷歌AI中国中心总裁、谷歌云AI研发主管李佳登台。

李佳介绍了谷歌如何进行AI赋能。她以教育、医疗举例,说明AI能带来个性化教育,能帮助医生更高效的诊断。

实力强的用户,可以使用谷歌的工具从头开发AI技术和产品,当然也可以使用谷歌提供的API更便捷的进行AI赋能。还有更多的公司需要定制机器学习解决方案。为了这个问题,谷歌前不久推出了Cloud AutoML。

李佳透露,目前Cloud AutoML已经有超过1万注册用户。未来AutoML还会推出更多的服务,目前开放的图像只是一个开始。

"这是一个前所未有,令人激动的时代。"李佳说。另外,谷歌AI中国中心正在招聘中。

接着谷歌TensorFlow中国总监、GPI全球技术总监赵泽红登台介绍了TensorFlow的基本情况。她强调TensorFlow在中国的下载量非常高。

谷歌艺术与文化实验室项目主管Pierre Caessa,也登台讲述了谷歌与故宫的合作,让世界更好的了解中国文化。未来谷歌还会与更多中国博物馆展开合作。

"谷歌希望成为中国艺术家和世界连接的桥梁",Caessa表示中国是仅存的四大文明古国,谷歌想把中国文化和艺术带到世界。

谷歌大中华区首席市场官黄介中,介绍了人工智能下的营销机遇。

他总结了三个点:

  • 精准营销:对的时间,找到对的人。谷歌跟手游公司合作,营销效果有了明显的提升,AI带来了两倍的投资回报率,4倍的付费用户数量。
  • 深度互动:基于谷歌智能手机中的AI和AR技术。
  • 更优质的品牌体验:谷歌翻译去年推广非常猛,还请了嘻哈侠欧阳靖(MCJin)做了很多广告。(这个App是在中国可以用的)

谷歌全球高级经济学家伍庆,从人口、成本、技术和生产效率三个要素,分析了中国经济的情况。伍庆表示中国的人口红利正在消退,成本正在上升,但是技术和生产效率生在提升。

一言以蔽之,中国发展速度太快了:

  • 中国专利申请突飞猛进,位居世界前列;
  • 互联网、政策和软实力也在走向领先。比如中国B2C领先国际的领域:在线娱乐、智能设备和跨境电商平台。

伍庆预计,随着中国的实力不断提升,各国消费者会更愿意接受中国产品。

Brandz总裁王幸,进一步补充了这个判断。她公布的数据显示,过去一年中国出海品牌力增长5%,谷歌搜索量增长6%。

王幸表示,世界的竞争格局正在悄悄发生变化。中国品牌已经有了很大的提升。尤其是年轻的国外消费者,认为中国品牌更为创新,他们也更愿意购买中国品牌。

她透露,对中国品牌态度最积极的国家是英国,相对最消极的国家是日本。

欢迎大家关注我们的专栏:量子位 - 知乎专栏

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复"招聘"两个字。

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态



via 量子位 - 知乎专栏 http://ift.tt/2nKyGrq
RSS Feed

RSS5

IFTTT

谷歌大中华区总裁:中国科技已经领先世界半代之远

李根 发自 CBD量子位 出品 | 公众号 QbitAI

谷歌过去一年在中国怎么样?

答案,就藏在今天上午北京召开的Think with Google年度峰会里。

首先登场的是谷歌大中华区总裁石博盟(Scott Beaumont)

石博盟去年圣诞飞回伦敦度假,这次"返乡"之旅带给他一些沮丧的印象。石博盟发现英国还有伦敦几乎没有变化,这与他平常在上海感受到的日新月异非常不同,石博盟说"能够在亚洲、在中国工作非常荣幸"。

在回忆了去年的一次参观和交流之旅后,他看到很多其他地方还未出现的科技进步,石博盟直言:"中国在科技方面,已经领先世界半代之远。"

他还给出结论:幸之在华,亲历前沿。

石博盟表示,中国企业的实力在不断夯实,这些企业开始有很大的抱负,走向全球的信心。一切正刚刚开始。

AI是谷歌一定会谈到的话题。石博盟说AI能够AI能帮助提升广告投放效果,能让每个人获得便利。AI已经渗透到谷歌的每一个产品。

去年AlphaGo对阵柯洁,石博盟也在现场观战。他说AlphaGo帮助柯洁成为更强的棋手,而且他非常赞赏围棋选手,既是历史的传承者,也原意去拥抱新技术。

"我希望大家拥抱AI,不要被吓到"石博盟表示。

随后谷歌AI中国中心总裁、谷歌云AI研发主管李佳登台。

李佳介绍了谷歌如何进行AI赋能。她以教育、医疗举例,说明AI能带来个性化教育,能帮助医生更高效的诊断。

实力强的用户,可以使用谷歌的工具从头开发AI技术和产品,当然也可以使用谷歌提供的API更便捷的进行AI赋能。还有更多的公司需要定制机器学习解决方案。为了这个问题,谷歌前不久推出了Cloud AutoML。

李佳透露,目前Cloud AutoML已经有超过1万注册用户。未来AutoML还会推出更多的服务,目前开放的图像只是一个开始。

"这是一个前所未有,令人激动的时代。"李佳说。另外,谷歌AI中国中心正在招聘中。

接着谷歌TensorFlow中国总监、GPI全球技术总监赵泽红登台介绍了TensorFlow的基本情况。她强调TensorFlow在中国的下载量非常高。

谷歌艺术与文化实验室项目主管Pierre Caessa,也登台讲述了谷歌与故宫的合作,让世界更好的了解中国文化。未来谷歌还会与更多中国博物馆展开合作。

"谷歌希望成为中国艺术家和世界连接的桥梁",Caessa表示中国是仅存的四大文明古国,谷歌想把中国文化和艺术带到世界。

谷歌大中华区首席市场官黄介中,介绍了人工智能下的营销机遇。

他总结了三个点:

  • 精准营销:对的时间,找到对的人。谷歌跟手游公司合作,营销效果有了明显的提升,AI带来了两倍的投资回报率,4倍的付费用户数量。
  • 深度互动:基于谷歌智能手机中的AI和AR技术。
  • 更优质的品牌体验:谷歌翻译去年推广非常猛,还请了嘻哈侠欧阳靖(MCJin)做了很多广告。(这个App是在中国可以用的)

谷歌全球高级经济学家伍庆,从人口、成本、技术和生产效率三个要素,分析了中国经济的情况。伍庆表示中国的人口红利正在消退,成本正在上升,但是技术和生产效率生在提升。

一言以蔽之,中国发展速度太快了:

  • 中国专利申请突飞猛进,位居世界前列;
  • 互联网、政策和软实力也在走向领先。比如中国B2C领先国际的领域:在线娱乐、智能设备和跨境电商平台。

伍庆预计,随着中国的实力不断提升,各国消费者会更愿意接受中国产品。

Brandz总裁王幸,进一步补充了这个判断。她公布的数据显示,过去一年中国出海品牌力增长5%,谷歌搜索量增长6%。

王幸表示,世界的竞争格局正在悄悄发生变化。中国品牌已经有了很大的提升。尤其是年轻的国外消费者,认为中国品牌更为创新,他们也更愿意购买中国品牌。

她透露,对中国品牌态度最积极的国家是英国,相对最消极的国家是日本。

欢迎大家关注我们的专栏:量子位 - 知乎专栏

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复"招聘"两个字。

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态



via 量子位 - 知乎专栏 http://ift.tt/2nKyGrq
RSS Feed

RSS5

IFTTT

商汤联合提出基于 FPGA 的快速 Winograd 算法:实现 FPGA 之上最优的 CNN 表现与能耗


此前,商汤科技联合北京大学等提出一种基于 FPGA 的快速 Winograd 算法,可以大幅降低算法复杂度,改善 FPGA 上的 CNN 性能。论文中的实验使用当前最优的多种 CNN 架构,从而实现了 FPGA 加速之下的最优性能和能耗。


1. 引言


深度卷积神经网络(CNN)在多个计算机视觉任务上取得了优秀的性能,包括图像分类、目标检测和语义分割 [1, 2]。CNN 的高准确率是以极大的计算复杂度为代价的,因为它需要对特征图中的所有区域进行综合评估 [3, 4]。为了解决如此巨大的计算压力,研究者使用 GPU、FPGA 和 ASIC 等硬件加速器来加速 CNN [5–17]。其中,FPGA 因其高性能、低能耗和可重配置性成为有效解决方案。更重要的是,使用 C 或 C++的高级综合(High Level Synthesis,HLS)大幅降低了 FPGA 的编程障碍,并提高了生产效率 [18–20]。


CNN 通常包含多个层,每一层的输出特征图是下一层的输入特征图。之前的研究发现当前最优 CNN 的计算主要由卷积层主导  [6, 7]。使用传统的卷积算法,则输出特征图中的每个元素要经多步乘积累加运算进行单独计算。尽管之前使用传统卷积算法的 FPGA 解决方案取得初步成功 [5–9, 11],但是如果算法更加高效,该解决方案的效率可能会更高。本文展示了使用 Winograd 算法的卷积算法 [21] 如何大幅降低算法复杂度,改善 FPGA 上的 CNN 性能。使用 Winograd 算法,利用元素之间的结构相似性生成输出特征图中的一列元素。这减少了乘法运算的数量,从而降低算法复杂度。研究证明快速的 Winograd 算法适合为具备小型滤波器的 CNN 推导高效算法 [16]。


更重要的是,CNN 的当前趋势是带有小型滤波器的深度拓扑。例如,Alexnet 的所有卷积层(除了第一层)都使用 3 × 3 和 5 × 5 滤波器 [3];VGG16 仅使用 3 × 3 滤波器 [22]。这为使用 Winograd 算法高效实现 CNN 创造了机会。但是,尽管在 FPGA 上使用 Winograd 算法很有吸引力,但仍然存在一些问题。首先,设计不仅要最小化内存带宽要求,而且要匹配计算引擎与内存吞吐量。其次,在 FPGA 上映射 Winograd 算法时存在很大的设计空间。很难推断哪些设计会改善性能,抑或损害性能。


本文设计了一种行缓冲结构为 Winograd 算法缓存特征图。这允许不同的 tile 在卷积运算进行时重用数据。Winograd 算法的计算涉及通用矩阵乘法(GEMM)和元素级乘法(EWMM)的混合矩阵变换。然后,我们设计了一种高效的 Winograd PE,并通过并行化启动多个 PE。最后,我们开发分析模型用于评估资源使用情况,并预测性能。我们使用这些模型探索设计空间,确定最优的设计参数。


本文的贡献如下:


  • 提出一种架构,可在 FPGA 上使用 Winograd 算法高效实现 CNN。该架构把行缓冲结构、通用和元素级矩阵乘法用于 Winograd PE 和 PE 并行化。

  • 开发出分析性的资源和性能模型,并使用该模型探索设计空间,确定最优参数。

  • 使用当前最优的 CNN(如 AlexNet 和 VGG16)对该技术进行严格验证。


图 1:传统卷积算法和 Winograd 卷积算法的对比。我们假设 Winograd 算法的步幅 S 为 1。


3. 架构设计

图 2:架构图示


图 2 表示在 FPGA 上基于 Winograd 算法的卷积层架构。研究者在相邻 tile 的特征图中确定数据重用机会。最后,自然而然地实现了行缓冲。输入特征图 (M) 有多个通道,如图 1 所示。行缓冲的每一行都存储所有通道中同样的一行。Winograd PE 从行缓冲中获取数据。具体来说,给出一个 n×n 输入 tile,Winograd PE 将生成一个 m × m 输出 tile。研究者通过并行化多个通道的处理来启动 PE 阵列。最后,使用双缓冲(double buffer)重叠数据迁移和计算。所有输入数据(如输入特征图、滤波器)最初都存储在外部存储器中。输入和输出特征图通过 FIFO 被迁移至 FPGA。但是,滤波器的大小随着网络深度增加而显著扩大。将所有滤波器加载到片上存储器(on-chip memory)中是不切实际的。在本论文的设计中,研究者将输入和输出通道分成多组。每个组仅包含一部分滤波器。研究者在需要时按组加载滤波器。为方便陈述,下文中假设只有一组。


图 3:Winograd PE 设计图示


4. 自动工具流程


研究者设计了一个自动工具流程将 CNN 自动映射至 FPGA,如图 5 所示。该流程包括设计空间探索引擎(DSEE)。研究者使用 Caffe prototxt 来描述 CNN 的结构 [24]。FPGA 配置参数包括内存带宽、DSP 数量、逻辑单元和片上内存容量。DSEE 的输出是最优解 {n, Tm, Tn}。在步骤 2 中,基于最优解,研究者开发了代码生成引擎(CGE),可自动生成 Winograd 卷积函数。该函数描述整个加速器结构,包括行缓冲、缓冲管理和 Winograd PE。生成的实现是 HLS 兼容的 C 代码。编译指令如内存分区因素、循环展开因素 Tn Tm 以及 FIFO 接口被插入函数中。步骤 3 中,研究者使用 Xilinx HLS 工具将代码合成为寄存器传输级别。最后,研究者使用 Xilinx SDSoC(软件定义片上系统)工具链来生成比特流。


图 5:自动工具流程


5. 实验评估


表 2:设计参数


表 3:Alexnet 的性能对比


表 4:VGG 的性能对比


表 5:GPU 平台对比


论文:Evaluating Fast Algorithms for Convolutional Neural Networks on FPGAs 



论文链接:http://ift.tt/2nMl9zw


摘要:近年来,卷积神经网络(CNN)越来越广泛地应用于计算机视觉任务。FPGA 因其高性能、低能耗和可重配置性成为 CNN 的有效硬件加速器而备受关注。但是,之前基于传统卷积算法的 FPGA 解决方案通常受限于 FPGA 的计算能力(如 DSP 的数量)。本论文展示了快速的 Winograd 算法,该算法可以大幅降低算法复杂度,改善 FPGA 上的 CNN 性能。我们首先提出了一种新型架构在 FPGA 上实现 Winograd 算法。我们的设计利用行缓冲结构(line buffer structure)来高效重用不同 tile 的特征图数据。我们还高效架构 Winograd PE 引擎,通过并行化启动多个 PE。同时存在复杂的设计空间有待探索。我们提出一种分析模型,用于预测资源使用情况、推断性能。我们使用该模型指导快速的设计空间探索。实验使用了当前最优的 CNN,结果表明其实现了在 FPGA 上的最优性能和能耗。我们在 Xilinx ZCU102 平台上达到了卷积层平均处理速度 1006.4 GOP/s,整体 AlexNet 处理速度 854.6 GOP/s,卷积层平均处理速度 3044.7 GOP/s,整体 VGG16 的处理速度 2940.7 GOP/s。


]]> 原文: http://ift.tt/2E2m0at
RSS Feed

机器知心

IFTTT

快速开启你的第一个项目:TensorFlow项目架构模板


作为最为流行的深度学习资源库,TensorFlow 是帮助深度学习新方法走向实现的强大工具。它为大多数深度学习领域中使用的常用语言提供了大量应用程序接口。对于开发者和研究人员来说,在开启新的项目前首先面临的问题是:如何构建一个简单明了的结构,本文或许可以为你带来帮助。


项目链接:http://ift.tt/2Eo6ODK


TensorFlow 项目模板


简洁而精密的结构对于深度学习项目来说是必不可少的,在经过多次练习和 TensorFlow 项目开发之后,本文作者提出了一个结合简便性、优化文件结构和良好 OOP 设计的 TensorFlow 项目模板。该模板可以帮助你快速启动自己的 TensorFlow 项目,直接从实现自己的核心思想开始。


这个简单的模板可以帮助你直接从构建模型、训练等任务开始工作。


目录


  • 概述

  • 详述

  • 项目架构

  • 文件夹结构

  • 主要组件

  • 模型

  • 训练器

  • 数据加载器

  • 记录器

  • 配置

  • Main

  • 未来工作


概述


简言之,本文介绍的是这一模板的使用方法,例如,如果你希望实现 VGG 模型,那么你应该:


在模型文件夹中创建一个名为 VGG 的类,由它继承「base_model」类


  1.   class VGGModel(BaseModel):

  2.        def __init__(self, config):

  3.            super(VGGModel, self).__init__(config)

  4.            #call the build_model and init_saver functions.

  5.            self.build_model()

  6.            self.init_saver()


覆写这两个函数 "build_model",在其中执行你的 VGG 模型;以及定义 TensorFlow 保存的「init_saver」,随后在 initalizer 中调用它们。


  1.    def build_model(self):

  2.        # here you build the tensorflow graph of any model you want and also define the loss.

  3.        pass

  4.     def init_saver(self):

  5.        #here you initalize the tensorflow saver that will be used in saving the checkpoints.

  6.        self.saver = tf.train.Saver(max_to_keep=self.config.max_to_keep)


在 trainers 文件夹中创建 VGG 训练器,继承「base_train」类。


  1.        class VGGTrainer(BaseTrain):

  2.        def __init__(self, sess, model, data, config, logger):

  3.            super(VGGTrainer, self).__init__(sess, model, data, config, logger)


覆写这两个函数「train_step」、「train_epoch」,在其中写入训练过程的逻辑。


  1.       def train_epoch(self):

  2.        """

  3.       implement the logic of epoch:

  4.       -loop ever the number of iteration in the config and call teh train step

  5.       -add any summaries you want using the sammary

  6.        """

  7.        pass

  8.    def train_step(self):

  9.        """

  10.       implement the logic of the train step

  11.       - run the tensorflow session

  12.       - return any metrics you need to summarize

  13.       """

  14.        pass


在主文件中创建会话,创建以下对象:「Model」、「Logger」、「Data_Generator」、「Trainer」与配置:


  1.      sess = tf.Session()

  2.    # create instance of the model you want

  3.    model = VGGModel(config)

  4.    # create your data generator

  5.    data = DataGenerator(config)

  6.    # create tensorboard logger

  7.    logger = Logger(sess, config)


向所有这些对象传递训练器对象,通过调用「trainer.train()」开始训练。


  1.       trainer = VGGTrainer(sess, model, data, config, logger)

  2.    # here you train your model

  3.    trainer.train()


你会看到模板文件、一个示例模型和训练文件夹,向你展示如何快速开始你的第一个模型。


详述


模型架构



文件夹结构


  1.       ├──  base

  2.   ├── base_model.py   - this file contains the abstract class of the model.

  3.   └── ease_train.py - this file contains the abstract class of the trainer.

  4. ├── model               -This folder contains any model of your project.

  5.   └── example_model.py

  6. ├── trainer             -this folder contains trainers of your project.

  7.   └── example_trainer.py

  8.  

  9. ├──  mains              - here's the main/s of your project (you may need more than one main.

  10. │                        

  11. │  

  12. ├──  data _loader  

  13. │    └── data_generator.py  - here's the data_generator that responsible for all data handling.

  14. └── utils

  15.     ├── logger.py

  16.     └── any_other_utils_you_need


主要组件


模型


  • 基础模型


基础模型是一个必须由你所创建的模型继承的抽象类,其背后的思路是:绝大多数模型之间都有很多东西是可以共享的。基础模型包含:


  • Save-此函数可保存 checkpoint 至桌面。

  • Load-此函数可加载桌面上的 checkpoint。

  • Cur-epoch、Global_step counters-这些变量会跟踪训练 epoch 和全局步。

  • Init_Saver-一个抽象函数,用于初始化保存和加载 checkpoint 的操作,注意:请在要实现的模型中覆盖此函数。

  • Build_model-是一个定义模型的抽象函数,注意:请在要实现的模型中覆盖此函数。


  • 你的模型


以下是你在模型中执行的地方。因此,你应该:


  • 创建你的模型类并继承 base_model 类。

  • 覆写 "build_model",在其中写入你想要的 tensorflow 模型。

  • 覆写"init_save",在其中你创建 tensorflow 保存器,以用它保存和加载检查点。

  • 在 initalizer 中调用"build_model" 和 "init_saver"


训练器


  • 基础训练器


基础训练器(Base trainer)是一个只包装训练过程的抽象的类。


  • 你的训练器

以下是你应该在训练器中执行的。


  • 创建你的训练器类,并继承 base_trainer 类。

  • 覆写这两个函数,在其中你执行每一步和每一 epoch 的训练过程。


数据加载器


这些类负责所有的数据操作和处理,并提供一个可被训练器使用的易用接口。


记录器(Logger)


这个类负责 tensorboard 总结。在你的训练器中创建一个有关所有你想要的 tensorflow 变量的词典,并将其传递给 logger.summarize()。


配置


我使用 Json 作为配置方法,接着解析它,因此写入所有你想要的配置,然后用"utils/config/process_config"解析它,并把这个配置对象传递给所有其他对象。


Main


以下是你整合的所有之前的部分。


1. 解析配置文件。

2. 创建一个 TensorFlow 会话。

3. 创建 "Model"、"Data_Generator" 和 "Logger"实例,并解析所有它们的配置。

4. 创建一个"Trainer"实例,并把之前所有的对象传递给它。

5. 现在你可通过调用"Trainer.train()"训练你的模型。


未来工作


未来,该项目计划通过新的 TensorFlow 数据集 API 替代数据加载器。


]]> 原文: http://ift.tt/2E5R60X
RSS Feed

机器知心

IFTTT