content: import os
  
  import hydra
  import omegaconf
  import pytorch_lightning as pl
  import torch
  from pytorch_lightning.loggers import TensorBoardLogger
  
  torch.backends.cudnn.enabled = True
  torch.backends.cudnn.benchmark = True
  
  
  def hydra_params_to_dotdict(hparams):
      def _to_dot_dict(cfg):
          res = {}
          for k, v in cfg.items():
              if isinstance(v, omegaconf.DictConfig):
                  res.update(
                      {k + "." + subk: subv for subk, subv in _to_dot_dict(v).items()}
                  )
              elif isinstance(v, (str, int, float, bool)):
                  res[k] = v
  
          return res
  
      return _to_dot_dict(hparams)
  
  
  @hydra.main("config/config.yaml")
  def main(cfg):
      model = hydra.utils.instantiate(cfg.task_model, hydra_params_to_dotdict(cfg))
  
      early_stop_callback = pl.callbacks.EarlyStopping(patience=5)
      checkpoint_callback = pl.callbacks.ModelCheckpoint(
          monitor="val_acc",
          mode="max",
          save_top_k=2,
          filepath=os.path.join(
              cfg.task_model.name, "{epoch}-{val_loss:.2f}-{val_acc:.3f}"
          ),
          verbose=True,
      )
      trainer = pl.Trainer(
          gpus=list(cfg.gpus),
          max_epochs=cfg.epochs,
          early_stop_callback=early_stop_callback,
          checkpoint_callback=checkpoint_callback,
          distributed_backend=cfg.distrib_backend,
      )
  
      trainer.fit(model)
  
  
  if __name__ == "__main__":
      main()
  