  
          model_inputs, model_targets = self._feeder.get_batch()
  
          try:
              loss: T.List[float] = self._model.model.train_on_batch(model_inputs, y=model_targets)
          except tf_errors.ResourceExhaustedError as err:
              msg = ("You do not have enough GPU memory available to train the selected model at "
                     "the selected settings. You can try a number of things:"
                     "\n1) Close any other application that is using your GPU (web browsers are "
                     "particularly bad for this)."
 
</s> remove #: plugins/train/_config.py:531
 </s> add #: plugins/train/_config.py:556 </s> remove "Enable the Tensorflow GPU 'allow_growth' configuration "
"option. This option prevents Tensorflow from allocating all of the GPU VRAM "
"at launch but can lead to higher VRAM fragmentation and slower performance. "
"Should only be enabled if you are receiving errors regarding 'cuDNN fails to "
"initialize' when commencing training."
 </s> add "Enable the Tensorflow GPU 'allow_growth' configuration option. This option "
"prevents Tensorflow from allocating all of the GPU VRAM at launch but can "
"lead to higher VRAM fragmentation and slower performance. Should only be "
"enabled if you are receiving errors regarding 'cuDNN fails to initialize' "
"when commencing training." </s> remove     def _validate_image_counts(cls, images: Dict[Literal["a", "b"], List[str]]) -> None:
 </s> add     def _validate_image_counts(cls, images: dict[T.Literal["a", "b"], list[str]]) -> None: </s> remove         directml_ver = rocm_ver = (2, 10)
        min_ver = (2, 7)
 </s> add         min_ver = (2, 10) </s> remove         lm_side: Literal["a", "b"] = "a" if self._side == "b" else "b"
 </s> add         lm_side: T.Literal["a", "b"] = "a" if self._side == "b" else "b"
            loss: list[float] = self._model.model.train_on_batch(model_inputs, y=model_targets)
  
          model_inputs, model_targets = self._feeder.get_batch()
  
          try:
            loss: list[float] = self._model.model.train_on_batch(model_inputs, y=model_targets)
          except tf_errors.ResourceExhaustedError as err:
              msg = ("You do not have enough GPU memory available to train the selected model at "
                     "the selected settings. You can try a number of things:"
                     "\n1) Close any other application that is using your GPU (web browsers are "
                     "particularly bad for this)."
keep keep keep keep replace keep keep keep keep keep
 Rebase code (#1326)

* Remove tensorflow_probability requirement

* setup.py - fix progress bars

* requirements.txt: Remove pre python 3.9 packages

* update apple requirements.txt

* update INSTALL.md

* Remove python<3.9 code

* setup.py - fix Windows Installer

* typing: python3.9 compliant

* Update pytest and readthedocs python versions

* typing fixes

* Python Version updates
  - Reduce max version to 3.10
  - Default to 3.10 in installers
  - Remove incompatible 3.11 tests

* Update dependencies

* Downgrade imageio dep for Windows

* typing: merge optional unions and fixes

* Updates
  - min python version 3.10
  - typing to python 3.10 spec
  - remove pre-tf2.10 code
  - Add conda tests

* train: re-enable optimizer saving

* Update dockerfiles

* Update setup.py
  - Apple Conda deps to setup.py
  - Better Cuda + dependency handling

* bugfix: Patch logging to prevent Autograph errors

* Update dockerfiles

* Setup.py - Setup.py - stdout to utf-8

* Add more OSes to github Actions

* suppress mac-os end to end test 
plugins/train/trainer/_base.py