bytecode to evaluate it. In this section, we will focus on how we can
identify whether or not the objects referenced in the frame have
changed. This is a critical piece of functionality in TorchDynamo,
because it drives the entire invalidation lifecycle. This
functionality is called guards.
At a very high level, the flow can be summarized like this:


TorchDynamo receives a Python frame.


It converts the frame (1) passing it through instruction
   translation.


For the objects captured in (2), TorchDynamo creates tracking
   objects that are: * tracked on an output graph, which is an
   internal specialization of a torch.fx.Tracer * guards


TorchDynamo processes the guard objects created in (3), turning
   them into a generated Python function, check_fn, associated with
   a piece of code.


The check_fn is evaluated whenever we encounter this code a
   subsequent time - if a check_fn passes and evaluates to True,
   TorchDynamo identifies the code in the cache and the code

