code: def save(self, save_path: str, global_step: int):
      client_state = {
          "global_step": global_step,
      }
      if self.scheduler is not None:
          client_state["scheduler_state"] = self.scheduler.state_dict()
  
      kwargs = {}
      if _deepspeed_0101:
          kwargs["exclude_frozen_parameters"] = True
  
      self.model.save_checkpoint(
          save_path, client_state=client_state, **kwargs
      )
  
imports: import logging
  import os
  import warnings
  from typing import Any, Dict, List, Mapping, Optional, Tuple, TYPE_CHECKING, Union
  import deepspeed
  import deepspeed.comm
  import torch
  from deepspeed.utils.zero_to_fp32 import get_fp32_state_dict_from_zero_checkpoint
  from packaging import version
  from torch import nn
  from torch.optim.optimizer import Optimizer
  from ludwig.constants import MIN_POSSIBLE_BATCH_SIZE
  from ludwig.distributed.ddp import DDPStrategy
  from ludwig.modules.optimization_modules import get_optimizer_class_and_kwargs
  from ludwig.utils.checkpoint_utils import Checkpoint
  from ludwig.utils.model_utils import extract_tensors, replace_tensors
label_desc: Use image node_id 3 for calling the DeepSpeedCheckpoint obj's underlying member method code with example usage: obj.save(save_path, global_step) without return types