AWS, Cuda, Tensorflow - PullRequest
       1

AWS, Cuda, Tensorflow

0 голосов
/ 15 декабря 2018

Когда я запускаю свой код Python на самых мощных экземплярах графического процессора AWS (с 1 или 8 x Tesla v100 16 Мбайт. P3.x2large или P3.16xlarge), они оба только в 2-3 раза быстрее, чем мой DELL XPSНоутбук Geforce 1050-Ti?

Я использую Windows, Keras, Cuda 9, Tensorflow 1.12 и новейшие драйверы Nvidia.

Когда я проверяю загрузку графического процессора через GZU, максимальный графический процессор.работать на 43% нагрузки в течение очень короткого периода времени - каждый раз.Контроллер работает на макс.100% ...

Набор данных, который я использую, - это матрицы в формате JSON, а файлы расположены на диске Nitro по 10 ТБ с МАКС 64.000 IOPS.Неважно, содержит ли папка 10 ТБ, 1 ТБ или 100 МБ ... обучение все еще очень и очень медленное за одну итерацию?

Все советы приветствуются!

ОБНОВЛЕНИЕ 1:

Из документов Tensorflow:

" Чтобы запустить конвейер ввода, вы должны определить источник. Например, чтобы построить набор данных из некоторых тензоров в памяти, вы можете использовать tf.data.Dataset.from_tensors () или tf.data.Dataset.from_tensor_slices (). В качестве альтернативы, если ваши входные данные находятся на диске в рекомендуемом формате TFRecord, вы можете создать tf.data.TFRecordDataset. "

Раньше у меня были матрицы, хранящиеся в формате JSON (Made by Node).Мой TF работает на Python.Теперь я буду только сохранять координаты в узле и сохранять их в формате JSON.Вопрос в том, что в Python является лучшим решением для загрузки данных?Может ли TF использовать только координаты или мне нужно снова вернуть координаты в матрицы или как?

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Во-первых, у вас должна быть действительно веская причина для увеличения вычислительных затрат с помощью AMI на базе Windows.

Если ваш ЦП равен ~ 100%, а графический процессор - <100%, тогда ваш процессор, скорее всего, является узким местом. </strong> Если вы находитесь в облаке, рассмотрите возможность перехода к инстансам с большим числом процессоров (ЦП дешев, ГП мало) .Если вы не можете увеличить количество процессоров, то возможно переместить некоторые части графика в графический процессор.Тем не менее, tf.data входной конвейер запускается полностью на CPU (но с высокой степенью масштабируемости благодаря реализации C ++).Здесь также может помочь предварительная выборка в графические процессоры, но затраты на создание другого фонового потока для заполнения буфера для нисходящего потока могут ослабить этот эффект.Другой вариант - выполнить некоторые или все этапы предварительной обработки в автономном режиме (т. Е. До обучения) .

Предостережение об использовании Keras в качестве входного конвейера. Keras полагается на библиотеки multithreading (и, возможно, multiprocessing) Python, которым может не хватать производительности (при интенсивном вводе-выводе или оперативном расширении) и масштабируемости (при работе на нескольких процессорах) по сравнению с GIL -свободных реализаций.Рассмотрите возможность выполнения предварительной обработки в автономном режиме, предварительной загрузки входных данных или использования альтернативных входных конвейеров (как вышеупомянутые собственные TF tf.data или сторонние, например Tensorpack).

0 голосов
/ 15 декабря 2018

Производительность любой модели машинного обучения зависит от многих вещей.Включая, но не ограничиваясь: сколько предварительной обработки вы делаете, сколько данных вы копируете из CPU в GPU, узкие места Op и многое другое.В качестве первого шага ознакомьтесь с руководством по производительности tenorflow .Есть также несколько видео с саммита tensflow dev dev 2018, в которых рассказывается о производительности.Как правильно использовать tf.data и как отладить производительность - это два, которые я рекомендую.

Единственное, что я могу точно сказать, это то, что JSON являетсяплохой формат для этой цели.Вам следует переключиться на формат tfrecord , который использует protobuf ( лучше, чем JSON ).

К сожалению, производительность и оптимизация любой системы требуют больших усилий и времени, иможет быть кроличьей норе, которая просто спускается вниз.

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