class_docstr: Fetch shape argument from ``ShapeProp`` without re-executing
  the ``GraphModule`` from scratch.
docstr: Fetch ``initial_env`` for execution. This is because ``ShapeProp``
  has already attached outputs of each ``Node`` to its ``MetaInfo``.
  
  Args:
      device (torch.device): The device to place the execution, default to ``None``
  
  Returns:
      Dict[Node, Any]: The initial environment for execution
docstr_tok: ["Fetch","``","initial_env","``","for","execution",".","This","is","because","``","ShapeProp","``","has","already","attached","outputs","of","each","``","Node","``","to","its","``","MetaInfo","``",".","Args",":","device","(","torch.device",")",":","The","device","to","place","the","execution",",","default","to","``","None","``","Returns",":","Dict","[","Node",",","Any","]",":","The","initial","environment","for","execution"]
code: def fetch_initial_env(self, device=None) -> Dict[Node, Any]:
      """
      Fetch ``initial_env`` for execution. This is because ``ShapeProp``
      has already attached outputs of each ``Node`` to its ``MetaInfo``.
  
      Args:
          device (torch.device): The device to place the execution, default to ``None``
  
      Returns:
          Dict[Node, Any]: The initial environment for execution
      """
      initial_env = {}
      for n in self.module.graph.nodes:
          initial_env[n] = _denormalize_tuple(MetaInfo(n).outputs)
      return initial_env
  
imports: from typing import Any, Dict, Iterator, List, Optional, Tuple
  import torch
  import torch.fx
  from torch.autograd.profiler_util import _format_memory
  from torch.fx import GraphModule
  from torch.fx.node import Argument, Node, Target
  from colossalai._analyzer._subclasses import flop_count
  from colossalai._analyzer.fx.node_util import MetaInfo
label_desc: Use image node_id 3 for calling the GraphProfiler obj's underlying member method code with example usage: obj.fetch_initial_env(device) and returns: initial_env