


import unittest

from transformers import PegasusTokenizer, PegasusTokenizerFast
from transformers.testing_utils import get_tests_dir, require_sentencepiece, require_tokenizers, require_torch, slow
from transformers.utils import cached_property

from ...test_tokenization_common import TokenizerTesterMixin


A			:						Optional[Any]        =  get_tests_dir('fixtures/test_sentencepiece_no_bos.model')



@require_sentencepiece
@require_tokenizers
class 				A       (			UpperCAmelCase__					,    unittest.TestCase				):
					'''simple docstring'''






					A__     =					PegasusTokenizer
					A__     =					PegasusTokenizerFast
					A__     =					True
					A__     =					True

					def     lowerCamelCase__	(self       :		List[Any]						)		->  Tuple:




							"""simple docstring"""


							super().setUp()

							# We have a SentencePiece fixture for testing
							lowercase__	     =						PegasusTokenizer(_UpperCAmelCase						)
							tokenizer.save_pretrained(self.tmpdirname						)

					@cached_property
					def     lowerCamelCase__	(self       :		Tuple						)		->  Any:




							"""simple docstring"""


							return PegasusTokenizer.from_pretrained("""google/pegasus-large"""						)

					def     lowerCamelCase__	(self       :		Tuple ,   **_UpperCAmelCase       :		int						)		->  PegasusTokenizer:




							"""simple docstring"""


							return PegasusTokenizer.from_pretrained(self.tmpdirname ,   **_UpperCAmelCase						)

					def     lowerCamelCase__	(self       :		Optional[int] ,   _UpperCAmelCase       :		Any						)		->  List[str]:




							"""simple docstring"""


							return ("This is a test", "This is a test")

					def     lowerCamelCase__	(self       :		Dict						)		->  Optional[int]:




							"""simple docstring"""


							lowercase__	     =						"""</s>"""
							lowercase__	     =						1

							self.assertEqual(self.get_tokenizer()._convert_token_to_id(_UpperCAmelCase						) ,   _UpperCAmelCase						)
							self.assertEqual(self.get_tokenizer()._convert_id_to_token(_UpperCAmelCase						) ,   _UpperCAmelCase						)

					def     lowerCamelCase__	(self       :		Optional[int]						)		->  str:




							"""simple docstring"""


							lowercase__	     =						list(self.get_tokenizer().get_vocab().keys()						)

							self.assertEqual(vocab_keys[0] ,   """<pad>"""						)
							self.assertEqual(vocab_keys[1] ,   """</s>"""						)
							self.assertEqual(vocab_keys[-1] ,   """v"""						)
							self.assertEqual(len(_UpperCAmelCase						) ,   1103						)

					def     lowerCamelCase__	(self       :		str						)		->  Dict:




							"""simple docstring"""


							self.assertEqual(self.get_tokenizer().vocab_size ,   1103						)

					def     lowerCamelCase__	(self       :		Any						)		->  Optional[int]:




							"""simple docstring"""


							lowercase__	     =						self.rust_tokenizer_class.from_pretrained(self.tmpdirname						)
							lowercase__	     =						self.tokenizer_class.from_pretrained(self.tmpdirname						)
							lowercase__	     =						(
							    """Let's see which <unk> is the better <unk_token_11> one <mask_1> It seems like this <mask_2> was important"""
							    """ </s> <pad> <pad> <pad>"""
							)
							lowercase__	     =						rust_tokenizer([raw_input_str] ,   return_tensors=_UpperCAmelCase ,   add_special_tokens=_UpperCAmelCase						).input_ids[0]
							lowercase__	     =						py_tokenizer([raw_input_str] ,   return_tensors=_UpperCAmelCase ,   add_special_tokens=_UpperCAmelCase						).input_ids[0]
							self.assertListEqual(_UpperCAmelCase ,   _UpperCAmelCase						)

					def     lowerCamelCase__	(self       :		int						)		->  Optional[int]:




							"""simple docstring"""


							lowercase__	     =						self._large_tokenizer
							# <mask_1> masks whole sentence while <mask_2> masks single word
							lowercase__	     =						"""<mask_1> To ensure a <mask_2> flow of bank resolutions."""
							lowercase__	     =						[2, 413, 615, 114, 3, 1971, 113, 1679, 1_0710, 107, 1]
							lowercase__	     =						tokenizer([raw_input_str] ,   return_tensors=_UpperCAmelCase						).input_ids[0]
							self.assertListEqual(_UpperCAmelCase ,   _UpperCAmelCase						)

					def     lowerCamelCase__	(self       :		Optional[Any]						)		->  int:




							"""simple docstring"""


							lowercase__	     =						self._large_tokenizer
							# The tracebacks for the following asserts are **better** without messages or self.assertEqual
							assert tokenizer.vocab_size == 9_6103
							assert tokenizer.pad_token_id == 0
							assert tokenizer.eos_token_id == 1
							assert tokenizer.offset == 103
							assert tokenizer.unk_token_id == tokenizer.offset + 2 == 105
							assert tokenizer.unk_token == "<unk>"
							assert tokenizer.model_max_length == 1024
							lowercase__	     =						"""To ensure a smooth flow of bank resolutions."""
							lowercase__	     =						[413, 615, 114, 2291, 1971, 113, 1679, 1_0710, 107, 1]
							lowercase__	     =						tokenizer([raw_input_str] ,   return_tensors=_UpperCAmelCase						).input_ids[0]
							self.assertListEqual(_UpperCAmelCase ,   _UpperCAmelCase						)
							assert tokenizer.convert_ids_to_tokens([0, 1, 2, 3]						) == ["<pad>", "</s>", "<mask_1>", "<mask_2>"]

					@require_torch
					def     lowerCamelCase__	(self       :		Union[str, Any]						)		->  Union[str, Any]:




							"""simple docstring"""


							lowercase__	     =						["""This is going to be way too long.""" * 150, """short example"""]
							lowercase__	     =						["""not super long but more than 5 tokens""", """tiny"""]
							lowercase__	     =						self._large_tokenizer(_UpperCAmelCase ,   padding=_UpperCAmelCase ,   truncation=_UpperCAmelCase ,   return_tensors="""pt"""						)
							lowercase__	     =						self._large_tokenizer(
							    text_target=_UpperCAmelCase ,   max_length=5 ,   padding=_UpperCAmelCase ,   truncation=_UpperCAmelCase ,   return_tensors="""pt"""						)

							assert batch.input_ids.shape == (2, 1024)
							assert batch.attention_mask.shape == (2, 1024)
							assert targets["input_ids"].shape == (2, 5)
							assert len(_UpperCAmelCase						) == 2  # input_ids, attention_mask.


					@slow
					def     lowerCamelCase__	(self       :		List[Any]						)		->  List[Any]:




							"""simple docstring"""


							lowercase__	     =						{"""input_ids""": [[3_8979, 143, 1_8485, 606, 130, 2_6669, 8_7686, 121, 5_4189, 1129, 111, 2_6669, 8_7686, 121, 9114, 1_4787, 121, 1_3249, 158, 592, 956, 121, 1_4621, 3_1576, 143, 6_2613, 108, 9688, 930, 4_3430, 1_1562, 6_2613, 304, 108, 1_1443, 897, 108, 9314, 1_7415, 6_3399, 108, 1_1443, 7614, 1_8316, 118, 4284, 7148, 1_2430, 143, 1400, 2_5703, 158, 111, 4284, 7148, 1_1772, 143, 2_1297, 1064, 158, 122, 204, 3506, 1754, 1133, 1_4787, 1581, 115, 3_3224, 4482, 111, 1355, 110, 2_9173, 317, 5_0833, 108, 2_0147, 9_4665, 111, 7_7198, 107, 1], [110, 6_2613, 117, 638, 112, 1133, 121, 2_0098, 1355, 7_9050, 1_3872, 135, 1596, 5_3541, 1352, 141, 1_3039, 5542, 124, 302, 518, 111, 268, 2956, 115, 149, 4427, 107, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [139, 1235, 2799, 1_8289, 1_7780, 204, 109, 9474, 1296, 107, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], """attention_mask""": [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]}  # noqa: E501
							# fmt: on

							self.tokenizer_integration_test_util(
							    expected_encoding=_UpperCAmelCase ,   model_name="""google/bigbird-pegasus-large-arxiv""" ,   revision="""ba85d0851d708441f91440d509690f1ab6353415""" ,   )






@require_sentencepiece
@require_tokenizers
class 				A       (			UpperCAmelCase__					,    unittest.TestCase				):
					'''simple docstring'''






					A__     =					PegasusTokenizer
					A__     =					PegasusTokenizerFast
					A__     =					True
					A__     =					True

					def     lowerCamelCase__	(self       :		Any						)		->  int:




							"""simple docstring"""


							super().setUp()

							# We have a SentencePiece fixture for testing
							lowercase__	     =						PegasusTokenizer(_UpperCAmelCase ,   offset=0 ,   mask_token_sent=_UpperCAmelCase ,   mask_token="""[MASK]"""						)
							tokenizer.save_pretrained(self.tmpdirname						)

					@cached_property
					def     lowerCamelCase__	(self       :		Any						)		->  str:




							"""simple docstring"""


							return PegasusTokenizer.from_pretrained("""google/bigbird-pegasus-large-arxiv"""						)

					def     lowerCamelCase__	(self       :		str ,   **_UpperCAmelCase       :		Union[str, Any]						)		->  PegasusTokenizer:




							"""simple docstring"""


							return PegasusTokenizer.from_pretrained(self.tmpdirname ,   **_UpperCAmelCase						)

					def     lowerCamelCase__	(self       :		Tuple ,   _UpperCAmelCase       :		Any						)		->  Union[str, Any]:




							"""simple docstring"""


							return ("This is a test", "This is a test")

					def     lowerCamelCase__	(self       :		Any						)		->  int:




							"""simple docstring"""


							lowercase__	     =						self.rust_tokenizer_class.from_pretrained(self.tmpdirname						)
							lowercase__	     =						self.tokenizer_class.from_pretrained(self.tmpdirname						)
							lowercase__	     =						(
							    """Let's see which <unk> is the better <unk_token> one [MASK] It seems like this [MASK] was important </s>"""
							    """ <pad> <pad> <pad>"""
							)
							lowercase__	     =						rust_tokenizer([raw_input_str] ,   return_tensors=_UpperCAmelCase ,   add_special_tokens=_UpperCAmelCase						).input_ids[0]
							lowercase__	     =						py_tokenizer([raw_input_str] ,   return_tensors=_UpperCAmelCase ,   add_special_tokens=_UpperCAmelCase						).input_ids[0]
							self.assertListEqual(_UpperCAmelCase ,   _UpperCAmelCase						)

					@require_torch
					def     lowerCamelCase__	(self       :		List[str]						)		->  Optional[int]:




							"""simple docstring"""


							lowercase__	     =						["""This is going to be way too long.""" * 1000, """short example"""]
							lowercase__	     =						["""not super long but more than 5 tokens""", """tiny"""]
							lowercase__	     =						self._large_tokenizer(_UpperCAmelCase ,   padding=_UpperCAmelCase ,   truncation=_UpperCAmelCase ,   return_tensors="""pt"""						)
							lowercase__	     =						self._large_tokenizer(
							    text_target=_UpperCAmelCase ,   max_length=5 ,   padding=_UpperCAmelCase ,   truncation=_UpperCAmelCase ,   return_tensors="""pt"""						)

							assert batch.input_ids.shape == (2, 4096)
							assert batch.attention_mask.shape == (2, 4096)
							assert targets["input_ids"].shape == (2, 5)
							assert len(_UpperCAmelCase						) == 2  # input_ids, attention_mask.


					def     lowerCamelCase__	(self       :		Optional[int]						)		->  Any:




							"""simple docstring"""


							lowercase__	     =						(
							    """This is an example string that is used to test the original TF implementation against the HF"""
							    """ implementation"""
							)

							lowercase__	     =						self._large_tokenizer(_UpperCAmelCase						).input_ids

							self.assertListEqual(
							    _UpperCAmelCase ,   [182, 117, 142, 587, 4211, 120, 117, 263, 112, 804, 109, 856, 2_5016, 3137, 464, 109, 2_6955, 3137, 1] ,   )






import gc
import random
import unittest

import numpy as np
import torch
from PIL import Image
from transformers import CLIPTextConfig, CLIPTextModel, CLIPTokenizer

from diffusers import AutoencoderKL, DDIMScheduler, DDPMScheduler, StableDiffusionUpscalePipeline, UNetaDConditionModel
from diffusers.utils import floats_tensor, load_image, load_numpy, slow, torch_device
from diffusers.utils.testing_utils import enable_full_determinism, require_torch_gpu


enable_full_determinism()





class  lowerCamelCase__	(    unittest.TestCase):
     """simple docstring"""



     def     _a   (self     ):






           '''simple docstring'''



           super().tearDown()
           gc.collect()
           torch.cuda.empty_cache()







     @property
     def     _a   (self     ):






           '''simple docstring'''



           lowerCamelCase             =		1
           lowerCamelCase             =		3
           lowerCamelCase             =		(32, 32)

           lowerCamelCase             =		floats_tensor((batch_size, num_channels) + sizes					,      rng=random.Random(0     )     ).to(__a     )
           return image







     @property
     def     _a   (self     ):






           '''simple docstring'''



           torch.manual_seed(0     )
           lowerCamelCase             =		UNetaDConditionModel(
               block_out_channels=(32, 32, 64)					,      layers_per_block=2					,      sample_size=32					,      in_channels=7					,      out_channels=4					,      down_block_types=("DownBlock2D", "CrossAttnDownBlock2D", "CrossAttnDownBlock2D")					,      up_block_types=("CrossAttnUpBlock2D", "CrossAttnUpBlock2D", "UpBlock2D")					,      cross_attention_dim=32					,      attention_head_dim=8					,      use_linear_projection=__a					,      only_cross_attention=(True, True, False)					,      num_class_embeds=1_00					,      )
           return model







     @property
     def     _a   (self     ):






           '''simple docstring'''



           torch.manual_seed(0     )
           lowerCamelCase             =		AutoencoderKL(
               block_out_channels=[32, 32, 64]					,      in_channels=3					,      out_channels=3					,      down_block_types=["DownEncoderBlock2D", "DownEncoderBlock2D", "DownEncoderBlock2D"]					,      up_block_types=["UpDecoderBlock2D", "UpDecoderBlock2D", "UpDecoderBlock2D"]					,      latent_channels=4					,      )
           return model







     @property
     def     _a   (self     ):






           '''simple docstring'''



           torch.manual_seed(0     )
           lowerCamelCase             =		CLIPTextConfig(
               bos_token_id=0					,      eos_token_id=2					,      hidden_size=32					,      intermediate_size=37					,      layer_norm_eps=1E-05					,      num_attention_heads=4					,      num_hidden_layers=5					,      pad_token_id=1					,      vocab_size=10_00					,      hidden_act="gelu"					,      projection_dim=5_12					,      )
           return CLIPTextModel(__a     )







     def     _a   (self     ):






           '''simple docstring'''



           lowerCamelCase             =		"cpu"  # ensure determinism for the device-dependent torch.Generator
           lowerCamelCase             =		self.dummy_cond_unet_upscale
           lowerCamelCase             =		DDPMScheduler()
           lowerCamelCase             =		DDIMScheduler(prediction_type="v_prediction"     )
           lowerCamelCase             =		self.dummy_vae
           lowerCamelCase             =		self.dummy_text_encoder
           lowerCamelCase             =		CLIPTokenizer.from_pretrained("hf-internal-testing/tiny-random-clip"     )

           lowerCamelCase             =		self.dummy_image.cpu().permute(0					,      2					,      3					,      1     )[0]
           lowerCamelCase             =		Image.fromarray(np.uinta(__a     )     ).convert("RGB"     ).resize((64, 64)     )

           # make sure here that pndm scheduler skips prk
           lowerCamelCase             =		StableDiffusionUpscalePipeline(
               unet=__a					,      low_res_scheduler=__a					,      scheduler=__a					,      vae=__a					,      text_encoder=__a					,      tokenizer=__a					,      max_noise_level=3_50					,      )
           lowerCamelCase             =		sd_pipe.to(__a     )
           sd_pipe.set_progress_bar_config(disable=__a     )

           lowerCamelCase             =		"A painting of a squirrel eating a burger"
           lowerCamelCase             =		torch.Generator(device=__a     ).manual_seed(0     )
           lowerCamelCase             =		sd_pipe(
               [prompt]					,      image=__a					,      generator=__a					,      guidance_scale=6.0					,      noise_level=20					,      num_inference_steps=2					,      output_type="np"					,      )

           lowerCamelCase             =		output.images

           lowerCamelCase             =		torch.Generator(device=__a     ).manual_seed(0     )
           lowerCamelCase             =		sd_pipe(
               [prompt]					,      image=__a					,      generator=__a					,      guidance_scale=6.0					,      noise_level=20					,      num_inference_steps=2					,      output_type="np"					,      return_dict=__a					,      )[0]

           lowerCamelCase             =		image[0, -3:, -3:, -1]
           lowerCamelCase             =		image_from_tuple[0, -3:, -3:, -1]

           lowerCamelCase             =		low_res_image.size[0] * 4
           assert image.shape == (1, expected_height_width, expected_height_width, 3)
           lowerCamelCase             =		np.array([0.3113, 0.3910, 0.4272, 0.4859, 0.5061, 0.4652, 0.5362, 0.5715, 0.5661]     )

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







     def     _a   (self     ):






           '''simple docstring'''



           lowerCamelCase             =		"cpu"  # ensure determinism for the device-dependent torch.Generator
           lowerCamelCase             =		self.dummy_cond_unet_upscale
           lowerCamelCase             =		DDPMScheduler()
           lowerCamelCase             =		DDIMScheduler(prediction_type="v_prediction"     )
           lowerCamelCase             =		self.dummy_vae
           lowerCamelCase             =		self.dummy_text_encoder
           lowerCamelCase             =		CLIPTokenizer.from_pretrained("hf-internal-testing/tiny-random-clip"     )

           lowerCamelCase             =		self.dummy_image.cpu().permute(0					,      2					,      3					,      1     )[0]
           lowerCamelCase             =		Image.fromarray(np.uinta(__a     )     ).convert("RGB"     ).resize((64, 64)     )

           # make sure here that pndm scheduler skips prk
           lowerCamelCase             =		StableDiffusionUpscalePipeline(
               unet=__a					,      low_res_scheduler=__a					,      scheduler=__a					,      vae=__a					,      text_encoder=__a					,      tokenizer=__a					,      max_noise_level=3_50					,      )
           lowerCamelCase             =		sd_pipe.to(__a     )
           sd_pipe.set_progress_bar_config(disable=__a     )

           lowerCamelCase             =		"A painting of a squirrel eating a burger"
           lowerCamelCase             =		sd_pipe(
               2 * [prompt]					,      image=2 * [low_res_image]					,      guidance_scale=6.0					,      noise_level=20					,      num_inference_steps=2					,      output_type="np"					,      )
           lowerCamelCase             =		output.images
           assert image.shape[0] == 2

           lowerCamelCase             =		torch.Generator(device=__a     ).manual_seed(0     )
           lowerCamelCase             =		sd_pipe(
               [prompt]					,      image=__a					,      generator=__a					,      num_images_per_prompt=2					,      guidance_scale=6.0					,      noise_level=20					,      num_inference_steps=2					,      output_type="np"					,      )
           lowerCamelCase             =		output.images
           assert image.shape[0] == 2







     @unittest.skipIf(torch_device != "cuda"					,      "This test requires a GPU"     )
     def     _a   (self     ):






           '''simple docstring'''



           lowerCamelCase             =		self.dummy_cond_unet_upscale
           lowerCamelCase             =		DDPMScheduler()
           lowerCamelCase             =		DDIMScheduler(prediction_type="v_prediction"     )
           lowerCamelCase             =		self.dummy_vae
           lowerCamelCase             =		self.dummy_text_encoder
           lowerCamelCase             =		CLIPTokenizer.from_pretrained("hf-internal-testing/tiny-random-clip"     )

           lowerCamelCase             =		self.dummy_image.cpu().permute(0					,      2					,      3					,      1     )[0]
           lowerCamelCase             =		Image.fromarray(np.uinta(__a     )     ).convert("RGB"     ).resize((64, 64)     )

           # put models in fp16, except vae as it overflows in fp16
           lowerCamelCase             =		unet.half()
           lowerCamelCase             =		text_encoder.half()

           # make sure here that pndm scheduler skips prk
           lowerCamelCase             =		StableDiffusionUpscalePipeline(
               unet=__a					,      low_res_scheduler=__a					,      scheduler=__a					,      vae=__a					,      text_encoder=__a					,      tokenizer=__a					,      max_noise_level=3_50					,      )
           lowerCamelCase             =		sd_pipe.to(__a     )
           sd_pipe.set_progress_bar_config(disable=__a     )

           lowerCamelCase             =		"A painting of a squirrel eating a burger"
           lowerCamelCase             =		torch.manual_seed(0     )
           lowerCamelCase             =		sd_pipe(
               [prompt]					,      image=__a					,      generator=__a					,      num_inference_steps=2					,      output_type="np"					,      ).images

           lowerCamelCase             =		low_res_image.size[0] * 4
           assert image.shape == (1, expected_height_width, expected_height_width, 3)





@slow
@require_torch_gpu
class  lowerCamelCase__	(    unittest.TestCase):
     """simple docstring"""



     def     _a   (self     ):






           '''simple docstring'''



           super().tearDown()
           gc.collect()
           torch.cuda.empty_cache()







     def     _a   (self     ):






           '''simple docstring'''



           lowerCamelCase             =		load_image(
               "https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main"
               "/sd2-upscale/low_res_cat.png"     )
           lowerCamelCase             =		load_numpy(
               "https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/sd2-upscale"
               "/upsampled_cat.npy"     )

           lowerCamelCase             =		"stabilityai/stable-diffusion-x4-upscaler"
           lowerCamelCase             =		StableDiffusionUpscalePipeline.from_pretrained(__a     )
           pipe.to(__a     )
           pipe.set_progress_bar_config(disable=__a     )
           pipe.enable_attention_slicing()

           lowerCamelCase             =		"a cat sitting on a park bench"

           lowerCamelCase             =		torch.manual_seed(0     )
           lowerCamelCase             =		pipe(
               prompt=__a					,      image=__a					,      generator=__a					,      output_type="np"					,      )
           lowerCamelCase             =		output.images[0]

           assert image.shape == (5_12, 5_12, 3)
           assert np.abs(expected_image - image     ).max() < 1E-3







     def     _a   (self     ):






           '''simple docstring'''



           lowerCamelCase             =		load_image(
               "https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main"
               "/sd2-upscale/low_res_cat.png"     )
           lowerCamelCase             =		load_numpy(
               "https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/sd2-upscale"
               "/upsampled_cat_fp16.npy"     )

           lowerCamelCase             =		"stabilityai/stable-diffusion-x4-upscaler"
           lowerCamelCase             =		StableDiffusionUpscalePipeline.from_pretrained(
               __a					,      torch_dtype=torch.floataa					,      )
           pipe.to(__a     )
           pipe.set_progress_bar_config(disable=__a     )
           pipe.enable_attention_slicing()

           lowerCamelCase             =		"a cat sitting on a park bench"

           lowerCamelCase             =		torch.manual_seed(0     )
           lowerCamelCase             =		pipe(
               prompt=__a					,      image=__a					,      generator=__a					,      output_type="np"					,      )
           lowerCamelCase             =		output.images[0]

           assert image.shape == (5_12, 5_12, 3)
           assert np.abs(expected_image - image     ).max() < 5E-1







     def     _a   (self     ):






           '''simple docstring'''



           torch.cuda.empty_cache()
           torch.cuda.reset_max_memory_allocated()
           torch.cuda.reset_peak_memory_stats()

           lowerCamelCase             =		load_image(
               "https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main"
               "/sd2-upscale/low_res_cat.png"     )

           lowerCamelCase             =		"stabilityai/stable-diffusion-x4-upscaler"
           lowerCamelCase             =		StableDiffusionUpscalePipeline.from_pretrained(
               __a					,      torch_dtype=torch.floataa					,      )
           pipe.to(__a     )
           pipe.set_progress_bar_config(disable=__a     )
           pipe.enable_attention_slicing(1     )
           pipe.enable_sequential_cpu_offload()

           lowerCamelCase             =		"a cat sitting on a park bench"

           lowerCamelCase             =		torch.manual_seed(0     )
           lowerCamelCase             =		pipe(
               prompt=__a					,      image=__a					,      generator=__a					,      num_inference_steps=5					,      output_type="np"					,      )

           lowerCamelCase             =		torch.cuda.max_memory_allocated()
           # make sure that less than 2.9 GB is allocated
           assert mem_bytes < 2.9 * 10**9