一直有个疑惑
python 执行效率并不算高, 而人工智能需要处理大量数据,属于 CPU 计算密集型,需要效率,
那么用一个效率不是很高的语言去处理需要效率的海量数据。 这两者是怎么这么愉快的玩在一起的?
1
dreamakeo 2022-05-23 20:55:38 +08:00 via Android
库都是 c++写的啊
|
2
hello2090 2022-05-23 21:13:52 +08:00
计算是 GPU 做的,python 只是把数据通过 CUDA 输入给了 GPU.
|
3
Ultraman 2022-05-23 21:13:56 +08:00 via Android
|
4
codefun666 2022-05-23 21:29:30 +08:00
简单说,Python 就是 wrapper 。会调用 AI 库、调参的人很多,但很少有能写 AI 框架的人。numpy 这些常用科学计算库大部分都是 C/C++实现 - Python 太慢了!
|
5
DOLLOR 2022-05-23 21:36:52 +08:00
那些库都是 C/C++或者其他高性能语言写的,python 只是用来调库的,充当胶水的作用。
之所以要用 python 调库,而不是直接用 C/C++,是因为 python 用起来很方便,门槛极低。 这也是 python 培训爆火的原因,随便教教,就能产出一批又一批什么人工智能、大数据调包侠了。 |
6
janxin 2022-05-23 21:41:21 +08:00
Python 是胶水啊,下层不会频繁变化,复用很高。
|
7
Buges 2022-05-23 21:45:26 +08:00 via Android
Python 应该是非程序员用户最多的语言了。
|
8
LeeReamond 2022-05-23 21:47:57 +08:00 via Android 3
为什么能愉快在一起,因为你实际写过科学运算就知道,在千变万化的业务中,基础逻辑数量庞大,复杂度低,即使并不困难,但如果从零实现谁也顶不住,所以开发方式一定是有一个底层库提供数据驱动,另外再搞一个高层 API 供开发人员组装业务逻辑。
所以这个需求中,从功能性考量高层 API 需要的是调用效率而不是执行效率,这点上 py 完善的 ffi 支持做的非常好。从业务考量,则需要优雅的语义表达以提高实际业务开发效率,这使得大量非职业程序员的数据科学家更容易接受。另外 py 在当时就已经有完善的科学计算库和庞大的生态,这些都是加分项,因为深度学习开发中将数据清洗为合适的输入输出也是耗费精力的大头。如果不理解,不妨设想一下如果当年抢占市场的是 java ,在上述需求方面对非职业程序员会产生什么变化。 发展到今天当然仅从语言角度很多备选都能做的很好了,scala 也有完善的同类产品之前在论坛里还看人宣传过,之所以绝大部分开发者仍在使用 python 仅因为其社区生态活跃的惯性。不过也没有什么大不了的,php ,java ,js 这些主流语言在其主要使用场景都经历过上述过程,在某一特定业务时期极速扩张的影响是深远的,例如至今互联网业务的 90%仍由 php 实现自然不是因为从今天的视角看 php 在语言层面上有什么优势。 |