


'''simple docstring'''




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  lowerCAmelCase				(				unittest.TestCase							):
	_lowerCamelCase   :					Tuple			      = MODEL_FOR_VIDEO_CLASSIFICATION_MAPPING



	def 				lowercase     (					self ,					snake_case__ ,					snake_case__ ,					snake_case__    ):
		lowerCAmelCase					:    List[str]      							= hf_hub_download(
		    repo_id='nateraw/video-demo' ,					filename='archery.mp4' ,					repo_type='dataset'    )
		lowerCAmelCase					:    Union[str, Any]      							= VideoClassificationPipeline(model=snake_case__ ,					image_processor=snake_case__ ,					top_k=2    )
		lowerCAmelCase					:    Any      							= [
		    example_video_filepath,
		    'https://huggingface.co/datasets/nateraw/video-demo/resolve/main/archery.mp4',
		]
		return video_classifier, examples



	def 				lowercase     (					self ,					snake_case__ ,					snake_case__    ):
		for example in examples:
			lowerCAmelCase					:    Any      							= video_classifier(snake_case__    )

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



	@require_torch
	def 				lowercase     (					self    ):
		lowerCAmelCase					:    Optional[Any]      							= 'hf-internal-testing/tiny-random-VideoMAEForVideoClassification'
		lowerCAmelCase					:    List[Any]      							= VideoMAEFeatureExtractor(
		    size={'shortest_edge': 10} ,					crop_size={'height': 10, 'width': 10}    )
		lowerCAmelCase					:    Dict      							= pipeline(
		    'video-classification' ,					model=snake_case__ ,					feature_extractor=snake_case__ ,					frame_sampling_rate=4    )

		lowerCAmelCase					:    str      							= hf_hub_download(repo_id='nateraw/video-demo' ,					filename='archery.mp4' ,					repo_type='dataset'    )
		lowerCAmelCase					:    Tuple      							= video_classifier(snake_case__ ,					top_k=2    )
		self.assertEqual(
		    nested_simplify(snake_case__ ,					decimals=4    ) ,					[{'score': 0.5_1_9_9, 'label': 'LABEL_0'}, {'score': 0.4_8_0_1, 'label': 'LABEL_1'}] ,					)

		lowerCAmelCase					:    Any      							= video_classifier(
		    [
		        video_file_path,
		        video_file_path,
		    ] ,					top_k=2 ,					)
		self.assertEqual(
		    nested_simplify(snake_case__ ,					decimals=4    ) ,					[
		        [{'score': 0.5_1_9_9, 'label': 'LABEL_0'}, {'score': 0.4_8_0_1, 'label': 'LABEL_1'}],
		        [{'score': 0.5_1_9_9, 'label': 'LABEL_0'}, {'score': 0.4_8_0_1, 'label': 'LABEL_1'}],
		    ] ,					)



	@require_tf
	def 				lowercase     (					self    ):
		pass




'''simple docstring'''




from ...configuration_utils import PretrainedConfig
from ...utils import logging


_lowerCAmelCase  :		str		     =	logging.get_logger(__name__)

_lowerCAmelCase  :		Tuple		     =	{
    's-JoL/Open-Llama-V1': 'https://huggingface.co/s-JoL/Open-Llama-V1/blob/main/config.json',
}



class  lowerCAmelCase				(				a							):
	_lowerCamelCase   :					Union[str, Any]			      = """open-llama"""



	def __init__(					self ,					snake_case__=10_0000 ,					snake_case__=4096 ,					snake_case__=1_1008 ,					snake_case__=32 ,					snake_case__=32 ,					snake_case__="silu" ,					snake_case__=2048 ,					snake_case__=0.0_2 ,					snake_case__=1e-6 ,					snake_case__=True ,					snake_case__=0 ,					snake_case__=1 ,					snake_case__=2 ,					snake_case__=False ,					snake_case__=True ,					snake_case__=0.1 ,					snake_case__=0.1 ,					snake_case__=True ,					snake_case__=True ,					snake_case__=None ,					**snake_case__ ,					):
		lowerCAmelCase					:    Tuple      							= vocab_size
		lowerCAmelCase					:    Optional[Any]      							= max_position_embeddings
		lowerCAmelCase					:    List[Any]      							= hidden_size
		lowerCAmelCase					:    List[Any]      							= intermediate_size
		lowerCAmelCase					:    Tuple      							= num_hidden_layers
		lowerCAmelCase					:    List[Any]      							= num_attention_heads
		lowerCAmelCase					:    List[Any]      							= hidden_act
		lowerCAmelCase					:    Union[str, Any]      							= initializer_range
		lowerCAmelCase					:    str      							= rms_norm_eps
		lowerCAmelCase					:    Optional[int]      							= use_cache
		lowerCAmelCase					:    Dict      							= kwargs.pop(
		    'use_memorry_efficient_attention' ,					snake_case__    )
		lowerCAmelCase					:    Optional[int]      							= hidden_dropout_prob
		lowerCAmelCase					:    Optional[Any]      							= attention_dropout_prob
		lowerCAmelCase					:    Union[str, Any]      							= use_stable_embedding
		lowerCAmelCase					:    Tuple      							= shared_input_output_embedding
		lowerCAmelCase					:    Tuple      							= rope_scaling
		self._rope_scaling_validation()

		super().__init__(
		    pad_token_id=snake_case__ ,					bos_token_id=snake_case__ ,					eos_token_id=snake_case__ ,					tie_word_embeddings=snake_case__ ,					**snake_case__ ,					)



	def 				lowercase     (					self    ):
		if self.rope_scaling is None:
			return

		if not isinstance(self.rope_scaling ,					snake_case__    ) or len(self.rope_scaling    ) != 2:
			raise ValueError(
			    '`rope_scaling` must be a dictionary with with two fields, `name` and `factor`, '
			    f"got {self.rope_scaling}"    )
		lowerCAmelCase					:    List[Any]      							= self.rope_scaling.get('type' ,					snake_case__    )
		lowerCAmelCase					:    List[str]      							= self.rope_scaling.get('factor' ,					snake_case__    )
		if rope_scaling_type is None or rope_scaling_type not in ["linear", "dynamic"]:
			raise ValueError(
			    f"`rope_scaling`'s name field must be one of ['linear', 'dynamic'], got {rope_scaling_type}"    )
		if rope_scaling_factor is None or not isinstance(snake_case__ ,					snake_case__    ) or rope_scaling_factor <= 1.0:
			raise ValueError(f"`rope_scaling`'s factor field must be an float > 1, got {rope_scaling_factor}"    )
