code: def save_model(
      model, optimizer, save_dir, save_name, last_epoch, ema_model=None
  ):
      """
      save model into disk.
  
      Args:
          model (dict): the model state_dict to save parameters.
          optimizer (paddle.optimizer.Optimizer): the Optimizer instance to
              save optimizer states.
          save_dir (str): the directory to be saved.
          save_name (str): the path to be saved.
          last_epoch (int): the epoch index.
          ema_model (dict|None): the ema_model state_dict to save parameters.
      """
      if paddle.distributed.get_rank() != 0:
          return
  
      save_dir = os.path.normpath(save_dir)
      if not os.path.exists(save_dir):
          os.makedirs(save_dir)
  
      if save_name == "best_model":
          best_model_path = os.path.join(save_dir, "best_model")
          if not os.path.exists(best_model_path):
              os.makedirs(best_model_path)
  
      save_path = os.path.join(save_dir, save_name)
      # save model
      if isinstance(model, nn.Layer):
          paddle.save(model.state_dict(), save_path + ".pdparams")
          best_model = model.state_dict()
      else:
          assert isinstance(
              model, dict
          ), "model is not a instance of nn.layer or dict"
          if ema_model is None:
              paddle.save(model, save_path + ".pdparams")
              best_model = model
          else:
              assert isinstance(ema_model, dict), (
                  "ema_model is not a instance of dict, "
                  "please call model.state_dict() to get."
              )
              # Exchange model and ema_model to save
              paddle.save(ema_model, save_path + ".pdparams")
              paddle.save(model, save_path + ".pdema")
              best_model = ema_model
  
      if save_name == "best_model":
          best_model_path = os.path.join(best_model_path, "model")
          paddle.save(best_model, best_model_path + ".pdparams")
      # save optimizer
      state_dict = optimizer.state_dict()
      state_dict["last_epoch"] = last_epoch
      paddle.save(state_dict, save_path + ".pdopt")
      logger.info("Save checkpoint: {}".format(save_dir))
  
file_path: PaddleDetection/ppdet/utils/checkpoint.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from __future__ import unicode_literals
  import os
  import numpy
  import paddle
  import paddle.nn
  from .download import get_weights_path
  from .logger import setup_logger
label_desc: Use image node_id 6 for calling a global function with example usage: save_model(model, optimizer, save_dir, save_name, last_epoch, ema_model) without return types