code: def build_retrieval_model(cfg):
      """
      Builds the model on 1-gpu and initializes from the weight.
      """
      logging.info("Building model....")
      model = build_model(cfg.MODEL, cfg.OPTIMIZER)
      if g_pathmgr.exists(cfg.MODEL.WEIGHTS_INIT.PARAMS_FILE):
          init_weights_path = cfg.MODEL.WEIGHTS_INIT.PARAMS_FILE
          logging.info(f"Initializing model from: {init_weights_path}")
          weights = load_checkpoint(
              init_weights_path, device=torch.device("cuda")
          )
          skip_layers = cfg.MODEL.WEIGHTS_INIT.get("SKIP_LAYERS", [])
          replace_prefix = cfg.MODEL.WEIGHTS_INIT.get(
              "REMOVE_PREFIX", None
          )
          append_prefix = cfg.MODEL.WEIGHTS_INIT.get(
              "APPEND_PREFIX", None
          )
          state_dict_key_name = cfg.MODEL.WEIGHTS_INIT.get(
              "STATE_DICT_KEY_NAME", None
          )
  
          init_model_from_consolidated_weights(
              cfg,
              model,
              weights,
              state_dict_key_name=state_dict_key_name,
              skip_layers=skip_layers,
              replace_prefix=replace_prefix,
              append_prefix=append_prefix,
          )
      else:
          # We only throw the warning if not weights file is provided. We want to
          # benchmark the random initialization model too and hence support that.
          logging.warning("Model is randomly initialized....")
      logging.info(f"Model is:\n {model}")
      return model
  
imports: import logging
  import os
  import sys
  from argparse import Namespace
  from typing import Any, List
  import numpy
  import torch
  import torchvision
  from classy_vision.generic.util import copy_model_to_gpu, load_checkpoint
  from iopath.common.file_io import g_pathmgr
  from vissl.config import AttrDict
  from vissl.hooks import default_hook_generator
  from vissl.models import build_model
  from vissl.utils.checkpoint import get_checkpoint_folder, init_model_from_consolidated_weights
  from vissl.utils.distributed_launcher import launch_distributed
  from vissl.utils.env import set_env_vars, setup_path_manager
  from vissl.utils.extract_features_utils import ExtractedFeaturesLoader
  from vissl.utils.hydra_config import compose_hydra_configuration, convert_to_attrdict, print_cfg
  from vissl.utils.instance_retrieval_utils.data_util import CopyDaysDataset, GenericInstanceRetrievalDataset, get_average_gem, InstanceRetrievalDataset, InstanceRetrievalImageLoader, InstreDataset, is_copdays_dataset, is_instre_dataset, is_oxford_paris_dataset, is_revisited_dataset, is_whiten_dataset, l2n, MultigrainResize, RevisitedInstanceRetrievalDataset, WhiteningTrainingImageDataset
  from vissl.utils.instance_retrieval_utils.rmac import get_rmac_descriptors
  from vissl.utils.io import load_file, makedir, save_file
  from vissl.utils.logger import setup_logging, shutdown_logging
  from vissl.utils.pca import load_pca, train_and_save_pca
  from vissl.utils.perf_stats import PerfStats, PerfTimer
label_desc: Use image node_id 1 for calling a global function with example usage: build_retrieval_model(cfg) and returns: model