Поразительное м xnet выступление под Python против Mathematica - PullRequest
3 голосов
/ 11 февраля 2020

Я сравнил m xnet производительность между Mathematica и Python и наблюдаю различия в производительности более чем на порядок и хотел бы посоветовать, как улучшить производительность при Python.

Мой NN - это MLP для регрессии, с 3 входами с плавающей запятой, 8, 16, 24, 8 полностью связанными слоями нейронов и 2 выходами с плавающей запятой, Sigmoid используется везде, кроме входных и выходных нейронов. Оптимизатор, используемый в Mathematica - это Адам, поэтому я тоже использовал его в Python с теми же параметрами. Набор обучающих данных содержит 4215 записей, отображающих цвета xyY в Munsell Hue и Chroma.

Mathematica - версия 11.2, выпущенная в 2017 году, и Mathematica использует m xnet под капотом для задач глубокого обучения. Со стороны Python я использую последнюю версию с m xnet -mkl и проверил, включен ли MKLDNN.

Лицензия Mathematica работает на ноутбуке MS Surface Pro с Windows 10, i7- 7660U, 2,5 ГГц, 2 ядра, 4 гиперпотока, AVX2. Я запустил Python на этом компьютере для сравнения.

Вот время для циклов обучения 32768 эпох и

Batch Sizes:   128,   256,   512,  1024, 2048,  4096
Mathematica: 8m12s, 5m14s, 3m34s, 2m57s, 3m4s, 3m48s
PythonMxNet:  286m,  163m,   93m,   65m,  49m,   47m

Я попробовал приемы оптимизации переменных среды m xnet, предложенные Intel, но только на 120% медленнее.

Я также переключил все массивы на float32 с float64 с гипотезой, что MKL может обрабатывать в 2 раза больше операций за одно и то же время (исключая издержки, конечно) с SIMD регистрирует, но не заметил даже небольшого улучшения.

Причина, по которой я переключил свою работу в NN с Mathematica на Python, заключается в том, что я хотел обучить NN на разных и более мощных компьютерах. И мне также не нравится, когда моя тетрадь связана с заданиями обучения NN.

Как мне следует интерпретировать эти результаты?

Что может быть причиной этих различий в производительности?

Могу ли я что-нибудь сделать для повышения производительности при Python?

Или это просто неизбежные накладные расходы, налагаемые интерпретатором Python?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...