text: Title: NotFoundError: Local Variable does not exist with backward_passes_per_step > 1
  Body: **Environment:**
  1. Framework: tensorflow.keras
  2. Framework version: 2.5.0
  3. Horovod version: 0.22.0
  4. MPI version: 
  5. CUDA version: 11.0
  6. NCCL version: 
  7. Python version: 3.8
  8. Spark / PySpark version:
  9. Ray version:
  10. OS and version:
  11. GCC version:
  12. CMake version:
  
  **Checklist:**
  1. Did you search issues to find if somebody asked this question before? yes
  2. If your question is about hang, did you read [this doc](https://github.com/horovod/horovod/blob/master/docs/running.rst)? --
  3. If your question is about docker, did you read [this doc](https://github.com/horovod/horovod/blob/master/docs/docker.rst)? --
  4. Did you check if you question is answered in the [troubleshooting guide] (https://github.com/horovod/horovod/blob/master/docs/troubleshooting.rst)?
  
  **Bug report:**
  Hi, I am getting a NotFoundError: Resouce localhost/_AnonymousVar<xxx>/N10tensorflow3VarE does not exist when setting backward_passes_per_step > 1.
  I looked through both tensorflow and horovod code and might have found the origin of this:
  My traceback ends up inside tensorflow/python/eager/def_function during the self.train_function(iterator) call inside model.fit(). 
  The horovod DistributedOptimizer is initialized with a LocalGradientAggregationHelperEager, though, since the context.executing_eagerly() gets called before the model.fit and therefore inside an eager execution environment by default. The train_function is wrapped into a tf.function and is executed in graph mode. 
  
  summary: horovod initializes the optimizer with an Eager Aggregation Helper outside the model.fit loop, gradient aggregation is called inside the model.fit loop in graph execution
  
  I guess this is the error. I dont know if this error still exists in the newest version of horovod / tensorflow.keras but the code did not change on that end so it most likely is also a bug in the current version. 
  If someone can recreate this on another version please change the code to initialize the AggregationHelper according to the tf.run_functions_eagerly() property instead; and hopefully you can provide a quick workaround for me as I cannot change the installation on the HPC cluster I am working with.
  
  **Update:**
  I tried the following two workarounds:
  1. Manually create an instance of LocalGradientAggregationHelper and feed it into the optimizer's attribute. This unfortunately raised the same exception as in #2110 , caused by line 103 inside horovod.tensorflow.gradient_aggregation: `zero_grad = tf.zeros(shape=grad.get_shape().as_list(), dtype=grad.dtype)`. I do not see the exact problem here. (Maybe something else that has to be manually wrapped by tf.function?
  2. Compile the model in eager execution mode. This works fine, although I lose some speedup here of course.
  
  