Какие библиотеки глубокого изучения Python компилируются во время выполнения? - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь обернуть голову вокруг C-оптимизированного кода в Python.Я уже пару раз читал, что python достигает высокоскоростных вычислений через C-расширения.Другими словами, всякий раз, когда я работаю с такими библиотеками, как numpy, он обычно вызывает C-расширение, которое вычисляет результат и возвращает его.

C-extension с использованием numpy

Скажем, я хочу добавитьдва числа, используя np.add(x,y).Если я правильно понимаю, библиотеки, такие как numpy, не компилируют код python, но вместо этого уже содержат исполняемые файлы, которые просто примут значения x и y и вернут результат.Это правильно?

Theano, Tensorflow и PyTorch

В частности, мне интересно, верно ли это и для библиотек глубокого обучения.Согласно официальной документации Theano, для этого требуются g ++ и gcc (по крайней мере, они настоятельно рекомендуются).Означает ли это, что Theano скомпилирует код C (или C ++) во время выполнения скрипта python?Если да, то же самое для PyTorch и Tensorflow?

Я надеюсь, что кто-то может решить мою путаницу здесь!Большое спасибо!

1 Ответ

1 голос
/ 17 апреля 2019

C-расширения в python

numpy часто используют C-расширения.Например, вы можете взглянуть на реализацию C функции sort () [1] здесь [2].

[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

Библиотеки глубокого обучения

Библиотеки глубокого обучения используют C-расширения для большей части своего бэкэнда, а также CUDA и CUDNN.Код может быть скомпилирован во время выполнения:

[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 скомпилирует код C / C ++ во время выполнения скрипта python.Время компиляции графика во время выполнения чрезвычайно медленное для theano: я советую вам сосредоточиться на pytorch или tensorflow, а не theano.

Если вы новичок в глубоком обучении, вы можетевзгляните также на [6].

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

...