code: def test_fine_tuning_end_to_end(self) -> None:
      with in_temporary_directory() as pretrain_dir:
          # Run a pre-training to have some weights to being with
          pretrain_config = self._create_pretraining_config()
          run_integration_test(pretrain_config)
          checkpoint_path = os.path.join(
              pretrain_dir, "checkpoint.torch"
          )
  
          # Create a separate directly in which to run the fine-tuning
          with in_temporary_directory():
              finetune_config = self._create_finetuning_config(
                  checkpoint_path,
                  construct_single_param_group_only=False,
                  regularize_bias=False,
              )
              result = run_integration_test(finetune_config)
              accuracies = result.get_accuracies(from_metrics_file=True)
              self.assertEqual(4, len(accuracies))
  
imports: import os
  import unittest
  from classy_vision.optim import build_optimizer_schedulers
  from vissl.config import AttrDict
  from vissl.models import build_model
  from vissl.optimizers import get_optimizer_param_groups
  from vissl.utils.checkpoint import CheckpointFormatConverter
  from vissl.utils.hydra_config import compose_hydra_configuration, convert_to_attrdict
  from vissl.utils.test_utils import gpu_test, in_temporary_directory, run_integration_test, spawn_distributed_test
label_desc: Use image node_id 12 for calling the TestFineTuning obj's underlying member method code with example usage: obj.test_fine_tuning_end_to_end() without return types