code: def test_save_and_load_model(only_state_dict):
      """
      测试 save_model 和 load_model 函数
      """
      try:
          path = "model"
          dataset = TorchNormalXYDataset(20)
          dataloader = DataLoader(dataset, batch_size=4)
          driver1, driver2 = generate_random_driver(
              20, 1
          ), generate_random_driver(20, 1)
  
          driver1.save_model(path, only_state_dict)
          driver2.load_model(path, only_state_dict)
  
          for batch in dataloader:
              batch = driver1.move_data_to_device(batch)
              res1 = driver1.model.evaluate_step(**batch)
              res2 = driver2.model.evaluate_step(**batch)
  
              assert torch.equal(res1["preds"], res2["preds"])
      finally:
          rank_zero_rm(path)
  
imports: import pytest
  from pathlib import Path
  from pkg_resources import parse_version
  from fastNLP.core.drivers.torch_driver.single_device import TorchSingleDriver
  from fastNLP.core.samplers import ReproduceBatchSampler, RandomSampler
  from tests.helpers.models.torch_model import TorchNormalModel_Classification_1
  from tests.helpers.datasets.torch_data import TorchNormalDataset, TorchNormalXYDataset
  from tests.helpers.datasets.paddle_data import PaddleNormalDataset
  from tests.helpers.models.paddle_model import PaddleNormalModel_Classification_1
  from fastNLP.envs.distributed import rank_zero_rm
  from fastNLP.envs.imports import _NEED_IMPORT_PADDLE, _NEED_IMPORT_TORCH
  from fastNLP import prepare_torch_dataloader, BucketedBatchSampler
label_desc: Use image node_id 4 for calling a global function with example usage: test_save_and_load_model(only_state_dict) without return types