class_docstr: Coordinates checkpointing and checkpointing across multiple nodes.
  Each of `init`, `load` and `save` will build TaskGroups which will
  trigger checkpointing on each of the nodes involved in a distributed job.
  
  Args:
      db_prefix: The prefix used to construct full db name. Since `absolute_path`
          is set to True, this will be used as db_name in SaveOp.
      db_type: Type of database to use for storing checkpoint.
      metadata_handler: An optional object capable of reading/writing
          checkpoint info in storage of choice.
class_docstr_tok: ["Coordinates","checkpointing","and","checkpointing","across","multiple","nodes",".","Each","of","`","init","`",",","`","load","`","and","`","save","`","will","build","TaskGroups","which","will","trigger","checkpointing","on","each","of","the","nodes","involved","in","a","distributed","job",".","Args",":","db_prefix",":","The","prefix","used","to","construct","full","db","name",".","Since","`","absolute_path","`","is","set","to","True",",","this","will","be","used","as","db_name","in","SaveOp",".","db_type",":","Type","of","database","to","use","for","storing","checkpoint",".","metadata_handler",":","An","optional","object","capable","of","reading\/writing","checkpoint","info","in","storage","of","choice","."]
docstr: Identify the epoch-id from which Job must resume
  
  Args:
      user_epoch: An integer. Optional parameter for user to explicitly
          identify the epoch-id to load checkpoint from
  Returns:
      epoch: the epoch-id to load checkpoints from
          or None if no checkpoints were written
docstr_tok: ["Identify","the","epoch-id","from","which","Job","must","resume","Args",":","user_epoch",":","An","integer",".","Optional","parameter","for","user","to","explicitly","identify","the","epoch-id","to","load","checkpoint","from","Returns",":","epoch",":","the","epoch-id","to","load","checkpoints","from","or","None","if","no","checkpoints","were","written"]
code: def get_resume_from_epoch_id(self, user_epoch=None):
      """
      Identify the epoch-id from which Job must resume
  
      Args:
          user_epoch: An integer. Optional parameter for user to explicitly
              identify the epoch-id to load checkpoint from
      Returns:
          epoch: the epoch-id to load checkpoints from
              or None if no checkpoints were written
      """
      last_epoch = user_epoch
      if self._metadata_handler is not None:
          last_epoch = self._metadata_handler.last_epoch(
              user_epoch=user_epoch
          )
      return last_epoch
  
imports: import os
  import logging
  from caffe2.python import core, context
  from caffe2.python.net_builder import ops
  from caffe2.python.task import final_output, Node, Task, TaskGroup, TaskOutput, WorkspaceType
label_desc: Use image node_id 10 for calling the MultiNodeCheckpointManager obj's underlying member method code with example usage: obj.get_resume_from_epoch_id(user_epoch) and returns: last_epoch