code: def read_in_q_k_v(
      state_dict,
      config,
      has_lm_head=False,
      is_semantic=False,
      hf_prefix="data2vec_vision.",
  ):
      for i in range(config.num_hidden_layers):
          prefix = "backbone." if is_semantic else ""
          # queries, keys and values
          in_proj_weight = state_dict.pop(
              f"{prefix}blocks.{i}.attn.qkv.weight"
          )
          q_bias = state_dict.pop(f"{prefix}blocks.{i}.attn.q_bias")
          v_bias = state_dict.pop(f"{prefix}blocks.{i}.attn.v_bias")
  
          state_dict[
              f"{hf_prefix}encoder.layer.{i}.attention.attention.query.weight"
          ] = in_proj_weight[: config.hidden_size, :]
          state_dict[
              f"{hf_prefix}encoder.layer.{i}.attention.attention.query.bias"
          ] = q_bias
          state_dict[
              f"{hf_prefix}encoder.layer.{i}.attention.attention.key.weight"
          ] = in_proj_weight[
              config.hidden_size : config.hidden_size * 2, :
          ]
          state_dict[
              f"{hf_prefix}encoder.layer.{i}.attention.attention.value.weight"
          ] = in_proj_weight[-config.hidden_size :, :]
          state_dict[
              f"{hf_prefix}encoder.layer.{i}.attention.attention.value.bias"
          ] = v_bias
  
          # gamma_1 and gamma_2
          # we call them lambda because otherwise they are renamed when using .from_pretrained
          gamma_1 = state_dict.pop(f"{prefix}blocks.{i}.gamma_1")
          gamma_2 = state_dict.pop(f"{prefix}blocks.{i}.gamma_2")
  
          state_dict[f"{hf_prefix}encoder.layer.{i}.lambda_1"] = gamma_1
          state_dict[f"{hf_prefix}encoder.layer.{i}.lambda_2"] = gamma_2
  
          # relative_position bias table + index
          if not has_lm_head:
              # each layer has its own relative position bias
              table = state_dict.pop(
                  f"{prefix}blocks.{i}.attn.relative_position_bias_table"
              )
              index = state_dict.pop(
                  f"{prefix}blocks.{i}.attn.relative_position_index"
              )
  
              state_dict[
                  f"{hf_prefix}encoder.layer.{i}.attention.attention.relative_position_bias.relative_position_bias_table"
              ] = table
              state_dict[
                  f"{hf_prefix}encoder.layer.{i}.attention.attention.relative_position_bias.relative_position_index"
              ] = index
  
file_path: transformers/src/transformers/models/data2vec/convert_data2vec_vision_original_pytorch_checkpoint_to_pytorch.py
imports: import argparse
  import json
  import torch
  from huggingface_hub import hf_hub_download
  from PIL import Image
  from timm.models import create_model
  from transformers import BeitImageProcessor, Data2VecVisionConfig, Data2VecVisionForImageClassification, Data2VecVisionModel
label_desc: Use image node_id 2 for calling a global function with example usage: read_in_q_k_v(state_dict, config, has_lm_head, is_semantic, hf_prefix) without return types