mirror of
https://github.com/wassname/ray.git
synced 2026-08-11 11:24:51 +08:00
[tune/rllib] Add checkpoint eraser (#4490)
This commit is contained in:
committed by
Eric Liang
parent
7746d20d30
commit
820c71b7d0
@@ -4,6 +4,7 @@ from __future__ import division
|
||||
from __future__ import print_function
|
||||
|
||||
import logging
|
||||
import math
|
||||
import os
|
||||
import random
|
||||
import time
|
||||
@@ -469,10 +470,44 @@ class RayTrialExecutor(TrialExecutor):
|
||||
if storage == Checkpoint.MEMORY:
|
||||
trial._checkpoint.value = trial.runner.save_to_object.remote()
|
||||
else:
|
||||
with warn_if_slow("save_to_disk"):
|
||||
trial._checkpoint.value = ray.get(trial.runner.save.remote())
|
||||
# Keeps only highest performing checkpoints if enabled
|
||||
if trial.keep_checkpoints_num:
|
||||
try:
|
||||
last_attr_val = trial.last_result[
|
||||
trial.checkpoint_score_attr]
|
||||
if (trial.compare_checkpoints(last_attr_val)
|
||||
and not math.isnan(last_attr_val)):
|
||||
trial.best_checkpoint_attr_value = last_attr_val
|
||||
self._checkpoint_and_erase(trial)
|
||||
except KeyError:
|
||||
logger.warning(
|
||||
"Result dict has no key: {}. keep"
|
||||
"_checkpoints_num flag will not work".format(
|
||||
trial.checkpoint_score_attr))
|
||||
else:
|
||||
with warn_if_slow("save_to_disk"):
|
||||
trial._checkpoint.value = ray.get(
|
||||
trial.runner.save.remote())
|
||||
|
||||
return trial._checkpoint.value
|
||||
|
||||
def _checkpoint_and_erase(self, trial):
|
||||
"""Checkpoints the model and erases old checkpoints
|
||||
if needed.
|
||||
Parameters
|
||||
----------
|
||||
trial : trial to save
|
||||
"""
|
||||
|
||||
with warn_if_slow("save_to_disk"):
|
||||
trial._checkpoint.value = ray.get(trial.runner.save.remote())
|
||||
|
||||
if len(trial.history) >= trial.keep_checkpoints_num:
|
||||
ray.get(trial.runner.delete_checkpoint.remote(trial.history[-1]))
|
||||
trial.history.pop()
|
||||
|
||||
trial.history.insert(0, trial._checkpoint.value)
|
||||
|
||||
def restore(self, trial, checkpoint=None):
|
||||
"""Restores training state from a given model checkpoint.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user