Почему NVIDIA Megatron загружает итераторы набора данных несколько раз в зависимости от размера модели?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему NVIDIA Megatron загружает итераторы набора данных несколько раз в зависимости от размера модели?

Сообщение Anonymous »

Я работаю с кодом NVIDIA Megatron, особенно над разделом загрузки набора данных. Я заметил, что функция build_train_valid_test_data_iterators выполняется несколько раз — в частности, она выполняется len(model) раз, где len(model) соответствует значению virtual_pipeline_model_parallel_size. Это существенно замедляет выполнение.
Почему код устроен таким образом? Если я вынесу вызов build_train_valid_test_data_iterators за пределы цикла, какие негативные последствия это может иметь?
Вот соответствующий фрагмент кода для контекста:

Код: Выделить всё

# Model, optimizer, and learning rate.
timers('model-and-optimizer-setup', log_level=0).start(barrier=True)
model, optimizer, opt_param_scheduler = setup_model_and_optimizer(
model_provider, model_type)

timers('model-and-optimizer-setup').stop()
print_datetime('after model, optimizer, and learning rate '
'scheduler are built')
config = get_model_config(model[0])

# Data stuff.
timers('train/valid/test-data-iterators-setup', log_level=0).start(
barrier=True)
if args.virtual_pipeline_model_parallel_size is not None:
train_data_iterator = []
valid_data_iterator = []
test_data_iterator = []
for i in range(len(model)):
mpu.set_virtual_pipeline_model_parallel_rank(i)
iterators = build_train_valid_test_data_iterators(
train_valid_test_dataset_provider)
train_data_iterator.append(iterators[0])
valid_data_iterator.append(iterators[1])
test_data_iterator.append(iterators[2])
else:
train_data_iterator, valid_data_iterator, test_data_iterator \
= build_train_valid_test_data_iterators(
train_valid_test_dataset_provider)
Я попытался переместить вызов функции build_train_valid_test_data_iterators за пределы цикла, который выполняется len(model) раз. Я ожидал, что это изменение повысит производительность за счет сокращения избыточных операций загрузки данных, что приведет к более быстрой инициализации обучения.


Подробнее здесь: https://stackoverflow.com/questions/791 ... n-model-si
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»