首页 > 解决方案 > 哪些 python 深度学习库在运行时编译?

问题描述

我正试图围绕python中的C优化代码。我已经读过几次了,python 通过 C 扩展实现了高速计算。换句话说,每当我使用诸如 numpy 之类的库时,它基本上都会调用一个 C 扩展来计算结果并返回它。

使用 numpy 的 C 扩展

假设我想使用添加两个数字np.add(x,y)。如果我理解正确,像 numpy 这样的库不会编译 python 代码,而是已经附带了可执行文件,这些可执行文件将简单地获取值 x 和 y 并返回结果。那是对的吗?

Theano、Tensorflow 和 PyTorch

特别是,我想知道这是否也适用于深度学习库。根据 Theano 的官方文档,它需要 g++ 和 gcc(至少强烈推荐它们)。这是否意味着 Theano 将在 Python 脚本运行时编译 C(或 C++)代码?如果是这样,PyTorch 和 Tensorflow 是否一样?

我希望有人能在这里解决我的困惑!非常感谢!

标签: pythoncompilationruntimepytorchtheano

解决方案


python中的C扩展

numpy大量使用 C 扩展。例如,您可以在此处 [2] 查看 sort() 函数 [1] 的 C 实现。

[1] https://docs.scipy.org/doc/numpy/reference/generated/numpy.sort.html

[2] https://github.com/numpy/numpy/blob/master/numpy/core/src/npysort/quicksort.c.src

深度学习库

深度学习库在其后端的很大一部分以及 CUDA 和 CUDNN 中使用 C 扩展。代码可以在运行时编译:

[3] http://deeplearning.net/software/theano/extending/pipeline.html#compilation-of-the-computation-graph

[4] https://www.tensorflow.org/xla/jit

[5] https://pytorch.org/blog/the-road-to-1_0/#production--pain-for-researchers

为了回答您的问题,theano将在 python 脚本的运行时编译 C/C++ 代码。运行时的图形编译时间非常慢theano:我建议您专注于pytorchtensorflow而不是theano

如果您是深度学习的新手,您也可以快速浏览一下 [6]。

[6] https://github.com/google/jax


推荐阅读