找回密码
 立即注册
查看: 872|回复: 5

为什么 Python 运算慢,还拿来搞 AI?

[复制链接]

1

主题

0

回帖

14

积分

新手上路

积分
14
发表于 2023-5-12 09:09:38 | 显示全部楼层 |阅读模式
好了,此问题终结。我已经筹备用 CPP 给 Python 写库了,Python 确实是 AI 开发的不贰选择。各位回答非常出色,感激。
回复

使用道具 举报

0

主题

5

回帖

12

积分

新手上路

积分
12
发表于 2023-5-12 09:10:33 | 显示全部楼层
首先,没有任何一款成熟的AI库或框架是用的纯Python来实现的。最常见的基础库numpy、scipy,其底层就是用的C语言。大名鼎鼎的tensorflow,核心部分依然是用的C/C++。在追求性能的关键部分,用使用GPU的浮点数特效,用到了CUDA。而Python只是上层的一个封装而已。


其次,对于小程序、探索性开发、算法测试等情况,Python和高性能语言区别并不是特别大。比如假设Python写一个任务需要耗时20秒,而C语言仅需要10秒,这个差距真的可以忽略不计。而现实情况,我们大部分时间都是在做这类探索或测试。心中有一个想法时,马上就会想到用Python去实现,然后不断地调试参数,让算法最优。
假如用C语言来做这个工作,那花在改代码上的时间是非常长的,甚至容易分散注意力,将注意力不是放在算法本身而是去写一堆晦涩代码去了。matlab对算法探索似乎更快,不过它是收费的,不是开源的,第三方库已经跟不上时代节奏了。
第三,对于大型深度学习,数据挖掘任务,Python做的仅仅是算法描述。上面一点我们说的其实是开发环境(或实验环境)。那么在生产环境,也就是说真正做大型任务(而不是算法建模)时,Python也不差。这是为什么呢?
拿tensorflow的深度学习来说,它的核心是用C/C++写的,但是在写代码时,基本上全是Python,这时候Python仅仅是充当算法脚本的功能。说具体点,一个深度学习通常是一个大型的神经网络,用Python去定义每一层网络,每一个激活函数以及其他各种网络参数。这时候Python是有些慢的,比如初始化就要5秒,加载各种神经网络参数又要5秒,读取和解析原始数据要500秒。
但是,还有更长的,那就是训练。训练说不定要10个小时,你没有看错,是小时。而这10个小时基本上全是由C++去完成的。所以说Python引起的那几百秒延迟根本不值一提。核心部分依然是交给了C++。说穿了,Python只是做了前期的准备工作,告诉内核:数据是什么,应该如何训练,应该如何评估结果,以及结果如何展示出来。
而至于具体的操作就不是Python要做的事了。这和我们用Photoshop画一个图一样的,使用者用鼠标键盘就能作出一个优秀的产品。甚至一行代码都不用写。这个鼠标键盘就好比我们的Python。我们程序员用Python做AI就好比美工用键盘鼠标画图一样。实际上关键核心性能部分都是清一色的C/C++。
零基础小伙伴如果对Python感兴趣的话,欢迎关注VX公众号:Python编程学习圈,每日都有相关干货和教程分享!还有免费学习资料和电子书可以领取,下方有跳转入口:
程序员小六:Python技能如何变现?这份小白适用的学习资料建议收藏!3 赞同 · 0 评论文章推荐想学好Python的同学一个交流群,很多技术大佬在群里分享学习经验、指导学习、解答问题,很多志同道合的小伙伴一起交流讨论,学习氛围非常不错,欢迎你的加入:
程序员小六:自学Python的小伙伴看过来了,我建了Python学习群啦~0 赞同 · 2 评论文章有个学习网站非常推荐各位学习试试——编程学习网,包含有整套Python入门到进阶的学习教程,讲解清晰详细,通俗易懂,零基础同学很是适用,感兴趣都可以前往了解:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

0

主题

2

回帖

0

积分

新手上路

积分
0
发表于 2023-5-12 09:10:53 | 显示全部楼层
谁用Python搞AI了?分明都是用CUDA和C++在搞,然后给个Python接口、胶水。
但不要小看胶水的重要性。比如Pytorch,充分利用了Python作为脚本语言的metaclass设施,实现了大量的自动功能,在原型开发、训练时候的便利性是直接调C++库拍马也比不上的。
回复

使用道具 举报

0

主题

4

回帖

15

积分

新手上路

积分
15
发表于 2023-5-12 09:11:28 | 显示全部楼层
喵?我毕设拿Python写了一个优化的决策树,气的我差点把电脑摔了(别误会,我生气是因为我居然脑残的用py实现ml算法!),改成C++后我顺利毕业了。
py优美是因为它只实现逻辑层,使用户能够快速便捷的使用,算法底层它还是调用的C++做的。
回复

使用道具 举报

0

主题

1

回帖

10

积分

新手上路

积分
10
发表于 2023-5-12 09:11:57 | 显示全部楼层
其实就是前台给你放了个漂亮妹子(api接口),后面还是一堆XXX的程序员(c/c++实现)在干活。可别真以为整个公司(AI)全是前台美女;
回复

使用道具 举报

0

主题

2

回帖

15

积分

新手上路

积分
15
发表于 2023-5-12 09:12:17 | 显示全部楼层
先看是不是:
目前最热的Tensorflow,C++写的,提供了C++ API和Python API(其中C++API似乎都没文档)
Torch,C写的,提供了Lua API;PyTorch提供了Python API。
老牌Theano,C写的,提供了Python API。
青壮MXNet,C++写的,提供了C++、JS、Scala、R、Julia、Python、Matlab、Golang诸多语言的API。
大家说白了都是做的符号计算,都是先定义计算图再来算用原生C/C++做的库来算内容,那定义计算图用什么语言对效率其实没有半毛钱影响啊,慢就慢呗,计算本身又不受到影响。
那么Python这种写起来容易表达能力强而且相对容易学的语言自然更容易拿来做胶水咯。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|T9AI - 深度人工智能平台 ( 沪ICP备2023010006号 )

GMT+8, 2025-1-5 07:39 , Processed in 0.058592 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表