Python并非为AI而生,Golang将统治人工智能的下一个十年
过去几年,Python成为人工智能和数据科学领域最受欢迎的编程语言。但是随着5G时代的来临,生产环境对AI应用的性能要求越来越高,Python有点「力不从心」。天生支持并发的Golang应运而生,专家称,Go语言将统治人工智能的下一个十年。
Python花20年终获认可,但并非为AI而生
30年前,Python首次出现。
但是Python花了20年的时间才得到公众的认可。
根据2019年StackOverflow的调查,Python成为开发人员第二喜爱的语言。
过去的5年里,Python的成长无疑是巨大的,已经成为机器学习和数据科学开发人员的首选语言。
短时间来看,Python的主导地位大概率不会变。但是与一些新兴的语言相比,它有一些严重的缺点,将成为生产环境部署的障碍。
Python受欢迎的主要原因是它很容易学习。
与其他语言相比,它的语法很简单,任何人都可以在几个小时或几天内学会Python的基础知识。
即使在学习了c++或Java等其他语言之后,开发人员还是更愿意使用Python。因为无论你想干啥,总有一个Python库能满足你的需求,这些库让开发数据科学和AI类的应用变的简单高效。
但Python在大规模生产环境下的性能问题,直接影响了AI应用的开发效率。现在很多人工智能初创企业,正处于底层架构的构建阶段,检查Python的问题很有必要。
GIL锁住了Python,拄拐走路性能成瓶颈
Python是一个解释性语言,这导致它执行起来比较慢,与其他编译语言如c++和Go相比,Python的执行速度就像乌龟一样,所以很多AI模型虽然是用Python开发的原型,部署时还得转成其他语言。
Python是一种动态类型语言。变量的数据类型在运行时自动判断,也使得执行速度变慢。
为了克服Python的速度,很多Python库选择更快的语言来重写,例如TensorFlow、Numpy和Pandas部分是用c或c++编写的,它们有助于显著提高执行速度。
这就有点像拄着拐走路,一直需要外界的帮助。
随着5G时代的来临,多任务并行处理和实时性的需求猛增,Python是可以构建小而美的应用,但是大规模、高吞吐的场景下,表现不尽如人意。虽然有很多方法,来提高Python的并行计算的能力,但都是曲线实现的,并没有实现真正意义的并行。
因为Python中存在一个GIL锁,每次只允许程序执行一个线程。
GIL的全称是GlobalInterpreterLock(全局解释器锁),Python之父为了数据安全而设计的,那个时候计算机的主频还没有达到1G,程序全部都是运行在单核计算机上面。
某个线程想要执行,必须先拿到GIL,可以把GIL看作CPU的「通行证」,拿不到通行证就不允许进入CPU执行,Python的多线程实际上并没有利用到多核计算的优势,它不管你有几个核,100个核也只能跑一个线程。
所以,原生的Python在性能上是有诸多限制的。人工智能和数据科学领域,对性能需求又很高,那有没有一种语言既有Python简单易用的优点,又能满足生产需求呢?
这时,Golang应运而生。
Go天生支持并发制霸云计算,还将统治AI的下一个十年
Golang(简称Go)是一种静态和编译型语言,这意味着它的执行速度将比Python快好几倍。与Python不同,Go不需要其他语言的帮助来提高速度。
下面是Go和Python之间的一个小型基准游戏对决。Go执行几乎和c++、Java一样快,而且Go编译代码比c++和Java要快得多,有些游戏中Go所需时间只有Python的百分之一。
Go的语法也很简单,程序写完后可以直接编译成二进制文件执行。25个关键字就能表达你能想到的所有招式,想干啥事就Go一下。
Go最大的特色就是天生支持并发,不需要像其他编程语言那样需要开发者自行实现或借助第三方库实现并发编程,逻辑简单通俗易懂。
Go使用Goroutine来实现并发,Goroutine是可以同时独立运行的函数,只占用2kB的内存,所以单机同时运行成千上万个Goroutine,也没问题。
上面这段程序顺序执行花费了1000多毫秒。下面我们在printTime函数前面增加一个关键字go,也就是使用Goroutine让程序并发执行,整个过程只花费了110毫秒,所以Go中实现并发非常简单。
不同于其他脚本或解释性高级编程语言,用Go编写的代码直接了当编译成机器码高效执行。x86、AMD64(x86_64)、ARM;Linux、Windows、Darwin(OSX)、FreeBSD、Android(计划Go1.4)几乎全平台支持,真正做到了一码在手,随处复用。
人工智能正在席卷整个世界,机器学习、深度学习等模仿人类智能的应用程序层出不穷,Python可以很好地构建原型系统,帮我们验证模型是否有利用提高效率。
但现在,对高可扩展性和计算能力的需求,让Python有点捉襟见肘,而Go则在这些方面表现出了更大的潜力。与Python相比,Go的速度可以快几十倍上百倍,吞吐更多的数据,满足更高的并发需求。
根据Hackearth对来自76个国家的16000多名开发者的调查,Go成为2020年最受欢迎的编程语言。
今年,有经验的开发人员中有近三成想学习Go,学生中这一比例也达到了29%。
知乎在几年前也将推荐系统从Python切换到了Go。
Go首席布道师许式伟2015年时曾说,Go语言将在两年内制霸云计算领域,而且Go将统治下一个10年。
Docker、Kubernetes等项目的成功,让Go在集群计算和云计算领域拔得了头筹,但是Go的脚步并没有停下。
我们利用机器学习、深度学习来预测和推理,最终目的还是为了生产服务。
Go对生产环境的支持要远远好于Python,比如Go语言开发的Cortex,可以将Python开发的AI模型快速、稳定地部署至生产环境。
Go和Python两大社区的开发人员也争论过哪种语言更好,似乎,谁也没完全说服谁。
但越来越多的公司采用Go搭建基础架构,至少证明,Go对生产环境来说更加合适。
基于python的人工智能的案例
Python在人工智能中的实例
自近几年来,人工智能技术越发火热,Python这门最适合用于人工智能项目开发的语言也步入大众视野,越来越多的同学选择成为一名Python工程师。但迈入机器学习与人工智能领域绝非易事,考虑到目前市面上存在着大量可用资源,众多怀有这一抱负的专业人士和爱好者往往发现自己很难建立正确的发展路径,为什么会这样呢?这是因为这一领域每时每刻都在变化着,为了能够跟紧时代步伐,小编从北京华清远见教育集团众多企业级实训项目中挑选出部分Python在人工智能中的实际运用,看清Python和人工智能发展的脉络。
1.TensorFlow最初是由谷歌公司机器智能研究部门旗下Brain团队的研究人员及工程师们所开发。这套系统专门用于促进机器学习方面的研究,旨在显著加快并简化由研究原型到生产系统的转化。
2.Scikit-learn是一套简单且高效的数据挖掘与数据分析工具,可供任何人群、多种场景下进行复用。它立足NumPy、SciPy以及matplotlib构建,遵循BSD许可且可进行商业使用。
3.Theano允许大家通过Python语言,高效地对关于多维阵列的数学表达式进行定义、优化与评估。
4.Gensim是一套自由Python库,其中包含可扩展统计语义、纯文本文档语义结构分析、语义相似性检索等功能。
5.Caffe是一套深度学习框架,主要面向表达、速度与模块化等使用方向。此框架由伯克利大学视觉与学习中心(简称BVLC)以及社区贡献者共同开发完成,在Python开源库中十分受欢迎。
6.Chainer是一套基于Python的独立开源框架,专门面向各类深度学习模型。Chainer提供灵活、直观且高效的手段,可以实现全面的深度学习模型,其中包括递归神经网络以及变分自动编码器等最新模型。
7.Statsmodels是一套Python模块,它允许用户进行数据探索、统计模型评估并执行统计测试。其提供包含描述统计、统计测试、绘图功能以及结果统计的广泛列表,适用于各种不同类型的数据与估算工具。
8.Shogun是一款机器学习工具集其中提供多种统一且高效的机器学习(简称ML)方兴未艾。这套工具集能够以无缝化方式对多种数据表达、算法类以及通用型工具加以组合。
9.Pylearn2是一套机器学习库。其主要功能以Theano为实现基础。这意味着大家可以利用数学表达式编写Pylearn2插件,构建新模型以及算法并进行优化与稳定调整,将它们编译至后端。
11.Neon是Nervana基于Python的深度学习库。在实现易用性的同时,它还可以提供极高的性能表现。
12.Nilearn是一套Python模块,用于对NeroImaging数据进行便捷学习。它可以通过scikit-learnPython工具集进行多变量统计,并可提供预测建模、分类、解码或者连接分析等应用选项。
13.Orange3是一套同时面向新手与专家的开源机器学习与数据可视化方案,其中的大规模工具集可以实现交互数据分析工作流。
14.Pymc是一款Python模块,利用它,我们可以实现贝叶斯统计模型与拟合算法,包括马尔可夫链蒙特卡洛算法。其出色的灵活性与可扩展性使其适用于多种任务。
15.Deap是一种用于快速原型设计与思路测试的新型进化计算框架,它的目标在于提升自满的明确度与数据结构的透明性,其与多进程及SCOOP的并行机制能够完美契合。
16.Annoy,全称为近似最近毗邻,是一套C++库,绑定有Python以搜索空间当中与给定查询点相信的各点。它可以创建基于文件的大型只读数据结构并将其映射至内存当中,从而实现多进程间共享相同数据。
17.PyBrain是一套面向Python的模块化机器学习库,其目标在于为各类机器学习任务及多种预定义环境提供灵活且易于使用的强大算法,从而测试并比较各类算法。
18.Fuel是一套数据管道框架,旨在为机器学习模型提供其需要的数据。这个项目原本只专供Blocks与Pylearn2神经网络库使用,但现在,我们可以把它运用到多种开发场景中。
19.PyMVPA是一套Python工具包,旨在简化对大型数据集的统计学习分析流程。它所提供的一套扩展框架,可通过高级接口实现分类、回归、特征选择、数据导入与导出等多种算法。
20.Pattern是一套面向Python编程语言的Web挖掘模块。它捆绑着多款工具,可用于数据挖掘、自然语言处理、机器学习以及网络分析等,用途十分广泛,因而也受到众多开发者的钟意。
以上这20个项目便是Python在人工智能中的实例,其中以TensorFlow最为典型,当然,其他Python项目在众多人工智能实训项目中都有所体现,通过这些实战训练,所学知识能更好地与技术融会贯通,学习四个月相当于普通程序员工作三年!想拿Python行业高薪,就来我的Q裙一起学习吧!
推荐下我自己建的人工智能Python学习群:[809160367],群里有我整理的一份关于pytorch、python基础,图像处理opencv自然语言处理、机器学习、数学基础等资源库,想学习人工智能或者转行到高薪资行业的,大学生都非常实用,无任何套路免费提供!还可以扫码加VX领取资料哦!
人工智能Python有哪些应用方向
Python支持函数式编程和OOP的面向对象编程,开放源码云计算,以海量数据为基础,结合科学计算、机器学习等技术,对数据进行清洗、去重、规范化和有针对性的分析,人工智能领域Python是机器学习、神经网络、深度学习等。
1.一般软件开发Python支持函数式编程和OOP的面向对象编程,可以进行各种软件的开发工作,所以一般的软件开发,脚本编写,网络编程等等都属于标配功能。
2.科学计算由于NumPy,SciPy,Matplotlib,Enthoughtlibrarys等程序库的发展,Python越来越适合进行科学计算,绘制高质量2D和3D图像。相对于Matlab,Matlab是科学计算领域中最受欢迎的商业软件,Python是一种通用的程序设计语言,其应用范围比Matlab采用的脚本语言更广,并且有更多的程序库支持。尽管Matlab中的许多高级功能和工具框目前仍无法替代,但仍有大量日常科研开发工作可以用Python代替。
3.自动化操作Python几乎是Python应用的一个自我保留的地方,Python作为运维工程师首选的编程语言,已经深入到自动化运营领域,例如Saltstack和Ansible都是着名的自动化平台。
4.云计算开放源码云计算方案OpenStack是基于Python开发的,它的学生们都知道。
5.发展WEB不需要太多基于Python的Web开发框架,比如熟悉的Django和 Tornado,Flask。Python+Django的体系结构,应用非常广泛,开发速度非常快,学习门槛非常低,可以帮助您快速构建可用的WEB服务。
6.网络爬行器又名网络蜘蛛,是获取大数据产业数据的核心工具。如果没有自动、不分昼夜、高智能的网络爬虫,就无法在因特网上获取免费数据,那么大数据相关的企业恐怕要少四分之三。可以写网络爬虫的编程语言很多,但是Python肯定是主流之一,而且Scripy爬虫框架的应用也很广泛。
7.分析数据以海量数据为基础,结合科学计算、机器学习等技术,对数据进行清洗、去重、规范化和有针对性的分析,是大数据产业的基石。Python是主流的数据分析语言之一。
8.人工智能在大范围的人工智能领域,Python是机器学习、神经网络、深度学习等主流编程语言,得到了广泛的支持和应用。(文章来源网络,侵权联系删除)