





'''simple docstring'''






import argparse

import torch
from torch import nn

from transformers import SpeechaTextConfig, SpeechaTextForConditionalGeneration
def    UpperCamelCase__      (		lowerCAmelCase  ):





      """simple docstring"""


      _lowerCAmelCase							     =							[
          """encoder.version""",
          """decoder.version""",
          """model.encoder.version""",
          """model.decoder.version""",
          """decoder.output_projection.weight""",
          """_float_tensor""",
          """encoder.embed_positions._float_tensor""",
          """decoder.embed_positions._float_tensor""",
      ]
      for k in ignore_keys:
            state_dict.pop(lowerCAmelCase							,	lowerCAmelCase  )
def    UpperCamelCase__      (		lowerCAmelCase  ):





      """simple docstring"""


      _lowerCAmelCase							     =							list(s_dict.keys()  )
      for key in keys:
            if "transformer_layers" in key:
                  _lowerCAmelCase							     =							s_dict.pop(lowerCAmelCase  )
            elif "subsample" in key:
                  _lowerCAmelCase							     =							s_dict.pop(lowerCAmelCase  )
def    UpperCamelCase__      (		lowerCAmelCase  ):





      """simple docstring"""


      _lowerCAmelCase     ,							_lowerCAmelCase							     =							emb.weight.shape
      _lowerCAmelCase							     =							nn.Linear(lowerCAmelCase							,	lowerCAmelCase							,	bias=lowerCAmelCase  )
      _lowerCAmelCase							     =							emb.weight.data
      return lin_layer
def    UpperCamelCase__      (		lowerCAmelCase							,	lowerCAmelCase  ):





      """simple docstring"""


      _lowerCAmelCase							     =							torch.load(lowerCAmelCase							,	map_location="""cpu"""  )
      _lowerCAmelCase							     =							mam_aaa["""args"""]
      _lowerCAmelCase							     =							mam_aaa["""model"""]
      _lowerCAmelCase							     =							state_dict["""decoder.output_projection.weight"""]

      remove_ignore_keys_(lowerCAmelCase  )
      rename_keys(lowerCAmelCase  )

      _lowerCAmelCase							     =							state_dict["""decoder.embed_tokens.weight"""].shape[0]

      _lowerCAmelCase							     =							args.share_decoder_input_output_embed

      _lowerCAmelCase							     =							[int(lowerCAmelCase  ) for i in args.conv_kernel_sizes.split(""","""  )]
      _lowerCAmelCase							     =							SpeechaTextConfig(
          vocab_size=lowerCAmelCase							,	max_source_positions=args.max_source_positions							,	max_target_positions=args.max_target_positions							,	encoder_layers=args.encoder_layers							,	decoder_layers=args.decoder_layers							,	encoder_attention_heads=args.encoder_attention_heads							,	decoder_attention_heads=args.decoder_attention_heads							,	encoder_ffn_dim=args.encoder_ffn_embed_dim							,	decoder_ffn_dim=args.decoder_ffn_embed_dim							,	d_model=args.encoder_embed_dim							,	dropout=args.dropout							,	attention_dropout=args.attention_dropout							,	activation_dropout=args.activation_dropout							,	activation_function="""relu"""							,	num_conv_layers=len(lowerCAmelCase  )							,	conv_channels=args.conv_channels							,	conv_kernel_sizes=lowerCAmelCase							,	input_feat_per_channel=args.input_feat_per_channel							,	input_channels=args.input_channels							,	tie_word_embeddings=lowerCAmelCase							,	num_beams=5							,	max_length=2_00							,	use_cache=lowerCAmelCase							,	decoder_start_token_id=2							,	early_stopping=lowerCAmelCase							,	)

      _lowerCAmelCase							     =							SpeechaTextForConditionalGeneration(lowerCAmelCase  )
      _lowerCAmelCase     ,							_lowerCAmelCase							     =							model.model.load_state_dict(lowerCAmelCase							,	strict=lowerCAmelCase  )
      if len(lowerCAmelCase  ) > 0 and not set(lowerCAmelCase  ) <= {
          "encoder.embed_positions.weights",
          "decoder.embed_positions.weights",
      }:
            raise ValueError(
                """Only `encoder.embed_positions.weights` and `decoder.embed_positions.weights`  are allowed to be missing,"""
                f" but all the following weights are missing {missing}"  )

      if tie_embeds:
            _lowerCAmelCase							     =							make_linear_from_emb(model.model.decoder.embed_tokens  )
      else:
            _lowerCAmelCase							     =							lm_head_weights

      model.save_pretrained(lowerCAmelCase  )


if __name__ == "__main__":
      A__				:   List[Any]      =argparse.ArgumentParser()
      # Required parameters
      parser.add_argument('''--fairseq_path''', type=str, help='''Path to the fairseq model (.pt) file.''')
      parser.add_argument('''--pytorch_dump_folder_path''', default=None, type=str, help='''Path to the output PyTorch model.''')
      A__				:   Dict      =parser.parse_args()
      convert_fairseq_sat_checkpoint_to_tfms(args.fairseq_path, args.pytorch_dump_folder_path)













import unittest

from huggingface_hub import hf_hub_download

from transformers import MODEL_FOR_VIDEO_CLASSIFICATION_MAPPING, VideoMAEFeatureExtractor
from transformers.pipelines import VideoClassificationPipeline, pipeline
from transformers.testing_utils import (
    is_pipeline_test,
    nested_simplify,
    require_decord,
    require_tf,
    require_torch,
    require_torch_or_tf,
    require_vision,
)

from .test_pipelines_common import ANY




@is_pipeline_test
@require_torch_or_tf
@require_vision
@require_decord
class     SCREAMING_SNAKE_CASE__ (						unittest.TestCase      ):
 __SCREAMING_SNAKE_CASE							       =	MODEL_FOR_VIDEO_CLASSIFICATION_MAPPING



 def 				UpperCamelCase			(							self,__lowerCamelCase,__lowerCamelCase,__lowerCamelCase ):
        A__											=						hf_hub_download(
            repo_id='''nateraw/video-demo''',filename='''archery.mp4''',repo_type='''dataset''' )
        A__											=						VideoClassificationPipeline(model=__lowerCamelCase,image_processor=__lowerCamelCase,top_k=2 )
        A__											=						[
            example_video_filepath,
            '''https://huggingface.co/datasets/nateraw/video-demo/resolve/main/archery.mp4''',
        ]
        return video_classifier, examples



 def 				UpperCamelCase			(							self,__lowerCamelCase,__lowerCamelCase ):
        for example in examples:
               A__											=						video_classifier(__lowerCamelCase )

               self.assertEqual(
                   __lowerCamelCase,[
                       {'''score''': ANY(__lowerCamelCase ), '''label''': ANY(__lowerCamelCase )},
                       {'''score''': ANY(__lowerCamelCase ), '''label''': ANY(__lowerCamelCase )},
                   ],)



 @require_torch
 def 				UpperCamelCase			(							self ):
        A__											=						'''hf-internal-testing/tiny-random-VideoMAEForVideoClassification'''
        A__											=						VideoMAEFeatureExtractor(
            size={'''shortest_edge''': 10},crop_size={'''height''': 10, '''width''': 10} )
        A__											=						pipeline(
            '''video-classification''',model=__lowerCamelCase,feature_extractor=__lowerCamelCase,frame_sampling_rate=4 )

        A__											=						hf_hub_download(repo_id='''nateraw/video-demo''',filename='''archery.mp4''',repo_type='''dataset''' )
        A__											=						video_classifier(__lowerCamelCase,top_k=2 )
        self.assertEqual(
            nested_simplify(__lowerCamelCase,decimals=4 ),[{'''score''': 0.5199, '''label''': '''LABEL_0'''}, {'''score''': 0.4801, '''label''': '''LABEL_1'''}],)

        A__											=						video_classifier(
            [
                video_file_path,
                video_file_path,
            ],top_k=2,)
        self.assertEqual(
            nested_simplify(__lowerCamelCase,decimals=4 ),[
                [{'''score''': 0.5199, '''label''': '''LABEL_0'''}, {'''score''': 0.4801, '''label''': '''LABEL_1'''}],
                [{'''score''': 0.5199, '''label''': '''LABEL_0'''}, {'''score''': 0.4801, '''label''': '''LABEL_1'''}],
            ],)




 @require_tf
 def 				UpperCamelCase			(							self ):
        pass





