(self)
| 382 | return False |
| 383 | |
| 384 | def auto_denan_recover(self): |
| 385 | try: |
| 386 | if self.C.rank == 0: |
| 387 | self.logger.info('NaN or Inf encountered, recovering from {}\t'.format(self.last_save_iter)) |
| 388 | # recover model |
| 389 | self.model.load_state_dict(self.last_state_dict, strict=True) |
| 390 | # recover optimizer |
| 391 | for g in self.optimizer.param_groups: |
| 392 | for p in g['params']: |
| 393 | self.optimizer.state[p]['momentum_buffer'].copy_(self.last_optim_state_dict['state'][id(p)]['momentum_buffer']) |
| 394 | except: |
| 395 | raise RuntimeError('If NaN or Inf at iter 0, try lower lr. Otherwise please contact zhouyucong for a bug fix') |
| 396 | |
| 397 | def auto_denan_save(self): |
| 398 | if self.last_save_iter < 100 or self.tmp.current_step - self.last_save_iter > 100: |
no test coverage detected