Robinlywww.robin.ly

Facebook AI 贾扬清:AI,从大数据问题演进到高性能计算问题

Robin.ly 是一个全新的视频内容平台,旨在为广大工程师和研究人员提高对商业,创业,投资,领导力的理解。第二期是Robin.ly线下活动,创始人Alex Ren 采访Caffe作者、Facebook Director of AI Infrastracture 贾扬清博士,并于场下互动问答。 以下为采访实录摘要,原始视频请访问www.robin.ly 完整视频请在文末扫二维码关注

Alex: 最早的时候听说Caffe是你的一个side project,不是你论文的主要内容。当时开发Caffe的初衷是什么?中间经历过什么过程,可以给大家讲一下吗?

Yangqing:主要的原因也是因为AI research,以前researcher写code,像Matlab之类的,很难reproduce。在2011年,2012年的时候大家还没有太强的reproduceable research的这样的想法,所以在AlexNet的paper出来之后呢,大家都没办法有一个比较reliable的平台,来实现它的结果。当时我们在Berkeley希望用Caffe来推动独立研究,所以当时内部开始试图来呈现它的结果,相当是一个于side results。

Alex: 整个的过程你大概做了多久?

Yangqing :两个月吧! 

Alex: 那后来到了Facebook之后继续做Caffe你有遇到什么新的问题吗?

Yangqing: Caffe的话因为已经六年多了,所以基本上当时有很多历史遗留问题。最开始做Caffe的时候大家都是照着computer vision的模式来做的,所以很多design等等都是在CV方面比较make sense,在NLP等等其他地方都相对比较难一些。当时整个modular 的design等等还没有太清楚。Facebook在15年的时候其实很多产品里都还在用Caffe的runtime来部署,但是后来整个flexibility都会有些问题,所以这也是我们后来写Caffe2跟PyTorch的原因。

Alex: 前段时间你们宣布了PyTorch1.0的发布,我记得Caffe主要是做production的,而PyTorch主要是research这个阶段,当你把这它们合并在一起的时候,是企图解决什么问题呢?

Yangqing: 这个我们目前也是一个比较explorative的一个方向,包括我觉得整个行业大家都在往这个方向走。比如TensorFlow在TF2.0的announcement里面提到了eager mode,或者说是imperative mode。最大的一个挑战基本上是research和production,这两个 fundamentally是两个不太一样的priority。Research需要flexibility,一切都应该可以调;而Production是要performance的时候,最后总是会需要有一些相对比较flexible的地方。所以很多时候都是一个看具体的实际应用然后来consciously make some compromises。就比如说像computer vision也就是计算机视觉,包括像推荐系统这种实在是太大规模,even1% or 2% accuracy matters,在这种情况下我们会需要牺牲一些flexibility,来更加注重在performance上边。像一些新的应用比如说像自然语言处理机器翻译等,可能对于resource的要求没有那么高。我们可以sacrifice比如说10%的performance,对于model iteration的要求比较高,所以这个就更加偏向于research这边。

贾扬清谈 PyTorch与Caffe的合并

Alex: 上次我跟你聊,你说到你比较关注硬件方面的发展。我想知道你的角度是什么,是software hardware co-design吗?

Yangqing: 更加偏向于software hardware co-design吧。CPU和GPU它的好处不光是在硬件上,而且是在软件上。最可怕的事情是什么呢,就是说我们知道它很好,但是最后我们大家发现说,没人能在上边写程序。Cause it’s too opaque。NVIDIA非常成功的原因是因为,我可以随便找一个人,我可以花半天的时间,他就可以开始写CUDAcode,只要他懂C++,我就能让他写CUDA code。NVIDIA,从04年CUDA出来以后到今天,NVIDIA把它整个software layer做的如此之好,使得它的入门门槛很低。如果我突然来一个FPGA,没有一个月的时间,没人能在上边写程序,所以说新的硬件最大的一个挑战不光是在硬件上而且是在软件上。这也是为什么我对软硬件协同设计很感兴趣。

Alex: 也就是说它搭建了一个eco-system,给developer们有更方便的方法去用,对吧?(对!)然后,我想问一个其他方面的问题。Facebook也是少有的做比较顶尖的AI research的一个公司,你在里边带领AI infrastructure这块的一些研究。我知道Facebook,Google这样的公司呢,你发现它有个特点,就是它有很多大牛都在一起工作,对吧?(嗯。)而很多别的公司经常有这种一山不能容二虎这种现象。我不知道你在这方面有什么体会,在这种环境里,我想有些人可能也在创业,或者在自己公司里lead research,你对他们有什么心得可以分享?是什么样的文化使得Facebook在research这方面有个cutting-edge research的结果?

Yangqing: 我觉得更多的算是计算机领域的文化吧,比如说大家最近经常能够听到的消息比如像金融这个领域目前逐渐的越来越难吸引到顶尖的人才。一定的原因就是因为,整个领域太封闭了,谁都不知道其他人在做什么。那么这个时候就有很简单的一个事,就是我们有句老话说的,叫独木难支嘛,如果一个领域大家都在钻着自己做自己的事情的话,有很多collective wisdom就很难被激发出来。而计算机这个领域的话,大家很多的想法,第一是说开源,第二是open research,第三是非常频繁的交流。有很多的平台本身就是,像我们用的Reddit啊,Hacker news都是一个很好的平台,包括Robin.ly等等,所以我觉得整个这样的一个文化使大家可以更快的把这个蛋糕做大,等到蛋糕做大了之后,谁都能从中获益。

Alex: 谢谢你提到了我们!你提到了Reddit,我看到了你Reddit上有篇评论,里边提了一个词叫unframework,因为当时是Caffe 2.0的时候你提的,能给我们解释一下是什么意思吗?

Yangqing:Unframework的idea基本上就是说以前大家在做AI的software的时候就是说,一个framework就什么都有嘛,对吧。当时比如说六年前大家说Caffe,Torch跟Theano,反正就是一个framework,你在里头或者外头想做什么也很难,就是说它是一整个kind of crisp。现在的话比如说,像我们有不同的硬件出来,有TPU,比如说我们有visualization等等,逐渐的就有点类似于一个unit operation system,就是说我做完一个operation system的时候不是说所有的差都完了我可以在上面装app,我可以在上面装extension了。所以就是说发展到今天,framework是一个很小的一部分,外面有很多其他各种譬如说硬件啊,visualization啊等等。举个例子比如说PyTorch目前我们在跟Google合作来一起做一个Tensorboard这样的,做一个a very nicevisualization tool for AI,就是不光限制在一个framework,而是说build different components,get components clip,用各种各样的方式plug起来。

Alex: 明白。那我问一下我最后一个问题吧,就是你当初也是典型的engineering research出来的,现在去lead的组织,有很多工程师。你在softskills这块,你觉得在这个过程中你有些什么收获,给大家有什么建议?

Yangqing: 这方面的话,可能一个人做事情和一群人做事情还是有一些区别的。第一个是我们所谓叫innovator’s dilemma:一开始大家会觉得这个team做的太慢了,这事儿我一个人能够两个小时就能搞定的。为什么这个team一天还没搞定。大家有时候怎么样来properly set expectation,因为自己一个人的bandwidth是有限的嘛,怎么样来帮助整个team能够合作把这个事情往前推。可能在单个的事情上efficiency不好但是在整个大的全组project上能够更加accelerate一些;第二个是怎么样grow people,就是create space for people to make mistakes,怎么样能让大家来逐渐take ownership。第三个是管理层面提到的give away Legos,就是说focus在别人需要你的地方而不是自己做的最好的地方。我觉得在做technical management或者technical leadership的这块儿其实还是挺有意思的。

Alex: 接下来欢迎场下同学提问。

Alex 介绍Robin.ly平台

Q1: 贾博士你好,我来自OPPO美国研究所。有个问题想请教你,前段时间有一个语言叫Julia横空出世,号称集百家之长,所以我想问问你对这个语言有什么看法,有没有打算基于Julia这个语言建立一个framework。

Yangqing: 我们其实尝试过很多各种各样的语言,所以说我不太好评论。Julia的好处是它对于low level language migration非常好,比如大家如果用Python的话,可能你在Python里写for loop, performance非常差。Julia对这个low level language binding的performance一直都是挺不错的。我们考虑过很多的language,包括我们自己Facebook以前有Torch,Torch是基于Lua的,我们最后发现了一点就是说,it’s not about the language itself,it’s about the eco-system。Python平心而论很多人都说Python是一个很烂的语言,但是它有社区,它的整个的eco-system非常好,如果我要装Python,我有Anaconda;如果我要用Python visualization,我有Matplotlib;如果我要有numerical computation我有NumPy和SciPy,如果我要做图像处理,我有Scikit-image。 所以说最后我们发现这个eco-system很重要,当年Luatorch遇到的很大的一个瓶颈是没有人知道怎么写Lua。大家都很懒,我也很懒,我不想为了学一个新语言而学一个新语言,whatever works for me。所以说这个时候Python作为一个很不错的compromise,似乎是目前整个industry大家比较common的选择。

Q2:你好,我有一个问题: PyTorch是一个用户很多的一个系统,还有一些用户比较多的系统就是TensorFlow,背后都有一个很大的community,有很大的公司在支持,但是其实你刚才也提到了就是TensorFlow也出了这个eager mode大家需求也都一样,都有这个research developability或者interactivity这方面的需求,deployment都有scalability或者performance这方面的需求。那最后有没有这两个系统或者说市面上所有系统合并到一起的可能,从business的角度来说什么样的条件会造成这种合并。 

Yangqing: 我问你这样一个小问题。我们在用Uber,Gmail,或者calendar的时候,我们会担心是在Android上面,还是iOS上面吗?就是说essentially,到最后 product这边, as long as we have a platform for us to run models , it's probably gonna be not different. 对于uber来说,它可能并不担心Ios或者Android,假如说他们能合并,那这是一个最省事儿的事儿,那将来他们就不用写app写两套了。但是it's not a deal breaker。 然后从framework的角度来说,我觉得一方面大家开玩笑说 There's a war on frameworks, 对吧!从当年相对比较academic的Caffe 跟Torch 跟Theano 这三家,到现在Google的TensorFlow,Amazon的MXNet,Facebook的PyTorch,Microsoft的CNTK等等。到最后大家发现这帮framework writter其实就是大家天天在那聊天说,我们design应该怎么走啊等等。到最后大家的idea都会逐渐converge起来。所以我个人不会太担心最后 which framework wins on framework, or which framework migrates which framework. 最后的idea都差不多。

Q3: 我想问一个比较抽象的问题,看我能不能解释清楚了,现在这些framework,这些工具非常的成熟了,非常完善,这必然是件好事。但从另一个角度来讲他对computer vision researcher和graduate student的impact是非常不同的。比如说五年前/八年前你可以design自己的feature,做一个minimization variation whatever graphical model你可以发paper,这个玩法和现在必然不同,现在你要train model,你要自己想办法做一些新的architecture或者其它一些比较有窍门的东西才能发paper。那比如说十年之后你再去Berkeley读一个computervision PhD从头开始的话,这个玩法是什么呀。就比如说AutoML这种东西都出来了,很多东西可能就被取代了,就不需要了,那怎么玩?

Yangqing:大家还有另外的一个相关的comment就是说目前这个整个做deeplearning training需要的资源越来越多,学校到底怎么办对吧,谁也没有一万个GPU来train Auto ML model,那这个大家这个Auto MLresearch是怎么做的呢?我觉得可能第一个比较passive aggressive的answer是come to industry labs,and you can just get resources,但这是一个玩笑话,另外一方面是我觉得就是比如说像12年的时候大家都觉得Google的infinite resource,大家deep learning怎么做最后Alex做的方法就是2个GPU,我当时在Google实习,对我们来说还挺surprising的,就是说其实computation resource isn’t the wining factor。其实学术界的一个好处是,I naturally create一个constrain是说,you have to be efficient。我现在个人是在工业界,工业界有的时候大家被这些resource给宠坏了,就是说学术界其实一直都还是source of the new information and new ideas。很多时候可能模型并不一定需要太大,但硬怼performance或者硬怼containerresource大家在grad student这个地方就别做了,对吧。然后,挺有意思的,能够做的方向就是howwe actually basically just like look at the current models and then do newideas,Berkeley去年做了很有意思的一个paper叫CycleGAN,怎么样在generative advisorynetwork上面做一些新的工作。这些方面可能不需要太多的resource,包括是一两个CPU就差不多够了。所以可能就说回去再读PhD的话可能做法还是差不多的,就是看看最近新的idea在什么方向,然后更多的是iterate on ideas,  not iterate on systems。

活动现场,贾扬清在左,Alex在右

Q4: 我有一个follow up的一个问题就是刚才你说很多algorithm需要特别大的一个计算资源,从硬件的发展上看你有看到一个趋势是说,硬件快速增长,越来越便宜,能力越来越强,能够让更多的人能够训练AlphaGo这种algorithm,你能看到这种趋势吗?

Yangqing: 硬件这方面again,I’m not an expert。David Patterson在最近他的talk里边提到Moore’s law is ending,is it a badthing,or is it a good thing?I actually say this is the golden age for hardware because a lot of things arebeing collaboratively redesigning, and iterating. And domain specific architecture is becoming the next new exciting idea. 所以我觉得更多是硬件这边会朝向更紧密地跟软件结合的这个方向。Imagine就是现在我们在写软件的时候,我们现在调我们的软件就不用we don’t give a damn about what kind of software we wrote yesterday,we can just change it。硬件这边的话还是大家又一点自己的constrain,硬件这边大家还是有一些follow一个一年或者两年的cycle。Imagine如果我们有一些新的方法能够,像我们做 throw away software 这样来做throw away hardware,假如我们每六个月就可以iterate一个硬件的version,这个时候对于整个硬件的industry会是一个挺新的一个paradigm,我自己不知道具体怎么做但是我觉得这方面从软件的角度来说我们希望有更多的硬件来支持计算,从硬件角度来说就是我觉得最近有好多的机会。 

Q5: 首先谢谢贾博士speech 非常好,我有两个问题是关于OpenCL和 CUDA的问题。第二个问题是,OpenCL 和CUDA是不是算你们framework里的一部分。第二个问题是,你们用没用OpenCL,因为Intel或者amd他们是用OpenCL或者CUDA做他们的product,你们怎么看这两个产品之间的功能?

Yangqing: CUDA我们一般不会把他们看成我们framework的一部分, 我们更多的是把它会看成C或者C++这样的一个programming language。 用CUDA的主要原因是。NVidia对于CUDA的support非常好。我们以前在四五年前上,Caffe 上或者Torch上我们都有试过从OpenCL  import,但其实很有意思的一个事儿是,目前好像没有太多vendor在热心推OpenCL这个方向,然后自从走了Metal的路后,对OpenCL 都不是太热心。Google这边在Android上面的话,更加会偏向于RenderScript 和 Vulkan。我目前也不是太清楚OpenCL 的eco-system有多大,目前的话就是说从framework 完整的角度来说, 我们没有太强的热心去做OpenCL 方向的工作,AMD最近的话,也差不多有一点moving away from OpenCL,and do HIP(Heterogeneous-compute Interface for Portability). 所以HIP这边可能是一个挺有意思的方向。对于in general怎么样来做一个parallel computation的abstraction,这方面是一个挺大的问题,也是一个挺有意思的方向,但是目前我们没有找到太好的方向。我们最近有一个开源的project叫Glow,试图来解决对accelerator,对special accelerator这方面,怎么样来帮助硬件的vendordesign nicer,design a completion stack,但是我们也没有考虑怎样unifyOpenCL,OpenGL,HIP,Vulkan,Metal,等等其他一些programming languages。

Q6: 我有一个关于硬件平台的问题,你提到软硬件一定要结合,才能发展。那你现在觉得从production eco-system 上看,有哪些地方软硬件结合做的还不是很好?

Yangqing: In general的话,目前的话是说,在production应用上,软硬件结合的只有CPU, GPU。所以说这个问题还是,除了google上可能有更多的insight之外,大家都还在探索的一个阶段。CPU 跟 GPU 差不多都已经足够well known了。最大的挑战可能就是说,怎么样来manage heterogeneous computation,因为在做prediction service的时候,传统CPU这边的话,整个架构都很homogeneous。我可以在productionlogic thread上来做computation也没什么问题。然后一旦走向GPU,或者accelerator之后,就会需要有更加desegregatedservice。比如prediction/computation stack是一个pool,然后production logic会是另一个pool。那么在这样的一个setting上面,怎么样把中间整个connection结合起来,是不是network bandwidth会变成一个新的bottleneck。整个latency或者怎么样来manage computationpool 然后capacity怎么样最后balancing。 这些传统的问题都会重新emerge起来。这方面还是需要一些early analysis。 

Q7:  因为你特别focus在AI infrastructure的部分,刚刚讨论很多问题,不管是hardwarespecialization,或者contrast between compilation andinterprerator,事实上,不管是research/industry,事实上已经repeat很多次。所以我想请教你,以AI application,它present unique opportunity and change,for  the system of hardware and software. How do you see the main difference?

Yangqing: 我觉得其实您说的特别对。有很多提到的问题是很传统的software engineer这方面的问题。AI 这方面的问题,其实是大家逐渐意识到这件事 it's not a big data problem but an HPC(High-performance computing) problem,以前大家基本是说,从十几年前开始,HPC,或者segmentationbig data,internet开始分道扬镳的感觉,一方面internetcompany,一方面所有的national lab。HPC这边的情况,就会focus在 computation efficiency, high connectivity。AI从现在来看的话,AI 非常强力的需要HPC这方面的 background,我们经常开玩笑说,MPA is fight。所以这方面有一些interesting opportunities。Essentially,HPC 跟big Data 在solve kind of different problems,AI 基本上就是we need to solve this and that.

Q: 这也许就是为什么NVidia可以很快的把CUDA拿来support AI的部分. CUDA是非常,如果我们看CUDA的话,像现在一些,像NCCL这样的communicationlibrary的话,有非常强的HPC的烙印在里头 ,it's kinda like MPI replica.

Q8: 你们Facebook在做HPC方面的硬件,既然提到了HPC。我是做compiler的,我做runtime。看现在的模型就觉得,这不是我十几年前做的HPC?我是spec出身的,全是computation,都是loop,做了很多loop的优化。因为这种东西,特别适合做那种非常傻的,只会计算,有大量cache的architecture,非常好, GPU就是perfect match。我在想说这个不难,说老实话。NVidia能这么快几年发展起来,通用CPU比这个复杂多了。我们那个branch prediction 那个面积太复杂了,但是Intel那个branch prediction,ARM他们未必能做那么好。它这么多年想在CPU这个application上赶上Intel前几年做的那个,这还差了好多年了。但是GPU就很快catch up了。我就想,人人都能做。那 Facebook在做什么呢?当然你可以不用讲,说 买GPU就好了

Yangqing: Facebook更多的还是一个软件公司,我们在做一些软件设计方面的design等等,我们也在和很多硬件的vendor partner在合作。包括比如说Glow 是怎么样来帮助build 一个 softwarestack,okular compiler stack。包括像我们做的Onnx,希望能够向硬件的partner 提供更多的insight, whatkind of models do we care about today. 然后从CPU优化上的话,我们其实有一个挺强的organization的团队,在做类似MKL,或者MKL-DNN这样的优化。所以 Why don't you talk to us?

Alex: 由于时间原因,我们今天的问答就到底为止,很荣幸今天能请到贾博士来和我们分享他在Facebook的工作,对AI的看法,对未来行业的想法。谢谢贾博士今天的分享!

Robinly内容团队坐标硅谷,从创业、领导力和人工智能三个角度去剖析成功创业者、高科技领导者、人工智能科学家和知名投资人的职业养成过程和他们对于这些领域的观点,我们力求追本溯源,为广大工程师、研究者提供一手的职业学习内容。

专栏二维码
理论Facebook贾扬清CaffePyTorchJuliaTensorFlowNLP图像处理机器翻译计算机视觉
3
相关数据
Alex网络技术
AlexNet

AlexNet是一个卷积神经网络的名字,最初是与CUDA一起使用GPU支持运行的,AlexNet是2012年ImageNet竞赛冠军获得者Alex Krizhevsky设计的。该网络达错误率大大减小了15.3%,比亚军高出10.8个百分点。AlexNet是由SuperVision组设计的,由Alex Krizhevsky, Geoffrey Hinton和Ilya Sutskever组成。

阿尔法围棋技术
AlphaGo

阿尔法围棋是于2014年开始由英国伦敦Google DeepMind公司开发的人工智能围棋程序。AlphaGo是第一个打败人类职业棋手的计算机程序,也是第一个打败围棋世界冠军的计算机程序,可以说是历史上最强的棋手。 技术上来说,AlphaGo的算法结合了机器学习(machine learning)和树搜索(tree search)技术,并使用了大量的人类、电脑的对弈来进行训练。AlphaGo使用蒙特卡洛树搜索(MCTS:Monte-Carlo Tree Search),以价值网络(value network)和策略网络(policy network)为指导,其中价值网络用于预测游戏的胜利者,策略网络用于选择下一步行动。价值网络和策略网络都是使用深度神经网络技术实现的,神经网络的输入是经过预处理的围棋面板的描述(description of Go board)。

计算机视觉技术
Computer Vision

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

迭代 技术
iteration

模型的权重在训练期间的一次更新。迭代包含计算参数在单个批量数据上的梯度损失。

图像处理技术
Image processing

图像处理是指对图像进行分析、加工和处理,使其满足视觉、心理或其他要求的技术。 图像处理是信号处理在图像领域上的一个应用。 目前大多数的图像均是以数字形式存储,因而图像处理很多情况下指数字图像处理。

MXNet技术
MXNet

MXNet是开源的,用来训练部署深层神经网络的深度学习框架。它是可扩展的,允许快速模型训练,并灵活支持多种语言(C ++,Python,Julia,Matlab,JavaScript, Go,R,Scala,Perl,Wolfram语言)

自然语言处理技术
Natural language processing

自然语言处理(英语:natural language processing,缩写作 NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言认知则是指让电脑“懂”人类的语言。自然语言生成系统把计算机数据转化为自然语言。自然语言理解系统把自然语言转化为计算机程序更易于处理的形式。

机器翻译技术
Machine translation

机器翻译(MT)是利用机器的力量「自动将一种自然语言(源语言)的文本翻译成另一种语言(目标语言)」。机器翻译方法通常可分成三大类:基于规则的机器翻译(RBMT)、统计机器翻译(SMT)和神经机器翻译(NMT)。

推荐系统技术
Recommender system

推荐系统(RS)主要是指应用协同智能(collaborative intelligence)做推荐的技术。推荐系统的两大主流类型是基于内容的推荐系统和协同过滤(Collaborative Filtering)。另外还有基于知识的推荐系统(包括基于本体和基于案例的推荐系统)是一类特殊的推荐系统,这类系统更加注重知识表征和推理。

英特尔机构
Intel

英特尔是计算创新领域的全球领先厂商,致力于拓展科技疆界,让最精彩体验成为可能。英特尔创始于1968年,已拥有近半个世纪产品创新和引领市场的经验。英特尔1971年推出了世界上第一个微处理器,后来又促进了计算机和互联网的革命,改变了整个世界的进程。如今,英特尔正转型成为一家数据公司,制定了清晰的数据战略,凭借云和数据中心、物联网、存储、FPGA以及5G构成的增长良性循环,提供独到价值,驱动日益发展的智能互联世界。英特尔专注于技术创新,同时也积极支持中国的自主创新,与产业伙伴携手推动智能互联的发展。基于明确的数据战略和智能互联全栈实力,英特尔瞄准人工智能、无人驾驶、5G、精准医疗、体育等关键领域,与中国深度合作。面向未来,英特尔致力于做中国高价值合作伙伴,在新科技、新经济、新消费三个方面,着力驱动产业协同创新,为实体经济增值,促进消费升级。

涉及领域
CycleGAN技术
CycleGAN

GAN的一个变种

张量技术
Tensor

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

TensorFlow技术
TensorFlow

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

Julia技术
Julia

Julia 是MIT设计的一个面向科学计算的高性能动态高级程序设计语言,项目大约于2009年中开始,2018年8月JuliaCon2018 发布会上发布Julia 1.0。据介绍,Julia 目前下载量已经达到了 200 万次,且 Julia 社区开发了超过 1900 多个扩展包。这些扩展包包含各种各样的数学库、数学运算工具和用于通用计算的库。除此之外,Julia 语言还可以轻松使用 Python、R、C/C++ 和 Java 中的库,这极大地扩展了 Julia 语言的使用范围。

推荐文章