Skip to content

Commit e3528af

Browse files
authored
Move optimizer creation after device placement for ddp backends. (#2904)
1 parent 56396ab commit e3528af

File tree

3 files changed

+21
-21
lines changed

3 files changed

+21
-21
lines changed

pytorch_lightning/accelerators/ddp2_backend.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -106,13 +106,6 @@ def ddp_train(self, process_idx, mp_queue, model, is_master=False, proc_offset=0
106106
log.info(f'All DDP processes registered. Starting ddp with {self.trainer.world_size} processes')
107107
log.info('-' * 100)
108108

109-
# CHOOSE OPTIMIZER
110-
# allow for lr schedulers as well
111-
optimizers, lr_schedulers, optimizer_frequencies = self.trainer.init_optimizers(model)
112-
self.trainer.optimizers = optimizers
113-
self.trainer.lr_schedulers = lr_schedulers
114-
self.trainer.optimizer_frequencies = optimizer_frequencies
115-
116109
# MODEL
117110
# copy model to each gpu
118111
if self.trainer.on_gpu:
@@ -130,6 +123,13 @@ def ddp_train(self, process_idx, mp_queue, model, is_master=False, proc_offset=0
130123
torch.cuda.set_device(self.trainer.root_gpu)
131124
model.cuda(self.trainer.root_gpu)
132125

126+
# CHOOSE OPTIMIZER
127+
# allow for lr schedulers as well
128+
optimizers, lr_schedulers, optimizer_frequencies = self.trainer.init_optimizers(model)
129+
self.trainer.optimizers = optimizers
130+
self.trainer.lr_schedulers = lr_schedulers
131+
self.trainer.optimizer_frequencies = optimizer_frequencies
132+
133133
# set model properties before going into wrapper
134134
self.trainer.copy_trainer_model_properties(model)
135135

pytorch_lightning/accelerators/ddp_backend.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -169,13 +169,6 @@ def ddp_train(self, process_idx, mp_queue, model, is_master=False, proc_offset=0
169169
log.info(f'All DDP processes registered. Starting ddp with {self.trainer.world_size} processes')
170170
log.info('-' * 100)
171171

172-
# CHOOSE OPTIMIZER
173-
# allow for lr schedulers as well
174-
optimizers, lr_schedulers, optimizer_frequencies = self.trainer.init_optimizers(model)
175-
self.trainer.optimizers = optimizers
176-
self.trainer.lr_schedulers = lr_schedulers
177-
self.trainer.optimizer_frequencies = optimizer_frequencies
178-
179172
# call sync_bn before .cuda(), configure_apex and configure_ddp
180173
if self.trainer.sync_batchnorm:
181174
model = model.configure_sync_batchnorm(model)
@@ -197,6 +190,13 @@ def ddp_train(self, process_idx, mp_queue, model, is_master=False, proc_offset=0
197190
torch.cuda.set_device(self.trainer.root_gpu)
198191
model.cuda(self.trainer.root_gpu)
199192

193+
# CHOOSE OPTIMIZER
194+
# allow for lr schedulers as well
195+
optimizers, lr_schedulers, optimizer_frequencies = self.trainer.init_optimizers(model)
196+
self.trainer.optimizers = optimizers
197+
self.trainer.lr_schedulers = lr_schedulers
198+
self.trainer.optimizer_frequencies = optimizer_frequencies
199+
200200
# set model properties before going into wrapper
201201
self.trainer.copy_trainer_model_properties(model)
202202

pytorch_lightning/accelerators/ddp_spawn_backend.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -110,13 +110,6 @@ def ddp_train(self, process_idx, mp_queue, model):
110110
log.info(f'All DDP processes registered. Starting ddp with {self.trainer.world_size} processes')
111111
log.info('-' * 100)
112112

113-
# CHOOSE OPTIMIZER
114-
# allow for lr schedulers as well
115-
optimizers, lr_schedulers, optimizer_frequencies = self.trainer.init_optimizers(model)
116-
self.trainer.optimizers = optimizers
117-
self.trainer.lr_schedulers = lr_schedulers
118-
self.trainer.optimizer_frequencies = optimizer_frequencies
119-
120113
# call sync_bn before .cuda(), configure_apex and configure_ddp
121114
if self.trainer.sync_batchnorm:
122115
model = model.configure_sync_batchnorm(model)
@@ -129,6 +122,13 @@ def ddp_train(self, process_idx, mp_queue, model):
129122
torch.cuda.set_device(self.trainer.root_gpu)
130123
model.cuda(self.trainer.root_gpu)
131124

125+
# CHOOSE OPTIMIZER
126+
# allow for lr schedulers as well
127+
optimizers, lr_schedulers, optimizer_frequencies = self.trainer.init_optimizers(model)
128+
self.trainer.optimizers = optimizers
129+
self.trainer.lr_schedulers = lr_schedulers
130+
self.trainer.optimizer_frequencies = optimizer_frequencies
131+
132132
# set model properties before going into wrapper
133133
self.trainer.copy_trainer_model_properties(model)
134134

0 commit comments

Comments
 (0)