加入收藏 | 设为首页 |

奔驰g-Swift 要脚踩 Python上位?程序猿:凭什么啊?

海外新闻 时间: 浏览:361 次

当程序员听到Swift时,或许都会联想到iOS或MacOS的运用开发。假如你正在研讨深度学习,那么你必定听说过Swift版的TensorFlow。你或许不由想问:“为什么Google会创立Swift版的TensorFlow?现在已经有Python和C++版别了,为什么还要增加另一种言语?”

我将在这篇文章中为你回答这个问题,并概述为什么你需求留心Swift版的TensorFlow以及Swift言语自身。我不计划在文本中供给具体的解说,可是我会供给很多链接,假如你对这个论题感兴趣的话,那么能够深化发掘。



Swift具有强力的后援


Swift是由Chris Lattner在苹果作业时创立的。现在,Chris Lattner在Google Brain作业——这是世界上最先进的人工智能研讨团队之一。 Swift言语的创始人现在在研讨深度学习的实验室作业,这个现实阐明这是一个严重的项目。

前段时间,Google意识到尽管Python是一种优异的言语,但它仍有寓言故事的成语许多难以克服的局限性。TensorFlow需求一种新言语,经过长期的考虑后,这个重担落到了Swift肩上。我不计划对此做具体的介绍奔驰g-Swift 要脚踩 Python上位?程序猿:凭什么啊?,可是你能够自行阅览这篇文档(https://github.com/tensorflow/swift/blob/master/docs/WhySwiftForTensorFlow.md),文中描绘了Python的缺陷,有关其他言语的考量,以及终究选中了Swift的经过。



Swift版的TensorFlow不仅仅是一个代码库


Swift版的TensorFlow不仅仅是另一种言语的TensorFlow。

从本质上来说,它是Swift言语的另一个分支(就像在git上创立branch相同)。这意味着Swift版的TensorFlow并不是一个代码库, 它自身便是一种言语,它内置的功用支撑TensorFlow所需的一切功用。

例如,Swift版的TensorFlow具有十分强壮的主动微分体系,这是深度学习核算梯度所需的根底。比较之下,Python的主动微分体系不是言语的中心组成部分。有一些开端为Swift版的TensorFlow开发的功用后来被集成到了Swift言语自身中。



Swift十分快


当第一次得知Swift的运转速度与C代码相同快时,我感到十分惊奇。我知道C经过了高度优化,且能够完成十分高的速度,但这需求以微内存办理为价值,因而C不能保证内存的安全。此外,C不是一种十分简单学习的言语。

现在,Swift的数值核算速度与C相同快,还没有内存安全的问题,并且更简单学习。Swift背面的LLVM编译器功用十分强壮,并且具有十分高效的优化功用,能够保证代码快速地运转。



你能够在Swift中运用Python、C和C++代码


由于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十分接近硬件,Swift与硬件之间没有其他用C写的附加层。这也意味着Swift代码十分快,如上所述。

因而,开发人员能够查看一切的代码,无论是高层的代码仍是十分底层的代码,都无需深化C。



将来的开展


Swift仅仅Google深度学习立异的一部分。还有另一个十分密切相关的组件:MLIR(Multi-Level Intermediate Representation,多层中心表明)。MLIR将会成为Google一致的编译根底设施,它答应你用Swift(或任何其他支撑的言语)编写代码,并编译成任何支撑的硬件。

现在,有许多针对不同方针硬件的编奔驰g-Swift 要脚踩 Python上位?程序猿:凭什么啊?译器,但MLIR将改动这种局势,它不仅能够支撑代码的可重用性,并且还答应你编写编译器自定义的底层组件。一起,它还答应研讨人员运用机器学习来优化初级算法:

尽管MLIR是机器学习的编译器,但咱们也看到它能够将机器学习的技能运用到编译器自身!这一点十分重要,由于工程师开发数值核算奔驰g-Swift 要脚踩 Python上位?程序猿:凭什么啊?库的速度跟不上机器学习模型或硬件多元化的速度。

幻想一下,咱们能够运用深度学习来优化处理数据的底层内存切片算法(类似于Halide正在努力完成的使命)。并且,这仅仅一个初步,还有其他机器学习的创造性运用也能够在编译器中运用!



总结


假如你正在研讨深度学习,那么我主张你开端学习Swift言语。与Python比较,Swift具有多方面的优势。Google正在大力出资,让Swift成为TensorFlow多层根底设施的要害组成部分,并且Swift很或许成为深度学习的言语。 因而,先下手为强,尽早开端学习Swift吧。