code: def _get_work_item_key(self) -> UniqueKey:
      # execute backward first (if backward phase in work_list)
      num_microbatches = self.num_microbatches
  
      if self.forward_times < num_microbatches:
          target_phase = Phase.FORWARD
          target_microbatch_id = self.forward_times
      else:
          target_phase = Phase.BACKWARD
          target_microbatch_id = self.backward_times
  
      target_key = UniqueKey(target_microbatch_id, target_phase)
  
      return target_key
  
imports: import threading
  from typing import Callable, Dict, List
  import torch
  from torch._C._distributed_rpc import PyRRef
  from torch.futures import Future
  from colossalai.legacy.pipeline.pipeline_process_group import ppg
  from colossalai.legacy.pipeline.rpc._pipeline_base import Phase, PipelineEngineBase, UniqueKey, WorkerBase, WorkItem
label_desc: Use image node_id 1 for calling the FillDrainWorker obj's underlying member method code with example usage: obj._get_work_item_key() and returns: target_key