class_docstr: Abstract base class used to define a callback that should execute during
  the lifetime of a PyTorchTrial or DeepSpeedTrial.
  
  .. warning::
      If you are defining a stateful callback (e.g., it mutates a ``self``
      attribute over its lifetime), you must also override :meth:`state_dict()` and
      :meth:`load_state_dict()` to ensure this state can be serialized and deserialized
      over checkpoints.
  
  .. warning::
      If distributed training is enabled, every GPU will execute a copy of this callback (except
      for :meth:`on_checkpoint_write_end` during PyTorchTrial training, which is only called on
      the chief). To configure a callback implementation to execute on a subset of GPUs, please
      condition your implementation on ``trial.context.distributed.get_rank()``.
class_docstr_tok: ["Abstract","base","class","used","to","define","a","callback","that","should","execute","during","the","lifetime","of","a","PyTorchTrial","or","DeepSpeedTrial",".","..","warning",":",":","If","you","are","defining","a","stateful","callback","(","e.g.",",","it","mutates","a","``","self","``","attribute","over","its","lifetime",")",",","you","must","also","override",":","meth",":","`","state_dict","(",")","`","and",":","meth",":","`","load_state_dict","(",")","`","to","ensure","this","state","can","be","serialized","and","deserialized","over","checkpoints",".","..","warning",":",":","If","distributed","training","is","enabled",",","every","GPU","will","execute","a","copy","of","this","callback","(","except","for",":","meth",":","`","on_checkpoint_write_end","`","during","PyTorchTrial","training",",","which","is","only","called","on","the","chief",")",".","To","configure","a","callback","implementation","to","execute","on","a","subset","of","GPUs",",","please","condition","your","implementation","on","``","trial.context.distributed.get_rank","(",")","``","."]
docstr: Run after a new validation epoch has finished
docstr_tok: ["Run","after","a","new","validation","epoch","has","finished"]
code: def on_validation_epoch_end(self, outputs: List[Any]) -> None:
      """
      Run after a new validation epoch has finished
      """
      pass
  
file_path: determined/harness/determined/pytorch/_callback.py
imports: from typing import Any, Dict, List, Optional
label_desc: Use image node_id 17 for calling the PyTorchCallback obj's underlying member method code with example usage: obj.on_validation_epoch_end(outputs) without return types