Измените модель PyTorch для вывода - затем возобновите обучение - PullRequest
0 голосов
/ 14 июля 2020

Я хотел бы чередовать вывод и обучение модели в PyTorch, но мне нужно изменить его во время вывода, и у меня есть несколько вопросов по этому поводу.

Могу ли я выгрузить модель из графического процессора с помощью вызывая model.to ('cpu'), сделайте измененную копию (и запустите ее на графическом процессоре), а затем переместите оригинал обратно в gpu, вызвав model.to ('gpu')? Другими словами, является ли перемещение модели gpu-> cpu-> gpu операцией без потерь? Что происходит с параметрами, переданными оптимизатору? Я не хочу терять состояние оптимизатора

Как лучше всего сделать копию модели в памяти? Я могу сохранить его, а затем перезагрузить копию, но не уверен, что это необходимо просто для копирования.

Если я хочу выполнить вывод с половинной точностью (в данном случае более чем в 2 раза быстрее), могу ли я изменить модель на половину, а потом поменять обратно? Это без потерь? (Сохраняет ли модель всю точную копию всего или заменяет гири с половинной точностью на месте?)

Модель похожа на ResNet50. Недостаточно памяти GPU для двух моделей :)

1 Ответ

1 голос
/ 14 июля 2020

«Как лучше всего сделать копию модели в памяти? Я могу сохранить ее, а затем повторно загрузить копию, но не уверен, нужно ли это просто для копирования».

Вы можете скопируйте модель с помощью:

import copy
...
best_model = copy.deepcopy(model)

с best_model вы можете сохранить на диск или загрузить в другую модель, et c

...