深度学习的下一个大热门——Swift

来源商业新知网,原标题:为什么Swift会是深度学习的下一个大热门?

如果你喜欢编程,当你听到Swift,你可能会想到iOS或MacOS的应用程序开发。如果你正在进行深度学习,那么你一定听说过Swift for Tensorflow(缩写为S4TF)。然后,你可以问自己:“为什么谷歌要为Swift创建一个TensorFlow版本?”Python和c++已经有了版本;为什么要添加另一种语言?在这篇文章中,我将试着回答这个问题,并概述为什么你应该认真遵循S4TF以及Swift语言本身的原因。这篇文章的目的不是给出非常详细的解释,而是提供一个总体概述和大量的链接,这样,如果您感兴趣,就可以进行更深入的研究。

Swift背后有强大的支持

Swift是Chris Lattner在苹果工作时创造的。现在,Chris Lattner就职于谷歌Brain,世界上最好的人工Max Pechyonkin之一,5月27日·5分钟阅读智能研究团队。事实上,Swift语言的创造者现在在实验室从事深度学习的研究来告诉你,这是一个严肃的项目。

不久前,谷歌的人意识到,尽管Python是一种优秀的语言,但是它有许多难以克服的限制。TensorFlow需要一种新的语言,经过长时间的考虑,Swift被选为候选人。我不会在这里详细介绍,但是有一个文档描述了Python的缺点,以及考虑了哪些其他语言,以及最终如何将其缩小到Swift。

不仅仅是一个库

Swift对于TensorFlow不仅仅是另一种语言的TF。它本质上是Swift语言本身的另一个分支(在git的意义上)。这意味着S4TF不是一个库;它本身是一种语言,内置了支持TensorFlow所需的所有功能的特性。例如,S4TF中有一个非常强大的自动微分系统,这是计算梯度所需要的深度学习的基础之一。对比一下Python,在Python中,自动区分不是语言的核心组件。最初作为S4TF的一部分开发的一些功能后来被集成到Swift语言本身。

Swift很快

当我第一次知道Swift的运行速度和C代码一样快时,我很惊讶。我知道C是高度优化的,可以达到非常高的速度,但这是以微管理内存为代价的,这导致C的内存不安全)。此外,C语言不是一门很容易学的语言。

现在,Swift在数值计算中运行得和C一样快,而且它没有内存安全问题,而且它更容易学习。Swift背后的LLVM编译器非常强大,并且有非常高效的优化,这将确保您的代码运行得非常快。

在SWIFT中可以使用多种代码

因为机器学习的Swift还处于非常早期的阶段,这意味着适合Swift的机器学习库并不多。不必担心,因为Swift具有惊人的Python互操作性。只需导入Swift中的任何Python库,它就能正常工作。

类似地,您可以将C和c++库导入到Swift中(对于c++,您需要确保头文件是用纯C编写的,而没有c++特性)。总之,如果您需要特定的功能,但它还没有在Swift中实现,您可以导入相应的Python、C或c++包。令人印象深刻的!

SWIFT可以降到很低的水平

如果您曾经使用过TensorFlow,那么很可能是通过Python包完成的。在底层,Python版本的TensorFlow库底层有C代码。所以当你调用TensorFlow中的任何函数时,在某种程度上你会碰到一些C代码。这意味着检查源代码的速度是有限制的。例如,如果您想了解卷积是如何实现的,您将无法看到Python代码,因为它是在C语言中实现的。

在Swift中,情况就不同了。Chris Lattner称Swift是“LLVM(汇编语言)的语法糖”。这意味着从本质上说,Swift非常接近硬件,而且在硬件之间没有其他用C编写的代码层。这也意味着Swift代码非常快,如上所述。这一切都使您作为开发人员能够从一个非常高的级别检查代码到一个非常低的级别,而不需要进入C语言。

接下来是什么

Swift只是谷歌深度学习创新的一部分。还有一个非常密切相关的组件:MLIR,它代表多级中间表示。MLIR将是谷歌统一的编译器基础设施,允许用Swift(或任何其他受支持的语言)编写代码,并将其编译到任何受支持的硬件。目前,针对不同的目标硬件有大量的编译器,但是MLIR将改变这一点,不仅允许代码重用,还允许编写定制的编译器底层组件。它还将允许研究人员应用机器学习来优化底层算法:

虽然MLIR充当ML的编译器,但是我们也看到它支持在编译器中使用机器学习技术!这一点尤其重要,因为开发数字库的工程师的扩展速度赶不上ML模型或硬件的多样化。

想象一下能够使用深度学习来帮助优化数据的底层内存平铺算法(类似于Halide试图完成的任务)。而且,这仅仅是机器学习在编译器中的开始和其他创造性应用!

总结

如果你喜欢深度学习,那么Swift是一门你应该开始学习的语言。与Python相比,它具有许多优势。谷歌正在大力投资,使Swift成为其TensorFlow ML基础设施的一个关键组件,而且很有可能Swift将成为深度学习的语言。所以,早点开始学习Swift也会是你一个先发制人的优势。

原文地址:https://www.cnblogs.com/xinzhihao/p/10968587.html

时间: 2024-10-12 03:55:18

深度学习的下一个大热门——Swift的相关文章

深度学习:从头设计一个TensorFlow3一样的新一代深度学习系统,到底需要把握哪些要点?

深度学习工具潮流滚滚,各种工具层出不穷.也有各种文章从易用性,可移植性,灵活性和效率方面对于各个系统进行比较.这篇文章希望从系统设计上面来讲来回答这个讨论这个问题:如果想到从头设计一个TensorFlow3一样的新一代深度学习系统,到底需要把握哪些要点. 计算单元:从layer abstraction到operator 大家熟悉的第一代深度学习系统,以cuda-convnet21和caffe为代表.这些系统主要的一大特点是提出了一个以深度学习计算层次layer为基本单元的计算单位.不同的laye

回望2017,基于深度学习的NLP研究大盘点

回望2017,基于深度学习的NLP研究大盘点 雷锋网 百家号01-0110:31 雷锋网 AI 科技评论按:本文是一篇发布于 tryolabs 的文章,作者 Javier Couto 针对 2017 年基于深度学习的自然语言处理研究进行了大盘点.雷锋网 AI 科技评论根据原文进行了编译. 在过去的几年里,深度学习(DL)架构和算法在诸如图像识别和语音处理等领域取得了世人瞩目的进步.然而在最开始的时候,深度学习在自然语言处理(Natural Language Processing, NLP)领域的

云计算、机器学习、深度学习、人工智能和大数据,主要有什么关系?

业外人士如何了解云计算.机器学习.深度学习.人工智能.和大数据之间有什么内在联系?从应用的角度来阐述一下这五个概念之间的联系. 这五个概念按照领域可以划分成两个大部分,先分别介绍这些概念的内部联系,然后再综合介绍他们整体之间的联系. 云计算和大数据 云计算和大数据的很多研究内容是重叠的,比如分布式存储.分布式计算,可以说大数据是云计算发展到一定阶段的产物.云计算和大数据之间主要的区别在于关注的"点"不同,云计算强调服务(IaaS.PaaS.SaaS),而大数据则强调数据的价值(数据采集

AngularJS - 下一个大框架

AngularJS AngularJS是web应用的下一个巨头. AngularJS如果为创建web应用而设计,那它就是HTML的套路了.具有数据绑定, MVW, MVVM, MVC, 依赖注入的声明式模板和出色的可测试性都是用纯客户端 JavaScript来实现的! AngularJS 是一个创建富客户端应用的JavaScript MVC框架,它组织良好,经过严格测试,多功能,强大并且十分灵活.你仍然需要具有服务端后台,但大多数的用户交互逻辑将优雅地放到客户端上处理. AngularJS是一个

JavaScript是你应当学习的下一个(或第一个)编程语言

我已经被多次问到,如果我刚刚开始,我应当学习什么编程语言,答案一定是JavaScript,下面是为什么: 最简单的开发环境 我相信人们进入编程最大的障碍实际上是编写代码相关的所有其它方面的东东.你能够更快地编写代码(至少在你开始学习的时候),在我看来就是一个胜利.每个人都可以访问web浏览器,这意味着每个人现在也能访问一个简单的开发环境了.如果你在使用Mac下的Chrome,按快捷键cmd-opt-j.就来到了控制台,现在你就可以开始编写JavaScript并管理你看到的网页了.真不错.还有大量

迅雷程浩:企业外包服务,下一个大的风口?(2B业务一定要懂销售和营销的人,这点和2C 不一样)

我今年暑假去了趟硅谷,一天去一个朋友的公司拜访,发现这公司没有前台,前台桌子上放了一个显示器.我刚进去,显示器里的老印就跟我打招呼 "How may I help you?" 事后我的朋友和我讲,这个老印人在印度,他一个人会在同一时间服务好几家公司的前台.这让我非常impressed. 这就是我在硅谷看到的“虚拟前台” 我们过去做企业的时候外包用的比较少,但是这两年企业外包市场开始变火,核心原因还是需求变刚.我从企业的角度,有一些切身体会,总结出以下几个原因: 1.企业需要通过外包服务

ACM学习之路————一个大整数与一个小整数不得不说得的秘密

这个相对于两个大整数的运算来说,只能说是,low爆了. 只要利用好除法的性质,这类题便迎刃而解.O(∩_∩)O哈哈~ //大整数除一个int数 #include<iostream> #include<cstdio> #include<cstring> using namespace std; char s[1000],result[1000]; int main() { long long divis; int n,i,k,flag,len; char c; while

Node.js成为下一个大事件的七大原因

现代的开发人员旨在于定期创造新的东西,可能每隔一两个月会交付推出一项新的技术.一些没有很好派生和管理地技术当然就会很快地消失.Node.js似乎与这些技术截然不同,自2009年推出以来,它目前的技术已经相当成熟,并且越来越受欢迎! Node.js是为在服务器端和客户端使用JavaScript创建应用程序的一个开源的平台.JavaScript的增涨使用已经改变了今天的开发主体,在这样的一个大背景下,Node.js现在已经成为了很多开发人员的重要工具.Node.js使用了Google的V8引擎,它有

一看觉得不错好当即买下一个大套

 http://weheartit.com/zhanshichi/collections/85549077-2015-01-21 http://weheartit.com/zhaoshancai/collections/85549065-2015-01-21 http://weheartit.com/mihuailan/collections/85549080-2015-01-21 http://weheartit.com/quanbeidu/collections/85549071-201