#python #pytorch
#python #pytorch
Вопрос:
Когда размер нашего пакета равен 1 или 2 и у нас 8 графических процессоров, как torch.distributed.launch
назначить данные каждому графическому процессору? Я преобразовал свою модель в torch.nn.parallel.DistributedDataParallel
,
model = DistributedDataParallel(model,
device_ids=[args.local_rank],
output_device=args.local_rank,
find_unused_parameters=True,
)
но в документации указано, что DistributedDataParallel:
распараллеливает приложение данного модуля, разделяя входные данные на указанные устройства путем разделения в пакетном измерении.
Мой вопрос в том, когда размер пакета меньше количества графических процессоров, как он справляется с этим?
Ответ №1:
Они этого не делают. В отличие от Dataparallel
, размер пакета, который вы устанавливаете, зависит от графического процессора. Когда у вас 8 графических процессоров с размером пакета 1, эффективный размер пакета равен 8.
Комментарии:
1. Спасибо за ваш ответ. Означает ли это, что документация устарела?
2. @Amir Я думаю, они имели в виду «эффективный размер пакета». Я всегда думал, что документация для DDP сбивает с толку. Ключ в том, чтобы признать, что для каждого графического процессора будет один основной процесс Python, каждый из которых выполняет загрузку данных и вычисление потерь, и обменивается данными только через
DistributedDataParallel
иDistributedSampler
.