加入收藏 | 设为首页 | 会员中心 | 我要投稿 信阳站长网 (https://www.0376zz.com.cn/)- 基础存储、混合云网络、云安全、数据仓库、大数据!
当前位置: 首页 > 站长资讯 > 动态 > 正文

防御的七种战术

发布时间:2021-02-19 13:27:08 所属栏目:动态 来源:互联网
导读:程工作,更智能地工作 总部位于加拿大的BlueTreeAI联合创始人莎拉富兰克林(SarahFranklin)告诉我们,物联网已经改变了人们的工作方式已有一段时间了,但随着COVID-19导致的远程工作者大量涌入,这项技术有机会大放异彩。各种公司都可以为所有类型的物联网创

程工作,更智能地工作

总部位于加拿大的BlueTreeAI联合创始人莎拉·富兰克林(SarahFranklin)告诉我们,物联网已经改变了人们的工作方式已有一段时间了,但随着COVID-19导致的远程工作者大量涌入,这项技术有机会大放异彩。各种公司都可以为所有类型的物联网创建一个定制的工作空间。它可以为弹出的特定问题创建并提供个性化的解决方案。每天在工作空间里有太多的选择和变量,人类根本无法抓住它们。她说:“当我们通过智能设备启用物联网时,它们可以捕捉到独特或模糊的变量并加以利用,然后我们就可以将这一点转化为我们的优势。”甚至在COVID-19到达之前,远程工作就在增加,而且很可能还会继续增长。通过物联网的应用,许多远程员工可以在所需位置更智能、更安全地工作。

那么,后COVID-19时代的物联网应用会发生什么呢?总部位于韩国的OmerCheema领导三星物联网业务团队。他指出,remote-x包含三个关键领域:远程工作,远程教育,远程医疗。他认为,你还可以增加网上购物(零售/供应链),但他将其定义为数字化趋势,而不是远程工作。

1. 远程工作

大多数远程工作需要连接互联网的设备,如笔记本电脑、手机、网络摄像头、麦克风。像Zoom这样的公司正利用从体力劳动转移的趋势,允许由上述设备组成的生态系统与他们的云服务连接起来。自大流行开始以来,它们的股票表现显示了市场对它们有能力利用这一机会的信心。

2. 远程教育

与远程工作非常相似的物联网设备。同一组公司,如用于麦克风和网络摄像头的Logitech,用于云服务的Zoom。新的智能服务可以识别说话人,实时转录,更好的虚拟白板等。在家中进行工作和教育时,需要解决背景噪音和视觉干扰。改善这些功能的新算法将很重要。


 

深度学习系统的核心问题在于 autodiff,这是 SGD 算法的数学特点决定的。SGD 算法通过交替执行前向计算过程(forward pass)和反向计算过程(backward pass),即可从训练数据归纳出模型的参数。模型加参数就是知识。这里的工程挑战在于模型研究者在定义模型的时候,就附带描述了前向计算过程,但是反向计算过程很难由人来描述,最好有一个程序自动从前向计算过程推导出反向计算过程。这个自动推导被称为 autodiff。

目前有两种 autodiff 的策略。第一种在运行时推导,也被称为 dynamic net 和 tape-based approach。基本思路是不管前向计算过程有多复杂,哪怕包括 if-else、循环、函数定义和调用、甚至 coroutine 和 multithreading,只要把依次执行的基本操作(operator)记录下来,到一个 tape 里,那么反向计算过程就是回溯这个 tape 里的记录,并且依次调用每个 operator 对应的求导数 operator(gradient operator)。这是 PyTorch、TensorFlow eager execution、以及 Paddle Tape 采用的策略。这种策略和编译器关系不大,和 JIT compilation 有点关系。

另一种策略是运行之前推导反向计算过程,为此需要引入一个专门做 autodiff 的编译器。TensorFlow graph mode、Caffe/Caffe2、Paddle Fluid、Google Tangent、Julia、Swift for TensorFlow 用的是这个策略。编译器一般来说是把源语言描述的源程序翻译成目标语言描述的目标程序。但是前三种技术偷懒了,没有引入源语言,而是让用户通过调用 Python library 来描述前向计算过程。Google Tangent、Julia、Swift for TensorFlow 分别让用户用 Python 语言、Julia 语言、Swift 语言来定义函数,从而描述前向计算过程,并且能把前向计算函数翻译成反向计算函数。

严格地说,Julia 的作者实现了多种 autodiff 方案:有运行时的、也有编译时的、也有二者混合的。明胜在帮我修改此文时提醒:

For a different vision,where the same language is used to both implement kernels and construct+executeprograms/graphs based on the kernels, see [8].

这里的 kernel 指的是深度学习基本操作单元 operator 的实现。

编译时和运行时 autodiff 这两种策略,也都适用于 Go+,而且并不妨碍 Go+ 复用现有技术。就像数据科学领域应该复用 LAPACK 这些基础库,深度学习领域也应该复用基础的 operators 和 gradient operators。

运行时用 tape 实现 autodiff 的策略的实现更简单。我记得杨扬用一个星期时间就开发了 Paddle Tape。而编译的策略复杂很多。Paddle Fluid 二十多人在 TensorFlow 团队 Yuan Yu 老师的工作[9] 的 基础上,用了好几个月的时间,才搞定 if-else、循环、函数定义和调用的 autodiff。

这些尝试提醒我们复用社区核心技术的重要性。比如,用 MLIR 代替计算图从而能描述更复杂的控制流 —— 计算图肯定没法描述 goroutine 和 select。用 TVM 作为编译器后段(backend),用深度学习技术学习如何优化深度学习程序。所有这些技术的输出,都是对基本 operaotor 的调用。从这个角度看,之前深度学习技术生态积累的 operators 类似 built-in functions。这也是洪明胜在修改此文时反复提醒的。

希望不久的将来,Go+ 可以作为一种新的深度学习前端语言,与 Python、Julia、Swift 并列,共同复用更底层的 IR、编译器后段、以及基本 operators。

小结

我理解未来 Go+ 项目的核心战术工作是:在维持 Go 的语法简洁性的本色之上,合理准入简化语法 —— 不要像 Python 和 C++ 那样融入太多灵活性,同时在 Go 的极简语法规范之上,适当地更加灵活。

此外,通过社区合作开发 numgo+ 和 GoTorch 这样的探索性项目,丰富技术生态是社区的战略方向。甚至更进一步,成为一种深度学习编译器的前端语言,以复用多年来社区沉淀的深度学习底层计算技术。

最后,感谢老许和 Go+ 的核心贡献者柴树杉和陈东坡、Go 社区的杰出贡献者 Asta Xie、以及我的同事 ONNX 社区核心贡献者张科校阅。



 

(编辑:信阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读