



"""simple docstring"""
from ...configuration_utils import PretrainedConfig
from ...utils import logging


_lowerCAmelCase    :List[Any]     =					logging.get_logger(__name__)

_lowerCAmelCase    :List[Any]     =					{
    'bigcode/gpt_bigcode-santacoder': 'https://huggingface.co/bigcode/gpt_bigcode-santacoder/resolve/main/config.json',
}
class 							_UpperCAmelCase							( a      ):





     '''simple docstring'''



     a__									='''gpt_bigcode'''
     a__									=['''past_key_values''']
     a__									={
         '''hidden_size''': '''n_embd''',
         '''max_position_embeddings''': '''n_positions''',
         '''num_attention_heads''': '''n_head''',
         '''num_hidden_layers''': '''n_layer''',
     }





     def __init__(					self       ,	A=5_0_2_5_7       ,	A=1_0_2_4       ,	A=7_6_8       ,	A=1_2       ,	A=1_2       ,	A=None       ,	A="gelu_pytorch_tanh"       ,	A=0.1       ,	A=0.1       ,	A=0.1       ,	A=1E-5       ,	A=0.02       ,	A=True       ,	A=True       ,	A=5_0_2_5_6       ,	A=5_0_2_5_6       ,	A=True       ,	A=True       ,	A=True       ,	**A       ,	)							->					Union[str, Any]:
         _UpperCAmelCase							:  Union[str, Any]											=    vocab_size
         _UpperCAmelCase							:  Dict											=    n_positions
         _UpperCAmelCase							:  Union[str, Any]											=    n_embd
         _UpperCAmelCase							:  Union[str, Any]											=    n_layer
         _UpperCAmelCase							:  Optional[Any]											=    n_head
         _UpperCAmelCase							:  str											=    n_inner
         _UpperCAmelCase							:  Dict											=    activation_function
         _UpperCAmelCase							:  int											=    resid_pdrop
         _UpperCAmelCase							:  Tuple											=    embd_pdrop
         _UpperCAmelCase							:  Dict											=    attn_pdrop
         _UpperCAmelCase							:  Optional[Any]											=    layer_norm_epsilon
         _UpperCAmelCase							:  Optional[Any]											=    initializer_range
         _UpperCAmelCase							:  Tuple											=    scale_attn_weights
         _UpperCAmelCase							:  Optional[int]											=    use_cache
         _UpperCAmelCase							:  List[str]											=    attention_softmax_in_fpaa
         _UpperCAmelCase							:  Dict											=    scale_attention_softmax_in_fpaa
         _UpperCAmelCase							:  Union[str, Any]											=    multi_query

         _UpperCAmelCase							:  Any											=    bos_token_id
         _UpperCAmelCase							:  Any											=    eos_token_id

         super().__init__(bos_token_id=A       ,	eos_token_id=A       ,	**A		)







"""simple docstring"""
import gc
import tempfile
import unittest

import numpy as np
import torch

from diffusers import VersatileDiffusionPipeline
from diffusers.utils.testing_utils import load_image, nightly, require_torch_gpu, torch_device


_lowerCAmelCase    :Optional[Any]     =					False
class 							_UpperCAmelCase							( unittest.TestCase      ):





     '''simple docstring'''



     pass



@nightly
@require_torch_gpu
class 							_UpperCAmelCase							( unittest.TestCase      ):





     '''simple docstring'''



     def  __lowerCAmelCase	(					self		)							->					List[Any]:
         # clean up the VRAM after each test
         super().tearDown()
         gc.collect()
         torch.cuda.empty_cache()





     def  __lowerCAmelCase	(					self		)							->					Dict:
         _UpperCAmelCase							:  Tuple											=    VersatileDiffusionPipeline.from_pretrained('''shi-labs/versatile-diffusion'''       ,	torch_dtype=torch.floataa		)
         pipe.to(A		)
         pipe.set_progress_bar_config(disable=A		)

         _UpperCAmelCase							:  List[str]											=    load_image(
             '''https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/versatile_diffusion/benz.jpg'''		)

         _UpperCAmelCase							:  Optional[Any]											=    torch.manual_seed(0		)
         _UpperCAmelCase							:  List[Any]											=    pipe.dual_guided(
             prompt='''first prompt'''       ,	image=A       ,	text_to_image_strength=0.75       ,	generator=A       ,	guidance_scale=7.5       ,	num_inference_steps=2       ,	output_type='''numpy'''       ,	).images

         with tempfile.TemporaryDirectory() as tmpdirname:
             pipe.save_pretrained(A		)
             _UpperCAmelCase							:  int											=    VersatileDiffusionPipeline.from_pretrained(A       ,	torch_dtype=torch.floataa		)
         pipe.to(A		)
         pipe.set_progress_bar_config(disable=A		)

         _UpperCAmelCase							:  int											=    generator.manual_seed(0		)
         _UpperCAmelCase							:  Union[str, Any]											=    pipe.dual_guided(
             prompt='''first prompt'''       ,	image=A       ,	text_to_image_strength=0.75       ,	generator=A       ,	guidance_scale=7.5       ,	num_inference_steps=2       ,	output_type='''numpy'''       ,	).images

         assert np.abs(image - new_image		).sum() < 1E-5, "Models don't have the same forward pass"





     def  __lowerCAmelCase	(					self		)							->					List[str]:
         _UpperCAmelCase							:  List[Any]											=    VersatileDiffusionPipeline.from_pretrained('''shi-labs/versatile-diffusion'''       ,	torch_dtype=torch.floataa		)
         pipe.to(A		)
         pipe.set_progress_bar_config(disable=A		)

         _UpperCAmelCase							:  int											=    '''cyberpunk 2077'''
         _UpperCAmelCase							:  Optional[int]											=    load_image(
             '''https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/versatile_diffusion/benz.jpg'''		)
         _UpperCAmelCase							:  str											=    torch.manual_seed(0		)
         _UpperCAmelCase							:  Optional[Any]											=    pipe.dual_guided(
             prompt=A       ,	image=A       ,	text_to_image_strength=0.75       ,	generator=A       ,	guidance_scale=7.5       ,	num_inference_steps=5_0       ,	output_type='''numpy'''       ,	).images

         _UpperCAmelCase							:  Union[str, Any]											=    image[0, 2_5_3:2_5_6, 2_5_3:2_5_6, -1]

         assert image.shape == (1, 5_1_2, 5_1_2, 3)
         _UpperCAmelCase							:  List[Any]											=    np.array([0.1_448, 0.1_619, 0.1_741, 0.1_086, 0.1_147, 0.1_128, 0.1_199, 0.1_165, 0.1_001]		)

         assert np.abs(image_slice.flatten() - expected_slice		).max() < 1E-1

         _UpperCAmelCase							:  Dict											=    '''A painting of a squirrel eating a burger '''
         _UpperCAmelCase							:  Tuple											=    torch.manual_seed(0		)
         _UpperCAmelCase							:  Optional[Any]											=    pipe.text_to_image(
             prompt=A       ,	generator=A       ,	guidance_scale=7.5       ,	num_inference_steps=5_0       ,	output_type='''numpy'''		).images

         _UpperCAmelCase							:  Tuple											=    image[0, 2_5_3:2_5_6, 2_5_3:2_5_6, -1]

         assert image.shape == (1, 5_1_2, 5_1_2, 3)
         _UpperCAmelCase							:  int											=    np.array([0.3_367, 0.3_169, 0.2_656, 0.3_870, 0.4_790, 0.3_796, 0.4_009, 0.4_878, 0.4_778]		)

         assert np.abs(image_slice.flatten() - expected_slice		).max() < 1E-1

         _UpperCAmelCase							:  int											=    pipe.image_variation(A       ,	generator=A       ,	output_type='''numpy'''		).images

         _UpperCAmelCase							:  Optional[int]											=    image[0, 2_5_3:2_5_6, 2_5_3:2_5_6, -1]

         assert image.shape == (1, 5_1_2, 5_1_2, 3)
         _UpperCAmelCase							:  List[str]											=    np.array([0.3_076, 0.3_123, 0.3_284, 0.3_782, 0.3_770, 0.3_894, 0.4_297, 0.4_331, 0.4_456]		)

         assert np.abs(image_slice.flatten() - expected_slice		).max() < 1E-1


