#python #neural-network #pytorch #gpu
#python #нейронная сеть #pytorch #графический процессор
Вопрос:
Я пытаюсь запустить Pytoch UNet по следующей ссылке на 2 или более графических процессорах
изменения, которые я делал до сих пор, это:
1. из:
net = UNet(n_channels=3, n_classes=1, bilinear=True)
logging.info(f'Network:n'
f't{net.module.n_channels} input channelsn'
f't{net.module.n_classes} output channels (classes)n'
f't{"Bilinear" if net.module.bilinear else "Transposed conv"} upscaling')
Для:
net = UNet(n_channels=3, n_classes=1, bilinear=True)
net = nn.DataParallel(net)
logging.info(f'Network:n'
f't{net.module.n_channels} input channelsn'
f't{net.module.n_classes} output channels (classes)n'
f't{"Bilinear" if net.module.bilinear else "Transposed conv"} upscaling')
в каждом месте, где был:
net.<something>
заменено на:
net.module.<something>
Я знаю, что pytorch видит больше, чем 1 графический процессор, потому torch.cuda.device_count()
что возвращает
2
.
Но пока я пытаюсь запустить поезд, для которого требуется больше времени, чем у первого графического процессора, который я получаю:
Ошибка выполнения: CUDA не хватает памяти. Пытался выделить 512,00 Мбайт (GPU 0; 11,91 гигабайт общей емкости; 10,51 гигабайт уже выделено; 82,56 Мбайт свободно; 818,92 Мбайт в кэше)
Я изменяю требуемую память для обучения, изменяя размер пакета. Приветствуется любая помощь
Редактировать
Я вижу, что обучение выполняется в два раза быстрее с 2 графическими процессорами, но максимальный размер пакета для запуска с одним графическим процессором такой же, как и для двух графических процессоров. Есть ли какой-либо способ использовать память 2 графических процессоров вместе во время одного тренировочного прогона?
Комментарии:
1. Уменьшите размер пакета, пока он не будет соответствовать наименьшему объему памяти графического процессора.
2. @Rika, я хочу работать на 2 графических процессорах, с небольшой партией у меня нет проблем с запуском на одном
3. Ваши графические процессоры должны иметь одинаковый объем памяти, если у них разные объемы, Pytorch будет использовать меньший объем в качестве доступного объема видеопамяти на обоих графических процессорах. Итак, допустим, у вас есть 8-гигабайтный и 12-гигабайтный gpu. если вы хотите обучаться, ваш размер пакета должен быть таким, чтобы он не превышал 8 гигабайт. если это произойдет, вы не сможете обучиться, и он завершится ошибкой с сообщением об ошибке, которое вы получите
4. Спасибо @Rika, я вижу разницу между запуском с 1 и 2 графическими процессорами, я имею в виду, что с 2 он работает в два раза быстрее. Но я не могу понять, почему он не использует память второго графического процессора. Я имею в виду, что я должен сделать, чтобы использовать память второго, даже 16 ГБ на основе вашего примера.
Ответ №1:
Моей ошибкой было изменение output = net(input)
(обычно называемое как model
) на:
output = net.module(input)
вы можете найти информацию здесь