


"""simple docstring"""




import argparse
import json
import os

import fairseq
import torch
from torch import nn

from transformers import (
    SpeechaTextaConfig,
    SpeechaTextaForCausalLM,
    SpeechaTextaTokenizer,
    SpeechEncoderDecoderConfig,
    SpeechEncoderDecoderModel,
    WavaVecaConfig,
    WavaVecaFeatureExtractor,
    WavaVecaModel,
    logging,
)


logging.set_verbosity_info()
lowercase_			     =  logging.get_logger(__name__)

lowercase_			     =  {
    "post_extract_proj": "feature_projection.projection",
    "encoder.pos_conv.0": "encoder.pos_conv_embed.conv",
    "self_attn.k_proj": "encoder.layers.*.attention.k_proj",
    "self_attn.v_proj": "encoder.layers.*.attention.v_proj",
    "self_attn.q_proj": "encoder.layers.*.attention.q_proj",
    "self_attn.out_proj": "encoder.layers.*.attention.out_proj",
    "self_attn_layer_norm": "encoder.layers.*.layer_norm",
    "fc1": "encoder.layers.*.feed_forward.intermediate_dense",
    "fc2": "encoder.layers.*.feed_forward.output_dense",
    "final_layer_norm": "encoder.layers.*.final_layer_norm",
    "encoder.layer_norm": "encoder.layer_norm",
    "w2v_model.layer_norm": "feature_projection.layer_norm",
    "quantizer.weight_proj": "quantizer.weight_proj",
    "quantizer.vars": "quantizer.codevectors",
    "project_q": "project_q",
    "final_proj": "project_hid",
    "w2v_encoder.proj": "lm_head",
    "mask_emb": "masked_spec_embed",
}
lowercase_			     =  [
    "lm_head",
    "quantizer.weight_proj",
    "quantizer.codevectors",
    "project_q",
    "project_hid",
]

def        lowercase							(		lowerCAmelCase__ :     Any    ,					lowerCAmelCase__ :     Optional[int]    ,					lowerCAmelCase__ :     List[str]    ,					lowerCAmelCase__ :     Tuple    ,					lowerCAmelCase__ :     int			) ->      Union[str, Any]:
		for attribute in key.split('''.'''			):
				__a           =			getattr(lowerCAmelCase__    ,					lowerCAmelCase__			)

		if weight_type is not None:
				__a           =			getattr(lowerCAmelCase__    ,					lowerCAmelCase__			).shape
		else:
				__a           =			hf_pointer.shape

		assert hf_shape == value.shape, (
		    f'''Shape of hf {key + '.' + weight_type if weight_type is not None else ''} is {hf_shape}, but should be'''
		    f''' {value.shape} for {full_name}'''
		)

		if weight_type == "weight":
				__a           =			value
		elif weight_type == "weight_g":
				__a           =			value
		elif weight_type == "weight_v":
				__a           =			value
		elif weight_type == "bias":
				__a           =			value
		else:
				__a           =			value

		logger.info(f'''{key + '.' + weight_type if weight_type is not None else ''} was initialized from {full_name}.'''			)

def        lowercase							(		lowerCAmelCase__ :     List[str]    ,					lowerCAmelCase__ :     int			) ->      int:
		__a           =			[]
		__a           =			fairseq_model.state_dict()

		__a           =			hf_model.feature_extractor

		# if encoder has different dim to decoder -> use proj_weight
		__a           =			None

		for name, value in fairseq_dict.items():
				__a           =			False
				if "conv_layers" in name:
						load_conv_layer(
						    lowerCAmelCase__    ,					lowerCAmelCase__    ,					lowerCAmelCase__    ,					lowerCAmelCase__    ,					hf_model.config.feat_extract_norm == '''group'''    ,					)
						__a           =			True
				elif name.split('''.'''			)[0] == "proj":
						__a           =			fairseq_model.proj
						__a           =			True
				else:
						for key, mapped_key in MAPPING.items():
								if key in name or key.split('''w2v_model.'''			)[-1] == name.split('''.'''			)[0]:
										__a           =			True
										if "*" in mapped_key:
												__a           =			name.split(lowerCAmelCase__			)[0].split('''.'''			)[-2]
												__a           =			mapped_key.replace('''*'''    ,					lowerCAmelCase__			)
										if "weight_g" in name:
												__a           =			'''weight_g'''
										elif "weight_v" in name:
												__a           =			'''weight_v'''
										elif "bias" in name:
												__a           =			'''bias'''
										elif "weight" in name:
												__a           =			'''weight'''
										else:
												__a           =			None
										set_recursively(lowerCAmelCase__    ,					lowerCAmelCase__    ,					lowerCAmelCase__    ,					lowerCAmelCase__    ,					lowerCAmelCase__			)
								continue
				if not is_used:
						unused_weights.append(lowerCAmelCase__			)

		logger.warning(f'''Unused weights: {unused_weights}'''			)

		return proj_weight

def        lowercase							(		lowerCAmelCase__ :     str    ,					lowerCAmelCase__ :     Optional[Any]    ,					lowerCAmelCase__ :     str    ,					lowerCAmelCase__ :     str    ,					lowerCAmelCase__ :     Any			) ->      str:
		__a           =			full_name.split('''conv_layers.'''			)[-1]
		__a           =			name.split('''.'''			)
		__a           =			int(items[0]			)
		__a           =			int(items[1]			)

		if type_id == 0:
				if "bias" in name:
						assert value.shape == feature_extractor.conv_layers[layer_id].conv.bias.data.shape, (
						    f'''{full_name} has size {value.shape}, but'''
						    f''' {feature_extractor.conv_layers[layer_id].conv.bias.data.shape} was found.'''
						)
						__a           =			value
						logger.info(f'''Feat extract conv layer {layer_id} was initialized from {full_name}.'''			)
				elif "weight" in name:
						assert value.shape == feature_extractor.conv_layers[layer_id].conv.weight.data.shape, (
						    f'''{full_name} has size {value.shape}, but'''
						    f''' {feature_extractor.conv_layers[layer_id].conv.weight.data.shape} was found.'''
						)
						__a           =			value
						logger.info(f'''Feat extract conv layer {layer_id} was initialized from {full_name}.'''			)
		elif (type_id == 2 and not use_group_norm) or (type_id == 2 and layer_id == 0 and use_group_norm):
				if "bias" in name:
						assert value.shape == feature_extractor.conv_layers[layer_id].layer_norm.bias.data.shape, (
						    f'''{full_name} has size {value.shape}, but {feature_extractor[layer_id].layer_norm.bias.data.shape} was'''
						    " found."
						)
						__a           =			value
						logger.info(f'''Feat extract layer norm weight of layer {layer_id} was initialized from {full_name}.'''			)
				elif "weight" in name:
						assert value.shape == feature_extractor.conv_layers[layer_id].layer_norm.weight.data.shape, (
						    f'''{full_name} has size {value.shape}, but'''
						    f''' {feature_extractor[layer_id].layer_norm.weight.data.shape} was found.'''
						)
						__a           =			value
						logger.info(f'''Feat extract layer norm weight of layer {layer_id} was initialized from {full_name}.'''			)
		else:
				unused_weights.append(lowerCAmelCase__			)

def        lowercase							(		lowerCAmelCase__ :     int			) ->      List[str]:
		__a      ,     __a           =			emb.weight.shape
		__a           =			nn.Linear(lowerCAmelCase__    ,					lowerCAmelCase__    ,					bias=lowerCAmelCase__			)
		__a           =			emb.weight.data
		return lin_layer

def        lowercase							(		lowerCAmelCase__ :     Optional[Any]			) ->      Tuple:
		with open(lowerCAmelCase__    ,					'''r'''    ,					encoding='''utf-8'''			) as f:
				__a           =			f.readlines()
				__a           =			[line.split(''' '''			)[0] for line in lines]

		__a           =			len(lowerCAmelCase__			)

		__a           =			{
		    '''<s>''': 0,
		    '''<pad>''': 1,
		    '''</s>''': 2,
		    '''<unk>''': 3,
		}

		vocab_dict.update(dict(zip(lowerCAmelCase__    ,					range(4    ,					num_words + 4			)			)			)			)
		return vocab_dict

@torch.no_grad()
def        lowercase							(		lowerCAmelCase__ :     List[Any]    ,					lowerCAmelCase__ :     int    ,					lowerCAmelCase__ :     Optional[int]    ,					lowerCAmelCase__ :     str    ,					lowerCAmelCase__ :     Optional[int]    ,					lowerCAmelCase__ :     int    ,					lowerCAmelCase__ :     Union[str, Any]    ,					) ->      Union[str, Any]:
		__a           =			WavaVecaConfig.from_pretrained(lowerCAmelCase__			)
		__a           =			SpeechaTextaConfig.from_pretrained(
		    lowerCAmelCase__    ,					vocab_size=lowerCAmelCase__    ,					decoder_layers=lowerCAmelCase__    ,					do_stable_layer_norm=lowerCAmelCase__			)

		__a           =			WavaVecaFeatureExtractor(
		    feature_size=1    ,					sampling_rate=16000    ,					padding_value=0    ,					do_normalize=lowerCAmelCase__    ,					return_attention_mask=lowerCAmelCase__    ,					)

		__a      ,     __a      ,     __a           =			fairseq.checkpoint_utils.load_model_ensemble_and_task(
		    [checkpoint_path]    ,					arg_overrides={'''data''': '''/'''.join(dict_path.split('''/'''			)[:-1]			)}			)
		__a           =			model[0].eval()

		# set weights for wav2vec2 encoder
		__a           =			WavaVecaModel(lowerCAmelCase__			)
		__a           =			recursively_load_weights_wavaveca(model.encoder    ,					lowerCAmelCase__			)

		__a           =			SpeechaTextaForCausalLM(lowerCAmelCase__			)
		__a      ,     __a           =			hf_decoder.model.decoder.load_state_dict(model.decoder.state_dict()    ,					strict=lowerCAmelCase__			)

		# set output linear layer
		unexpected_keys.remove('''embed_out'''			)
		__a           =			nn.Parameter(model.decoder.embed_out.detach()			)

		# layer norm is init to identity matrix so leaving it is fine
		logger.warning(f'''The following keys are missing when loading the decoder weights: {missing_keys}'''			)
		logger.warning(f'''The following keys are unexpected when loading the decoder weights: {unexpected_keys}'''			)

		__a           =			SpeechEncoderDecoderModel(encoder=lowerCAmelCase__    ,					decoder=lowerCAmelCase__			)
		__a           =			False

		# add projection layer
		__a           =			nn.Parameter(projection_layer.weight			)
		__a           =			nn.Parameter(projection_layer.bias			)

		__a           =			create_vocab_dict(lowerCAmelCase__			)

		with open(os.path.join(lowerCAmelCase__    ,					'''vocab.json'''			)    ,					'''w'''			) as fp:
				json.dump(lowerCAmelCase__    ,					lowerCAmelCase__			)

		__a           =			SpeechaTextaTokenizer(os.path.join(lowerCAmelCase__    ,					'''vocab.json'''			)			)
		tokenizer.save_pretrained(lowerCAmelCase__			)

		__a           =			hf_wavavec.config.to_dict()
		__a           =			tokenizer.pad_token_id
		__a           =			tokenizer.bos_token_id
		__a           =			tokenizer.eos_token_id
		__a           =			'''speech_to_text_2'''
		__a           =			'''wav2vec2'''

		__a           =			SpeechEncoderDecoderConfig.from_dict(lowerCAmelCase__			)

		hf_wavavec.save_pretrained(lowerCAmelCase__			)
		feature_extractor.save_pretrained(lowerCAmelCase__			)


if __name__ == "__main__":
				lowercase_			     =  argparse.ArgumentParser()
				parser.add_argument("--pytorch_dump_folder_path", default=None, type=str, help="Path to the output PyTorch model.")
				parser.add_argument("--checkpoint_path", default=None, type=str, help="Path to fairseq checkpoint")
				parser.add_argument("--dict_path", default=None, type=str, help="Path to dict of fine-tuned model")
				parser.add_argument(
				    "--encoder_config_path",
				    default="facebook/wav2vec2-large-lv60",
				    type=str,
				    help="Path to hf encoder wav2vec2 checkpoint config",
				)
				parser.add_argument(
				    "--decoder_config_path",
				    default="facebook/s2t-small-mustc-en-fr-st",
				    type=str,
				    help="Path to hf decoder s2t checkpoint config",
				)
				parser.add_argument("--vocab_size", default=1_0_2_2_4, type=int, help="Vocab size of decoder")
				parser.add_argument("--num_decoder_layers", default=7, type=int, help="Number of decoder layers")

				lowercase_			     =  parser.parse_args()
				convert_wavaveca_checkpoint(
				    args.checkpoint_path,
				    args.pytorch_dump_folder_path,
				    args.dict_path,
				    encoder_config_path=args.encoder_config_path,
				    decoder_config_path=args.decoder_config_path,
				    vocab_size=args.vocab_size,
				    num_decoder_layers=args.num_decoder_layers,
				)










"""simple docstring"""







import argparse
import json
from pathlib import Path

import torch
import torchaudio
from datasets import load_dataset
from huggingface_hub import hf_hub_download

from transformers import ASTConfig, ASTFeatureExtractor, ASTForAudioClassification
from transformers.utils import logging


logging.set_verbosity_info()
__lowercase    					=      logging.get_logger(__name__)


def      lowercase			(				A_       )->      Dict:
  '''simple docstring'''







  a						:		str      							=			ASTConfig()

  if "10-10" in model_name:
    pass
  elif "speech-commands" in model_name:
    a						:		Union[str, Any]      							=			128
  elif "12-12" in model_name:
    a						:		List[Any]      							=			12
    a						:		str      							=			12
  elif "14-14" in model_name:
    a						:		List[Any]      							=			14
    a						:		Optional[int]      							=			14
  elif "16-16" in model_name:
    a						:		Any      							=			16
    a						:		List[Any]      							=			16
  else:
    raise ValueError("Model not supported"       )

  a						:		Optional[int]      							=			"huggingface/label-files"
  if "speech-commands" in model_name:
    a						:		Optional[int]      							=			35
    a						:		List[str]      							=			"speech-commands-v2-id2label.json"
  else:
    a						:		Optional[Any]      							=			527
    a						:		Tuple      							=			"audioset-id2label.json"

  a						:		List[str]      							=			json.load(open(hf_hub_download(A_  ,   A_  ,   repo_type="dataset"       )  ,   "r"       )       )
  a						:		Union[str, Any]      							=			{int(A_       ): v for k, v in idalabel.items()}
  a						:		Any      							=			idalabel
  a						:		str      							=			{v: k for k, v in idalabel.items()}

  return config


def      lowercase			(				A_       )->      Tuple:
  '''simple docstring'''







  if "module.v" in name:
    a						:		Union[str, Any]      							=			name.replace("module.v"  ,   "audio_spectrogram_transformer"       )
  if "cls_token" in name:
    a						:		List[Any]      							=			name.replace("cls_token"  ,   "embeddings.cls_token"       )
  if "dist_token" in name:
    a						:		Union[str, Any]      							=			name.replace("dist_token"  ,   "embeddings.distillation_token"       )
  if "pos_embed" in name:
    a						:		str      							=			name.replace("pos_embed"  ,   "embeddings.position_embeddings"       )
  if "patch_embed.proj" in name:
    a						:		Union[str, Any]      							=			name.replace("patch_embed.proj"  ,   "embeddings.patch_embeddings.projection"       )
  # transformer blocks
  if "blocks" in name:
    a						:		Union[str, Any]      							=			name.replace("blocks"  ,   "encoder.layer"       )
  if "attn.proj" in name:
    a						:		str      							=			name.replace("attn.proj"  ,   "attention.output.dense"       )
  if "attn" in name:
    a						:		Tuple      							=			name.replace("attn"  ,   "attention.self"       )
  if "norm1" in name:
    a						:		int      							=			name.replace("norm1"  ,   "layernorm_before"       )
  if "norm2" in name:
    a						:		Union[str, Any]      							=			name.replace("norm2"  ,   "layernorm_after"       )
  if "mlp.fc1" in name:
    a						:		Union[str, Any]      							=			name.replace("mlp.fc1"  ,   "intermediate.dense"       )
  if "mlp.fc2" in name:
    a						:		Optional[Any]      							=			name.replace("mlp.fc2"  ,   "output.dense"       )
  # final layernorm
  if "audio_spectrogram_transformer.norm" in name:
    a						:		Tuple      							=			name.replace("audio_spectrogram_transformer.norm"  ,   "audio_spectrogram_transformer.layernorm"       )
  # classifier head
  if "module.mlp_head.0" in name:
    a						:		List[str]      							=			name.replace("module.mlp_head.0"  ,   "classifier.layernorm"       )
  if "module.mlp_head.1" in name:
    a						:		Optional[int]      							=			name.replace("module.mlp_head.1"  ,   "classifier.dense"       )

  return name


def      lowercase			(				A_  ,   A_       )->      Any:
  '''simple docstring'''







  for key in orig_state_dict.copy().keys():
    a						:		str      							=			orig_state_dict.pop(A_       )

    if "qkv" in key:
      a						:		int      							=			key.split("."       )
      a						:		Optional[int]      							=			int(key_split[3]       )
      a						:		int      							=			config.hidden_size
      if "weight" in key:
        a						:		List[str]      							=			val[:dim, :]
        a						:		Any      							=			val[dim : dim * 2, :]
        a						:		int      							=			val[-dim:, :]
      else:
        a						:		Optional[Any]      							=			val[:dim]
        a						:		Union[str, Any]      							=			val[dim : dim * 2]
        a						:		str      							=			val[-dim:]
    else:
      a						:		str      							=			val

  return orig_state_dict


def      lowercase			(				A_       )->      Dict:
  '''simple docstring'''







  a						:		Union[str, Any]      							=			[
      "module.v.head.weight",
      "module.v.head.bias",
      "module.v.head_dist.weight",
      "module.v.head_dist.bias",
  ]
  for k in ignore_keys:
    state_dict.pop(A_  ,   A_       )


@torch.no_grad()
def      lowercase			(				A_  ,   A_  ,   A_=False       )->      Optional[int]:
  '''simple docstring'''







  a						:		Optional[int]      							=			get_audio_spectrogram_transformer_config(A_       )

  a						:		Dict      							=			{
      "ast-finetuned-audioset-10-10-0.4593": (
          "https://www.dropbox.com/s/ca0b1v2nlxzyeb4/audioset_10_10_0.4593.pth?dl=1"
      ),
      "ast-finetuned-audioset-10-10-0.450": (
          "https://www.dropbox.com/s/1tv0hovue1bxupk/audioset_10_10_0.4495.pth?dl=1"
      ),
      "ast-finetuned-audioset-10-10-0.448": (
          "https://www.dropbox.com/s/6u5sikl4b9wo4u5/audioset_10_10_0.4483.pth?dl=1"
      ),
      "ast-finetuned-audioset-10-10-0.448-v2": (
          "https://www.dropbox.com/s/kt6i0v9fvfm1mbq/audioset_10_10_0.4475.pth?dl=1"
      ),
      "ast-finetuned-audioset-12-12-0.447": (
          "https://www.dropbox.com/s/snfhx3tizr4nuc8/audioset_12_12_0.4467.pth?dl=1"
      ),
      "ast-finetuned-audioset-14-14-0.443": (
          "https://www.dropbox.com/s/z18s6pemtnxm4k7/audioset_14_14_0.4431.pth?dl=1"
      ),
      "ast-finetuned-audioset-16-16-0.442": (
          "https://www.dropbox.com/s/mdsa4t1xmcimia6/audioset_16_16_0.4422.pth?dl=1"
      ),
      "ast-finetuned-speech-commands-v2": (
          "https://www.dropbox.com/s/q0tbqpwv44pquwy/speechcommands_10_10_0.9812.pth?dl=1"
      ),
  }

  # load original state_dict
  a						:		Any      							=			model_name_to_url[model_name]
  a						:		List[Any]      							=			torch.hub.load_state_dict_from_url(A_  ,   map_location="cpu"       )
  # remove some keys
  remove_keys(A_       )
  # rename some keys
  a						:		Union[str, Any]      							=			convert_state_dict(A_  ,   A_       )

  # load 🤗 model
  a						:		List[str]      							=			ASTForAudioClassification(A_       )
  model.eval()

  model.load_state_dict(A_       )

  # verify outputs on dummy input
  # source: https://github.com/YuanGongND/ast/blob/79e873b8a54d0a3b330dd522584ff2b9926cd581/src/run.py#L62
  a						:		Tuple      							=			-4.2_6_7_7_3_9_3 if "speech-commands" not in model_name else -6.8_4_5_9_7_8
  a						:		Union[str, Any]      							=			4.5_6_8_9_9_7_4 if "speech-commands" not in model_name else 5.5_6_5_4_5_2_6
  a						:		str      							=			1_024 if "speech-commands" not in model_name else 128
  a						:		List[Any]      							=			ASTFeatureExtractor(mean=A_  ,   std=A_  ,   max_length=A_       )

  if "speech-commands" in model_name:
    a						:		List[str]      							=			load_dataset("speech_commands"  ,   "v0.02"  ,   split="validation"       )
    a						:		int      							=			dataset[0]["audio"]["array"]
  else:
    a						:		Tuple      							=			hf_hub_download(
        repo_id="nielsr/audio-spectogram-transformer-checkpoint"  ,   filename="sample_audio.flac"  ,   repo_type="dataset"  ,   )

    a							,		a						:		Tuple      							=			torchaudio.load(A_       )
    a						:		Optional[Any]      							=			waveform.squeeze().numpy()

  a						:		Union[str, Any]      							=			feature_extractor(A_  ,   sampling_rate=16_000  ,   return_tensors="pt"       )

  # forward pass
  a						:		Optional[Any]      							=			model(**A_       )
  a						:		List[str]      							=			outputs.logits

  if model_name == "ast-finetuned-audioset-10-10-0.4593":
    a						:		Any      							=			torch.tensor([-0.8_7_6_0, -7.0_0_4_2, -8.6_6_0_2]       )
  elif model_name == "ast-finetuned-audioset-10-10-0.450":
    a						:		Optional[int]      							=			torch.tensor([-1.1_9_8_6, -7.0_9_0_3, -8.2_7_1_8]       )
  elif model_name == "ast-finetuned-audioset-10-10-0.448":
    a						:		List[str]      							=			torch.tensor([-2.6_1_2_8, -8.0_0_8_0, -9.4_3_4_4]       )
  elif model_name == "ast-finetuned-audioset-10-10-0.448-v2":
    a						:		Tuple      							=			torch.tensor([-1.5_0_8_0, -7.4_5_3_4, -8.8_9_1_7]       )
  elif model_name == "ast-finetuned-audioset-12-12-0.447":
    a						:		int      							=			torch.tensor([-0.5_0_5_0, -6.5_8_3_3, -8.0_8_4_3]       )
  elif model_name == "ast-finetuned-audioset-14-14-0.443":
    a						:		Any      							=			torch.tensor([-0.3_8_2_6, -7.0_3_3_6, -8.2_4_1_3]       )
  elif model_name == "ast-finetuned-audioset-16-16-0.442":
    a						:		Dict      							=			torch.tensor([-1.2_1_1_3, -6.9_1_0_1, -8.3_4_7_0]       )
  elif model_name == "ast-finetuned-speech-commands-v2":
    a						:		Union[str, Any]      							=			torch.tensor([6.1_5_8_9, -8.0_5_6_6, -8.7_9_8_4]       )
  else:
    raise ValueError("Unknown model name"       )
  if not torch.allclose(logits[0, :3]  ,   A_  ,   atol=1e-4       ):
    raise ValueError("Logits don't match"       )
  print("Looks ok!"       )

  if pytorch_dump_folder_path is not None:
    Path(A_       ).mkdir(exist_ok=A_       )
    print(F'''Saving model {model_name} to {pytorch_dump_folder_path}'''       )
    model.save_pretrained(A_       )
    print(F'''Saving feature extractor to {pytorch_dump_folder_path}'''       )
    feature_extractor.save_pretrained(A_       )

  if push_to_hub:
    print("Pushing model and feature extractor to the hub..."       )
    model.push_to_hub(F'''MIT/{model_name}'''       )
    feature_extractor.push_to_hub(F'''MIT/{model_name}'''       )


if __name__ == "__main__":
 __lowercase    					=      argparse.ArgumentParser()
 # Required parameters
 parser.add_argument(
     """--model_name""",
     default="""ast-finetuned-audioset-10-10-0.4593""",
     type=str,
     help="""Name of the Audio Spectrogram Transformer model you'd like to convert.""",
 )
 parser.add_argument(
     """--pytorch_dump_folder_path""", default=None, type=str, help="""Path to the output PyTorch model directory."""
 )
 parser.add_argument(
     """--push_to_hub""", action="""store_true""", help="""Whether or not to push the converted model to the 🤗 hub."""
 )

 __lowercase    					=      parser.parse_args()
 convert_audio_spectrogram_transformer_checkpoint(args.model_name, args.pytorch_dump_folder_path, args.push_to_hub)






