Я пытаюсь реализовать эффективный способ сделать параллельный вывод в Pytorch.
Сейчас я запускаю 2 процесса на моем GPU (у меня только 1 GPU, оба процесса на одном устройстве) , Каждый процесс загружает мою модель Pytorch и делает шаг вывода.
Моя проблема в том, что моя модель занимает достаточно места в памяти. У меня 12 Гб памяти на GPU, и модель занимает ~ 3 Гб памяти (без данных). Это означает, что мои два процесса занимают 6 ГБ памяти только для модели.
Теперь мне было интересно, можно ли загрузить модель только один раз и использовать эту модель для вывода на двух разных процессах. То, что я хочу, - это то, что только 3 ГБ памяти потребляется моделью, но все еще имеет 2 процесса.
Я получил этот ответ с упоминанием IP C, но насколько Я понял, что это означает, что процесс # 2 будет копировать модель из процесса # 1, поэтому я все равно получу 6 ГБ, выделенных для модели.
Я также проверил документацию по Pytorch относительно DataParallel и DistributedDataParallel, но это кажется невозможным.
Это , похоже, то, что я хочу, но я не смог найти пример кода о том, как использовать Pytorch в режиме вывода.
Я понимаю, что это может быть сложно сделать для обучения, но учтите, что я говорю только о шаге вывода (модель находится в режиме только для чтения, нет необходимости обновлять градиенты). С этим предположением я не уверен, возможно ли это или нет.