code: def test_dino_soft_distillation(self) -> None:
      with in_temporary_directory() as pretrain_dir:
          # Run a pre-training to have some weights to being with
          pretrain_config = self._create_dino_pretraining_config(
              num_gpu=2
          )
          run_integration_test(pretrain_config)
          checkpoint_path = os.path.join(
              pretrain_dir, "checkpoint.torch"
          )
  
          # Distillation to a DEIT
          with in_temporary_directory():
              distill_config = (
                  self._create_soft_dino_distillation_config(
                      checkpoint_path=checkpoint_path,
                      num_gpu=2,
                  )
              )
  
              # Run distillation
              result = run_integration_test(distill_config)
              losses = result.get_losses()
              print(losses)
              self.assertTrue(10, len(losses))
              self.assertGreater(losses[0], losses[-1])
  
file_path: vissl/tests/test_distillation_dino.py
imports: import os
  import unittest
  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
label_desc: Use image node_id 3 for calling the TestDistillationDINO obj's underlying member method code with example usage: obj.test_dino_soft_distillation() without return types