



import argparse
import logging

import numpy as np
import torch

from transformers import AutoModelForCausalLM, AutoTokenizer


logging.basicConfig(
    format="""%(asctime)s - %(levelname)s - %(name)s - %(message)s""",
    datefmt="""%m/%d/%Y %H:%M:%S""",
    level=logging.INFO,
)
A__       =			logging.getLogger(__name__)


def 						_UpperCAmelCase							( snake_case     ):





					"""simple docstring"""

					np.random.seed(args.seed     )
					torch.manual_seed(args.seed     )
					if args.n_gpu > 0:
										torch.cuda.manual_seed_all(args.seed     )


def 						_UpperCAmelCase							( ):





					"""simple docstring"""

					_lowerCAmelCase         =       argparse.ArgumentParser()
					parser.add_argument(
					    """--model_name_or_path"""      ,		default=snake_case      ,		type=snake_case      ,		required=snake_case      ,		)
					parser.add_argument("""--prompt"""      ,		type=snake_case      ,		default=""""""     )
					parser.add_argument("""--length"""      ,		type=snake_case      ,		default=20     )
					parser.add_argument("""--stop_token"""      ,		type=snake_case      ,		default=snake_case      ,		help="""Token at which text generation is stopped"""     )
					parser.add_argument(
					    """--temperature"""      ,		type=snake_case      ,		default=1.0      ,		help="""temperature of 1.0 has no effect, lower tend toward greedy sampling"""      ,		)
					parser.add_argument(
					    """--repetition_penalty"""      ,		type=snake_case      ,		default=1.0      ,		help="""primarily useful for CTRL model; in that case, use 1.2"""     )
					parser.add_argument("""--k"""      ,		type=snake_case      ,		default=0     )
					parser.add_argument("""--penalty_alpha"""      ,		type=snake_case      ,		default=0.0     )
					parser.add_argument("""--p"""      ,		type=snake_case      ,		default=0.9     )

					parser.add_argument("""--prefix"""      ,		type=snake_case      ,		default=""""""      ,		help="""Text added prior to input."""     )
					parser.add_argument("""--padding_text"""      ,		type=snake_case      ,		default=""""""      ,		help="""Deprecated, the use of `--prefix` is preferred."""     )
					parser.add_argument("""--xlm_language"""      ,		type=snake_case      ,		default=""""""      ,		help="""Optional language when used with the XLM model."""     )

					parser.add_argument("""--seed"""      ,		type=snake_case      ,		default=42      ,		help="""random seed for initialization"""     )
					parser.add_argument("""--no_cuda"""      ,		action="""store_true"""      ,		help="""Avoid using CUDA when available"""     )
					parser.add_argument(
					    """--fp16"""      ,		action="""store_true"""      ,		help="""Whether to use 16-bit (mixed) precision (through NVIDIA apex) instead of 32-bit"""      ,		)
					_lowerCAmelCase         =       parser.parse_args()

					_lowerCAmelCase         =       torch.device("""cuda""" if torch.cuda.is_available() and not args.no_cuda else """cpu"""     )
					_lowerCAmelCase         =       0 if args.no_cuda else torch.cuda.device_count()

					logger.warning(F'device: {args.device}, n_gpu: {args.n_gpu}, 16-bits training: {args.fpaa}'     )

					set_seed(snake_case     )

					# Initialize the model and tokenizer
					_lowerCAmelCase         =       AutoTokenizer.from_pretrained(args.model_name_or_path     )
					_lowerCAmelCase         =       AutoModelForCausalLM.from_pretrained(args.model_name_or_path     )

					# tokenizer = GPT2Tokenizer.from_pretrained(args.model_name_or_path)
					# model = OPTForCausalLM.from_pretrained(args.model_name_or_path)
					model.to(args.device     )

					if args.fpaa:
										model.half()

					logger.info(snake_case     )
					_lowerCAmelCase         =       args.prompt if args.prompt else input("""Model prompt >>> """     )

					_lowerCAmelCase         =       tokenizer(snake_case      ,		return_tensors="""pt"""      ,		add_special_tokens=snake_case     )
					_lowerCAmelCase         =       {key: value.to(args.device     ) for key, value in inputs.items()}

					_lowerCAmelCase         =       model.generate(
					    **snake_case      ,		max_length=args.length + len(inputs["""input_ids"""][0]     )      ,		penalty_alpha=args.penalty_alpha      ,		top_k=args.k      ,		)

					_lowerCAmelCase         =       []
					for generated_sequence_idx, generated_sequence in enumerate(snake_case     ):
										print(F'=== GENERATED SEQUENCE {generated_sequence_idx + 1} ==='     )
										_lowerCAmelCase         =       generated_sequence.tolist()

										# Decode text
										_lowerCAmelCase         =       tokenizer.decode(snake_case      ,		clean_up_tokenization_spaces=snake_case      ,		add_special_tokens=snake_case     )

										# Remove all text after the stop token
										_lowerCAmelCase         =       text[: text.find(args.stop_token     ) if args.stop_token else None]

										# Add the prompt at the beginning of the sequence. Remove the excess text that was used for pre-processing
										_lowerCAmelCase         =       (
										    prompt_text + text[len(tokenizer.decode(inputs["""input_ids"""][0]      ,		clean_up_tokenization_spaces=snake_case     )     ) :]
										)

										generated_sequences.append(snake_case     )
										print(snake_case     )

					return generated_sequences


if __name__ == "__main__":
	main()











import inspect
import unittest

from transformers import DataaVecVisionConfig
from transformers.models.auto import get_values
from transformers.testing_utils import require_torch, require_torch_multi_gpu, require_vision, slow, torch_device
from transformers.utils import cached_property, is_torch_available, is_vision_available

from ...test_configuration_common import ConfigTester
from ...test_modeling_common import ModelTesterMixin, _config_zero_init, floats_tensor, ids_tensor
from ...test_pipeline_mixin import PipelineTesterMixin


if is_torch_available():
		import torch
		from torch import nn

		from transformers import (
		    MODEL_MAPPING,
		    DataaVecVisionForImageClassification,
		    DataaVecVisionForSemanticSegmentation,
		    DataaVecVisionModel,
		)
		from transformers.models.dataavec.modeling_dataavec_vision import DATA2VEC_VISION_PRETRAINED_MODEL_ARCHIVE_LIST


if is_vision_available():
		from PIL import Image

		from transformers import BeitImageProcessor



class  __UpperCAmelCase						:







			def __init__(      self:    str ,      UpperCAmelCase_:    List[Any] ,      UpperCAmelCase_:    Tuple=100 ,      UpperCAmelCase_:    str=13 ,      UpperCAmelCase_:    str=30 ,      UpperCAmelCase_:    Tuple=2 ,      UpperCAmelCase_:    Tuple=3 ,      UpperCAmelCase_:    List[str]=True ,      UpperCAmelCase_:    List[Any]=True ,      UpperCAmelCase_:    Optional[int]=32 ,      UpperCAmelCase_:    Optional[int]=4 ,      UpperCAmelCase_:    Tuple=4 ,      UpperCAmelCase_:    List[Any]=37 ,      UpperCAmelCase_:    Optional[Any]="gelu" ,      UpperCAmelCase_:    Optional[int]=0.1 ,      UpperCAmelCase_:    int=0.1 ,      UpperCAmelCase_:    Dict=10 ,      UpperCAmelCase_:    Dict=0.02 ,      UpperCAmelCase_:    Union[str, Any]=3 ,      UpperCAmelCase_:    List[Any]=None ,      UpperCAmelCase_:    Any=[0, 1, 2, 3] ,      ):







									'''simple docstring'''




									_SCREAMING_SNAKE_CASE       =    parent
									_SCREAMING_SNAKE_CASE       =    100
									_SCREAMING_SNAKE_CASE       =    batch_size
									_SCREAMING_SNAKE_CASE       =    image_size
									_SCREAMING_SNAKE_CASE       =    patch_size
									_SCREAMING_SNAKE_CASE       =    num_channels
									_SCREAMING_SNAKE_CASE       =    is_training
									_SCREAMING_SNAKE_CASE       =    use_labels
									_SCREAMING_SNAKE_CASE       =    hidden_size
									_SCREAMING_SNAKE_CASE       =    num_hidden_layers
									_SCREAMING_SNAKE_CASE       =    num_attention_heads
									_SCREAMING_SNAKE_CASE       =    intermediate_size
									_SCREAMING_SNAKE_CASE       =    hidden_act
									_SCREAMING_SNAKE_CASE       =    hidden_dropout_prob
									_SCREAMING_SNAKE_CASE       =    attention_probs_dropout_prob
									_SCREAMING_SNAKE_CASE       =    type_sequence_label_size
									_SCREAMING_SNAKE_CASE       =    initializer_range
									_SCREAMING_SNAKE_CASE       =    scope
									_SCREAMING_SNAKE_CASE       =    out_indices
									_SCREAMING_SNAKE_CASE       =    num_labels

									# in BeiT, the seq length equals the number of patches + 1 (we add 1 for the [CLS] token)
									_SCREAMING_SNAKE_CASE       =    (image_size // patch_size) ** 2
									_SCREAMING_SNAKE_CASE       =    num_patches + 1







			def 				UpperCamelCase (      self:    Tuple	):







									'''simple docstring'''




									_SCREAMING_SNAKE_CASE       =    floats_tensor([self.batch_size, self.num_channels, self.image_size, self.image_size]	)

									_SCREAMING_SNAKE_CASE       =    None
									_SCREAMING_SNAKE_CASE       =    None
									if self.use_labels:
															_SCREAMING_SNAKE_CASE       =    ids_tensor([self.batch_size] ,      self.type_sequence_label_size	)
															_SCREAMING_SNAKE_CASE       =    ids_tensor([self.batch_size, self.image_size, self.image_size] ,      self.num_labels	)

									_SCREAMING_SNAKE_CASE       =    self.get_config()

									return config, pixel_values, labels, pixel_labels







			def 				UpperCamelCase (      self:    Any	):







									'''simple docstring'''




									return DataaVecVisionConfig(
									    vocab_size=self.vocab_size ,      image_size=self.image_size ,      patch_size=self.patch_size ,      num_channels=self.num_channels ,      hidden_size=self.hidden_size ,      num_hidden_layers=self.num_hidden_layers ,      num_attention_heads=self.num_attention_heads ,      intermediate_size=self.intermediate_size ,      hidden_act=self.hidden_act ,      hidden_dropout_prob=self.hidden_dropout_prob ,      attention_probs_dropout_prob=self.attention_probs_dropout_prob ,      is_decoder=UpperCAmelCase_ ,      initializer_range=self.initializer_range ,      out_indices=self.out_indices ,      )







			def 				UpperCamelCase (      self:    Optional[Any] ,      UpperCAmelCase_:    str ,      UpperCAmelCase_:    Optional[int] ,      UpperCAmelCase_:    Optional[Any] ,      UpperCAmelCase_:    List[Any]	):







									'''simple docstring'''




									_SCREAMING_SNAKE_CASE       =    DataaVecVisionModel(config=UpperCAmelCase_	)
									model.to(UpperCAmelCase_	)
									model.eval()
									_SCREAMING_SNAKE_CASE       =    model(UpperCAmelCase_	)
									# expected sequence length = num_patches + 1 (we add 1 for the [CLS] token)
									_SCREAMING_SNAKE_CASE       =    (self.image_size // self.patch_size) ** 2
									self.parent.assertEqual(result.last_hidden_state.shape ,      (self.batch_size, num_patches + 1, self.hidden_size)	)







			def 				UpperCamelCase (      self:    Union[str, Any] ,      UpperCAmelCase_:    Tuple ,      UpperCAmelCase_:    Optional[int] ,      UpperCAmelCase_:    Optional[int] ,      UpperCAmelCase_:    str	):







									'''simple docstring'''




									_SCREAMING_SNAKE_CASE       =    self.type_sequence_label_size
									_SCREAMING_SNAKE_CASE       =    DataaVecVisionForImageClassification(UpperCAmelCase_	)
									model.to(UpperCAmelCase_	)
									model.eval()
									_SCREAMING_SNAKE_CASE       =    model(UpperCAmelCase_ ,      labels=UpperCAmelCase_	)
									self.parent.assertEqual(result.logits.shape ,      (self.batch_size, self.type_sequence_label_size)	)







			def 				UpperCamelCase (      self:    List[str] ,      UpperCAmelCase_:    str ,      UpperCAmelCase_:    List[Any] ,      UpperCAmelCase_:    Tuple ,      UpperCAmelCase_:    List[str]	):







									'''simple docstring'''




									_SCREAMING_SNAKE_CASE       =    self.num_labels
									_SCREAMING_SNAKE_CASE       =    DataaVecVisionForSemanticSegmentation(UpperCAmelCase_	)
									model.to(UpperCAmelCase_	)
									model.eval()
									_SCREAMING_SNAKE_CASE       =    model(UpperCAmelCase_	)
									self.parent.assertEqual(
									    result.logits.shape ,      (self.batch_size, self.num_labels, self.image_size * 2, self.image_size * 2)	)
									_SCREAMING_SNAKE_CASE       =    model(UpperCAmelCase_ ,      labels=UpperCAmelCase_	)
									self.parent.assertEqual(
									    result.logits.shape ,      (self.batch_size, self.num_labels, self.image_size * 2, self.image_size * 2)	)







			def 				UpperCamelCase (      self:    Optional[Any]	):







									'''simple docstring'''




									_SCREAMING_SNAKE_CASE       =    self.prepare_config_and_inputs()
									_SCREAMING_SNAKE_CASE ,	_SCREAMING_SNAKE_CASE ,	_SCREAMING_SNAKE_CASE ,	_SCREAMING_SNAKE_CASE       =    config_and_inputs
									_SCREAMING_SNAKE_CASE       =    {"""pixel_values""": pixel_values}
									return config, inputs_dict



@require_torch
class  __UpperCAmelCase						(_UpperCAmelCase			,_UpperCAmelCase			,unittest.TestCase       ):
			__snake_case							: Tuple							=				(
			    (DataaVecVisionModel, DataaVecVisionForImageClassification, DataaVecVisionForSemanticSegmentation)
			    if is_torch_available()
			    else ()
			)
			__snake_case							: Optional[Any]							=				(
			    {
			        "feature-extraction": DataaVecVisionModel,
			        "image-classification": DataaVecVisionForImageClassification,
			        "image-segmentation": DataaVecVisionForSemanticSegmentation,
			    }
			    if is_torch_available()
			    else {}
			)

			__snake_case							: Dict							=				False
			__snake_case							: List[str]							=				False
			__snake_case							: Dict							=				False







			def 				UpperCamelCase (      self:    str	):







									'''simple docstring'''




									_SCREAMING_SNAKE_CASE       =    DataaVecVisionModelTester(self	)
									_SCREAMING_SNAKE_CASE       =    ConfigTester(
									    self ,      config_class=UpperCAmelCase_ ,      has_text_modality=UpperCAmelCase_ ,      hidden_size=37	)







			def 				UpperCamelCase (      self:    Optional[Any]	):







									'''simple docstring'''




									self.config_tester.run_common_tests()







			def 				UpperCamelCase (      self:    str	):







									'''simple docstring'''




									pass







			@require_torch_multi_gpu
			@unittest.skip(
			    reason="""Data2VecVision has some layers using `add_module` which doesn't work well with `nn.DataParallel`"""	)
			def 				UpperCamelCase (      self:    List[str]	):







									'''simple docstring'''




									pass







			def 				UpperCamelCase (      self:    Tuple	):







									'''simple docstring'''




									_SCREAMING_SNAKE_CASE ,	_SCREAMING_SNAKE_CASE       =    self.model_tester.prepare_config_and_inputs_for_common()

									for model_class in self.all_model_classes:
															_SCREAMING_SNAKE_CASE       =    model_class(UpperCAmelCase_	)
															self.assertIsInstance(model.get_input_embeddings() ,      (nn.Module)	)
															_SCREAMING_SNAKE_CASE       =    model.get_output_embeddings()
															self.assertTrue(x is None or isinstance(UpperCAmelCase_ ,      nn.Linear	)	)







			def 				UpperCamelCase (      self:    Optional[int]	):







									'''simple docstring'''




									_SCREAMING_SNAKE_CASE ,	_SCREAMING_SNAKE_CASE       =    self.model_tester.prepare_config_and_inputs_for_common()

									for model_class in self.all_model_classes:
															_SCREAMING_SNAKE_CASE       =    model_class(UpperCAmelCase_	)
															_SCREAMING_SNAKE_CASE       =    inspect.signature(model.forward	)
															# signature.parameters is an OrderedDict => so arg_names order is deterministic
															_SCREAMING_SNAKE_CASE       =    [*signature.parameters.keys()]

															_SCREAMING_SNAKE_CASE       =    ["""pixel_values"""]
															self.assertListEqual(arg_names[:1] ,      UpperCAmelCase_	)







			def 				UpperCamelCase (      self:    Tuple	):







									'''simple docstring'''




									_SCREAMING_SNAKE_CASE       =    self.model_tester.prepare_config_and_inputs()
									self.model_tester.create_and_check_model(*UpperCAmelCase_	)







			def 				UpperCamelCase (      self:    Tuple	):







									'''simple docstring'''




									_SCREAMING_SNAKE_CASE       =    self.model_tester.prepare_config_and_inputs()
									self.model_tester.create_and_check_for_image_segmentation(*UpperCAmelCase_	)







			def 				UpperCamelCase (      self:    Optional[int]	):







									'''simple docstring'''




									if not self.model_tester.is_training:
															return

									_SCREAMING_SNAKE_CASE ,	_SCREAMING_SNAKE_CASE       =    self.model_tester.prepare_config_and_inputs_for_common()
									_SCREAMING_SNAKE_CASE       =    True

									for model_class in self.all_model_classes:
															if model_class in [*get_values(UpperCAmelCase_	)]:
																					continue

															_SCREAMING_SNAKE_CASE       =    model_class(UpperCAmelCase_	)
															model.to(UpperCAmelCase_	)
															model.train()
															_SCREAMING_SNAKE_CASE       =    self._prepare_for_class(UpperCAmelCase_ ,      UpperCAmelCase_ ,      return_labels=UpperCAmelCase_	)
															_SCREAMING_SNAKE_CASE       =    model(**UpperCAmelCase_	).loss
															loss.backward()







			def 				UpperCamelCase (      self:    Dict	):







									'''simple docstring'''




									_SCREAMING_SNAKE_CASE ,	_SCREAMING_SNAKE_CASE       =    self.model_tester.prepare_config_and_inputs_for_common()
									if not self.model_tester.is_training:
															return

									_SCREAMING_SNAKE_CASE       =    False
									_SCREAMING_SNAKE_CASE       =    True

									for model_class in self.all_model_classes:
															if model_class in [*get_values(UpperCAmelCase_	)] or not model_class.supports_gradient_checkpointing:
																					continue
															# TODO: remove the following 3 lines once we have a MODEL_FOR_SEMANTIC_SEGMENTATION_MAPPING
															# this can then be incorporated into _prepare_for_class in test_modeling_common.py
															elif model_class.__name__ == "Data2VecVisionForSemanticSegmentation":
																					_SCREAMING_SNAKE_CASE ,	_SCREAMING_SNAKE_CASE ,	_SCREAMING_SNAKE_CASE ,	_SCREAMING_SNAKE_CASE       =    inputs_dict["""pixel_values"""].shape
																					_SCREAMING_SNAKE_CASE       =    torch.zeros(
																					    [self.model_tester.batch_size, height, width] ,      device=UpperCAmelCase_	).long()
															_SCREAMING_SNAKE_CASE       =    model_class(UpperCAmelCase_	)
															model.gradient_checkpointing_enable()
															model.to(UpperCAmelCase_	)
															model.train()
															_SCREAMING_SNAKE_CASE       =    self._prepare_for_class(UpperCAmelCase_ ,      UpperCAmelCase_ ,      return_labels=UpperCAmelCase_	)
															_SCREAMING_SNAKE_CASE       =    model(**UpperCAmelCase_	).loss
															loss.backward()







			def 				UpperCamelCase (      self:    str	):







									'''simple docstring'''




									_SCREAMING_SNAKE_CASE ,	_SCREAMING_SNAKE_CASE       =    self.model_tester.prepare_config_and_inputs_for_common()

									_SCREAMING_SNAKE_CASE       =    _config_zero_init(UpperCAmelCase_	)
									for model_class in self.all_model_classes:
															_SCREAMING_SNAKE_CASE       =    model_class(config=UpperCAmelCase_	)
															for name, param in model.named_parameters():
																					# we skip lambda parameters as these require special initial values
																					# determined by config.layer_scale_init_value
																					if "lambda" in name:
																											continue
																					if param.requires_grad:
																											self.assertIn(
																											    ((param.data.mean() * 1E9).round() / 1E9).item() ,      [0.0, 1.0] ,      msg=F'Parameter {name} of model {model_class} seems not properly initialized' ,      )







			def 				UpperCamelCase (      self:    int ,      UpperCAmelCase_:    Optional[Any] ,      UpperCAmelCase_:    int ,      UpperCAmelCase_:    Any ,      UpperCAmelCase_:    Union[str, Any]=2E-4 ,      UpperCAmelCase_:    Tuple="outputs" ,      UpperCAmelCase_:    Union[str, Any]=None	):







									'''simple docstring'''




									super().check_pt_tf_outputs(UpperCAmelCase_ ,      UpperCAmelCase_ ,      UpperCAmelCase_ ,      UpperCAmelCase_ ,      UpperCAmelCase_ ,      UpperCAmelCase_	)







			def 				UpperCamelCase (      self:    Tuple	):







									'''simple docstring'''




									_SCREAMING_SNAKE_CASE       =    self.model_tester.prepare_config_and_inputs()
									self.model_tester.create_and_check_for_image_classification(*UpperCAmelCase_	)







			@slow
			def 				UpperCamelCase (      self:    int	):







									'''simple docstring'''




									for model_name in DATA2VEC_VISION_PRETRAINED_MODEL_ARCHIVE_LIST[:1]:
															_SCREAMING_SNAKE_CASE       =    DataaVecVisionModel.from_pretrained(UpperCAmelCase_	)
															self.assertIsNotNone(UpperCAmelCase_	)

def 			__lowerCamelCase     (						)				->    int:






						"""simple docstring"""





						_SCREAMING_SNAKE_CASE       =    Image.open("""./tests/fixtures/tests_samples/COCO/000000039769.png"""						)
						return image




@require_torch
@require_vision
class  __UpperCAmelCase						(unittest.TestCase       ):







			@cached_property
			def 				UpperCamelCase (      self:    Tuple	):







									'''simple docstring'''




									return (
									    BeitImageProcessor.from_pretrained("""facebook/data2vec-vision-base-ft1k"""	) if is_vision_available() else None
									)







			@slow
			def 				UpperCamelCase (      self:    Tuple	):







									'''simple docstring'''




									_SCREAMING_SNAKE_CASE       =    DataaVecVisionForImageClassification.from_pretrained("""facebook/data2vec-vision-base-ft1k"""	).to(
									    UpperCAmelCase_	)

									_SCREAMING_SNAKE_CASE       =    self.default_image_processor
									_SCREAMING_SNAKE_CASE       =    prepare_img()
									_SCREAMING_SNAKE_CASE       =    image_processor(images=UpperCAmelCase_ ,      return_tensors="""pt"""	).to(UpperCAmelCase_	)

									# forward pass
									with torch.no_grad():
															_SCREAMING_SNAKE_CASE       =    model(**UpperCAmelCase_	)
									_SCREAMING_SNAKE_CASE       =    outputs.logits

									# verify the logits
									_SCREAMING_SNAKE_CASE       =    torch.Size((1, 1_000)	)
									self.assertEqual(logits.shape ,      UpperCAmelCase_	)

									_SCREAMING_SNAKE_CASE       =    torch.tensor([0.32_77, -0.13_95, 0.09_11]	).to(UpperCAmelCase_	)

									self.assertTrue(torch.allclose(logits[0, :3] ,      UpperCAmelCase_ ,      atol=1E-4	)	)

									_SCREAMING_SNAKE_CASE       =    [model.config.labelaid[i] for i in ["""remote control, remote""", """tabby, tabby cat"""]]
									self.assertEqual(logits[0].topk(2	).indices.cpu().tolist() ,      UpperCAmelCase_	)

