From 048dd6cf10937cb188d0116b25d7a3005b6686fe Mon Sep 17 00:00:00 2001 From: Shai Erera Date: Tue, 20 Oct 2020 14:50:47 +0300 Subject: [PATCH] Fix bug in _sorted_checkpoints (#7880) I'm using transformers 3.3.1 and run a training script with `--save_total_limit 3`. I hit the exception below, and after debugging the code found that it wrongly tries to index into the `best_model_checkpoint`'s *str* rather than the `sorted_checkpoints` array. When running without the fix I got this exception: ``` Traceback (most recent call last): File "//.conda/envs/transformers/lib/python3.7/site-packages/transformers/trainer.py", line 921, in _save_training self._rotate_checkpoints(use_mtime=True) File "//.conda/envs/transformers/lib/python3.7/site-packages/transformers/trainer.py", line 1283, in _rotate_checkpoints checkpoints_sorted = self._sorted_checkpoints(use_mtime=use_mtime) File "//.conda/envs/transformers/lib/python3.7/site-packages/transformers/trainer.py", line 1274, in _sorted_checkpoints checkpoints_sorted[best_model_index], TypeError: 'str' object does not support item assignment ``` --- src/transformers/trainer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/transformers/trainer.py b/src/transformers/trainer.py index eb7e1c4b29..318c5a6e19 100755 --- a/src/transformers/trainer.py +++ b/src/transformers/trainer.py @@ -1204,7 +1204,7 @@ class Trainer: # Make sure we don't delete the best model. if self.state.best_model_checkpoint is not None: best_model_index = checkpoints_sorted.index(self.state.best_model_checkpoint) - checkpoints_sorted[best_model_index], checkpoints_sorted[best_model_index][-1] = ( + checkpoints_sorted[best_model_index], checkpoints_sorted[-1] = ( checkpoints_sorted[-1], checkpoints_sorted[best_model_index], )