Есть ли PyTorch с вилкой CUDA Unified GPU-CPU Memory?
Таким образом, обучение модели DNN может быть сложной задачей, когда пакет одного изображения занимает 15 ГБ. Скорость для меня не так важна, но для больших партий (и моделей) важна. Так что мне интересно, есть ли PyTorch с вилкой CUDA Unified Memory или что-то в этом роде, чтобы соответствовать гигантским моделям (с 16 ГБ на GPU RAM, но 250 на стороне процессора, это кажется вполне разумным)?
1 ответ
Если вас не волнует время, которое потребуется, но вам нужны большие партии, вы можете использовать более медленный подход. Допустим, вам нужно иметь пакет из 128 образцов, но ваша память графического процессора вмещает только 8 образцов. Вы можете создать меньшие партии из 8 образцов, а затем усреднить их градиенты.
Для каждой небольшой партии из 8 образцов, которые вы оцениваете, вы сохраняете .grad
каждого параметра в памяти вашего процессора. Вы ведете список оценок для каждого параметра вашей модели. После того, как вы собрали градации для 16 партий по 8 образцов (всего 128 образцов), вы можете усреднить градиенты каждого параметра и вернуть результат в.grad
атрибут каждого параметра.
Затем вы можете позвонить в .step()
вашего оптимизатора. Это должно дать точно такие же результаты, как если бы вы использовали большую серию из 128 образцов.