#tensorflow #optimization #gpu
#tensorflow #оптимизация #графический процессор
Вопрос:
Я профилировал модель, которую я запускаю, и подавляющее большинство времени на каждом шаге (295 из 320 мс) занимают операции «от устройства к устройству» (см. Изображение). Я предполагаю, что это означает, что загрузка данных с моего процессора на мой графический процессор и обратно является узким местом.
Я запускаю это на одной машине. Данные хранятся на твердотельном накопителе и передаются в графический процессор. Я использую tf.data от tensorflow.Dataset API и выполнение всех рекомендуемых действий, таких как предварительная выборка и num_parallel_calls=tf.data.experimental.AUTOTUNE
Мои вопросы: (1) Верно ли мое предположение? (2) Как мне уменьшить эту огромную нагрузку на мою модель?
Комментарии:
1. Вы обучили модель распределенной стратегии? Если это так, я думаю, что связь между устройствами означает обмен данными между графическими процессорами при обновлении параметров. Если вы обучали модель на нескольких компьютерах, это в основном связано с ограничением пропускной способности сети. Профилировщик также предоставляет некоторые предложения о том, как справиться с узким местом в правом нижнем углу страницы профилировщика.
2. спасибо за комментарий, нет, это на одной машине, к вопросу добавлено разъяснение.
3. Вы использовали tf.data. Набор данных для входного конвейера? Если да, выполняли ли вы предварительную выборку данных в конце конвейера? Возможно, это помогло бы вам.
4. спасибо, Александр, я использую tf.data. Набор данных и предварительная выборка строго. Я добавлю это к вопросу
Ответ №1:
Не правильный ответ, но это что-то; используя смешанное обучение точности tensorflow, я смог сократить время «от устройства к устройству» до ~ 145 мс. Это все еще огромная нагрузка по сравнению со всем остальным профилированным, и я хотел бы иметь возможность уменьшить ее еще больше.
Я тоже не знаю, почему это помогло. Я предполагаю, что mp-обучение означает, что передается меньшее количество байтов, поэтому, возможно, это помогает.