          if self.state.model_needs_rebuild:
              self._model = self._settings.check_model_precision(self._model, self._state)
  
          optimizer = Optimizer(self.config["optimizer"],
                                self.config["learning_rate"],
                                autoclip,
                                10 ** int(self.config["epsilon_exponent"])).optimizer
 
</s> remove                               self.config.get("clipnorm", False),
                              10 ** int(self.config["epsilon_exponent"]),
                              self._mixed_precision,
                              self._args).optimizer
 </s> add                               autoclip,
                              10 ** int(self.config["epsilon_exponent"])).optimizer </s> remove         if clipnorm and (arguments.distributed or mixed_precision):
            logger.warning("Clipnorm has been selected, but is unsupported when using distributed "
                           "or mixed_precision training, so has been disabled. If you wish to "
                           "enable clipnorm, then you must disable these other options.")
            clipnorm = False
        if clipnorm and get_backend() == "amd":
            # TODO add clipnorm in for plaidML when it is fixed upstream. Still not fixed in
            # release 0.7.0.
            logger.warning("Due to a bug in plaidML, clipnorm cannot be used on AMD backends so "
                           "has been disabled")
            clipnorm = False
        if clipnorm:
            self._kwargs["clipnorm"] = 1.0
 </s> add         if not autoclip:
            return </s> remove         priors = ["dssim_loss", "mask_type", "mask_type", "l2_reg_term"]
        new_items = ["loss_function", "learn_mask", "mask_type", "loss_function_2"]
 </s> add         priors = ["dssim_loss", "mask_type", "mask_type", "l2_reg_term", "clipnorm"]
        new_items = ["loss_function", "learn_mask", "mask_type", "loss_function_2",
                     "autoclip"] </s> remove                  clipnorm: bool,
                 epsilon: float,
                 mixed_precision: bool,
                 arguments: "Namespace") -> None:
        logger.debug("Initializing %s: (optimizer: %s, learning_rate: %s, clipnorm: %s, "
                     "epsilon: %s, mixed_precision: %s, arguments: %s)", self.__class__.__name__,
                     optimizer, learning_rate, clipnorm, epsilon, mixed_precision, arguments)
 </s> add                  autoclip: bool,
                 epsilon: float) -> None:
        logger.debug("Initializing %s: (optimizer: %s, learning_rate: %s, autoclip: %s, "
                     ", epsilon: %s)", self.__class__.__name__, optimizer, learning_rate,
                     autoclip, epsilon)
        autoclip = get_backend() != "amd" and self.config["autoclip"]
          if self.state.model_needs_rebuild:
              self._model = self._settings.check_model_precision(self._model, self._state)
  
        autoclip = get_backend() != "amd" and self.config["autoclip"]
          optimizer = Optimizer(self.config["optimizer"],
                                self.config["learning_rate"],
                                autoclip,
                                10 ** int(self.config["epsilon_exponent"])).optimizer
keep keep add keep keep keep keep
 Nvidia: Add AutoClip training option 
plugins/train/model/_base/model.py