
import unittest

from transformers import AlbertConfig, is_torch_available
from transformers.models.auto import get_values
from transformers.testing_utils import require_torch, slow, torch_device

from ...test_configuration_common import ConfigTester
from ...test_modeling_common import ModelTesterMixin, ids_tensor, random_attention_mask
from ...test_pipeline_mixin import PipelineTesterMixin


if is_torch_available():
		import torch

		from transformers import (
		    MODEL_FOR_PRETRAINING_MAPPING,
		    AlbertForMaskedLM,
		    AlbertForMultipleChoice,
		    AlbertForPreTraining,
		    AlbertForQuestionAnswering,
		    AlbertForSequenceClassification,
		    AlbertForTokenClassification,
		    AlbertModel,
		)
		from transformers.models.albert.modeling_albert import ALBERT_PRETRAINED_MODEL_ARCHIVE_LIST







class        lowerCAmelCase__      :

						def __init__(			self       ,							a       ,							a=13       ,							a=7       ,							a=True       ,							a=True       ,							a=True       ,							a=True       ,							a=99       ,							a=16       ,							a=36       ,							a=6       ,							a=6       ,							a=6       ,							a=37       ,							a="gelu"       ,							a=0.1       ,							a=0.1       ,							a=5_12       ,							a=16       ,							a=2       ,							a=0.02       ,							a=3       ,							a=4       ,							a=None       ,							)					->      Tuple:


								'''simple docstring'''

								_UpperCamelCase						    =	parent
								_UpperCamelCase						    =	batch_size
								_UpperCamelCase						    =	seq_length
								_UpperCamelCase						    =	is_training
								_UpperCamelCase						    =	use_input_mask
								_UpperCamelCase						    =	use_token_type_ids
								_UpperCamelCase						    =	use_labels
								_UpperCamelCase						    =	vocab_size
								_UpperCamelCase						    =	embedding_size
								_UpperCamelCase						    =	hidden_size
								_UpperCamelCase						    =	num_hidden_layers
								_UpperCamelCase						    =	num_hidden_groups
								_UpperCamelCase						    =	num_attention_heads
								_UpperCamelCase						    =	intermediate_size
								_UpperCamelCase						    =	hidden_act
								_UpperCamelCase						    =	hidden_dropout_prob
								_UpperCamelCase						    =	attention_probs_dropout_prob
								_UpperCamelCase						    =	max_position_embeddings
								_UpperCamelCase						    =	type_vocab_size
								_UpperCamelCase						    =	type_sequence_label_size
								_UpperCamelCase						    =	initializer_range
								_UpperCamelCase						    =	num_labels
								_UpperCamelCase						    =	num_choices
								_UpperCamelCase						    =	scope

						def  A_				(			self				)					->      Optional[Any]:


								'''simple docstring'''

								_UpperCamelCase						    =	ids_tensor([self.batch_size, self.seq_length]       ,							self.vocab_size				)

								_UpperCamelCase						    =	None
								if self.use_input_mask:
										_UpperCamelCase						    =	random_attention_mask([self.batch_size, self.seq_length]				)

								_UpperCamelCase						    =	None
								if self.use_token_type_ids:
										_UpperCamelCase						    =	ids_tensor([self.batch_size, self.seq_length]       ,							self.type_vocab_size				)

								_UpperCamelCase						    =	None
								_UpperCamelCase						    =	None
								_UpperCamelCase						    =	None
								if self.use_labels:
										_UpperCamelCase						    =	ids_tensor([self.batch_size]       ,							self.type_sequence_label_size				)
										_UpperCamelCase						    =	ids_tensor([self.batch_size, self.seq_length]       ,							self.num_labels				)
										_UpperCamelCase						    =	ids_tensor([self.batch_size]       ,							self.num_choices				)

								_UpperCamelCase						    =	self.get_config()

								return config, input_ids, token_type_ids, input_mask, sequence_labels, token_labels, choice_labels

						def  A_				(			self				)					->      Union[str, Any]:


								'''simple docstring'''

								return AlbertConfig(
								    vocab_size=self.vocab_size       ,							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       ,							max_position_embeddings=self.max_position_embeddings       ,							type_vocab_size=self.type_vocab_size       ,							initializer_range=self.initializer_range       ,							num_hidden_groups=self.num_hidden_groups       ,							)

						def  A_				(			self       ,							a       ,							a       ,							a       ,							a       ,							a       ,							a       ,							a				)					->      List[str]:


								'''simple docstring'''

								_UpperCamelCase						    =	AlbertModel(config=a				)
								model.to(a				)
								model.eval()
								_UpperCamelCase						    =	model(a       ,							attention_mask=a       ,							token_type_ids=a				)
								_UpperCamelCase						    =	model(a       ,							token_type_ids=a				)
								_UpperCamelCase						    =	model(a				)
								self.parent.assertEqual(result.last_hidden_state.shape       ,							(self.batch_size, self.seq_length, self.hidden_size)				)
								self.parent.assertEqual(result.pooler_output.shape       ,							(self.batch_size, self.hidden_size)				)

						def  A_				(			self       ,							a       ,							a       ,							a       ,							a       ,							a       ,							a       ,							a				)					->      int:


								'''simple docstring'''

								_UpperCamelCase						    =	AlbertForPreTraining(config=a				)
								model.to(a				)
								model.eval()
								_UpperCamelCase						    =	model(
								    a       ,							attention_mask=a       ,							token_type_ids=a       ,							labels=a       ,							sentence_order_label=a       ,							)
								self.parent.assertEqual(result.prediction_logits.shape       ,							(self.batch_size, self.seq_length, self.vocab_size)				)
								self.parent.assertEqual(result.sop_logits.shape       ,							(self.batch_size, config.num_labels)				)

						def  A_				(			self       ,							a       ,							a       ,							a       ,							a       ,							a       ,							a       ,							a				)					->      Union[str, Any]:


								'''simple docstring'''

								_UpperCamelCase						    =	AlbertForMaskedLM(config=a				)
								model.to(a				)
								model.eval()
								_UpperCamelCase						    =	model(a       ,							attention_mask=a       ,							token_type_ids=a       ,							labels=a				)
								self.parent.assertEqual(result.logits.shape       ,							(self.batch_size, self.seq_length, self.vocab_size)				)

						def  A_				(			self       ,							a       ,							a       ,							a       ,							a       ,							a       ,							a       ,							a				)					->      Any:


								'''simple docstring'''

								_UpperCamelCase						    =	AlbertForQuestionAnswering(config=a				)
								model.to(a				)
								model.eval()
								_UpperCamelCase						    =	model(
								    a       ,							attention_mask=a       ,							token_type_ids=a       ,							start_positions=a       ,							end_positions=a       ,							)
								self.parent.assertEqual(result.start_logits.shape       ,							(self.batch_size, self.seq_length)				)
								self.parent.assertEqual(result.end_logits.shape       ,							(self.batch_size, self.seq_length)				)

						def  A_				(			self       ,							a       ,							a       ,							a       ,							a       ,							a       ,							a       ,							a				)					->      str:


								'''simple docstring'''

								_UpperCamelCase						    =	self.num_labels
								_UpperCamelCase						    =	AlbertForSequenceClassification(a				)
								model.to(a				)
								model.eval()
								_UpperCamelCase						    =	model(a       ,							attention_mask=a       ,							token_type_ids=a       ,							labels=a				)
								self.parent.assertEqual(result.logits.shape       ,							(self.batch_size, self.num_labels)				)

						def  A_				(			self       ,							a       ,							a       ,							a       ,							a       ,							a       ,							a       ,							a				)					->      List[str]:


								'''simple docstring'''

								_UpperCamelCase						    =	self.num_labels
								_UpperCamelCase						    =	AlbertForTokenClassification(config=a				)
								model.to(a				)
								model.eval()
								_UpperCamelCase						    =	model(a       ,							attention_mask=a       ,							token_type_ids=a       ,							labels=a				)
								self.parent.assertEqual(result.logits.shape       ,							(self.batch_size, self.seq_length, self.num_labels)				)

						def  A_				(			self       ,							a       ,							a       ,							a       ,							a       ,							a       ,							a       ,							a				)					->      Optional[Any]:


								'''simple docstring'''

								_UpperCamelCase						    =	self.num_choices
								_UpperCamelCase						    =	AlbertForMultipleChoice(config=a				)
								model.to(a				)
								model.eval()
								_UpperCamelCase						    =	input_ids.unsqueeze(1				).expand(-1       ,							self.num_choices       ,							-1				).contiguous()
								_UpperCamelCase						    =	token_type_ids.unsqueeze(1				).expand(-1       ,							self.num_choices       ,							-1				).contiguous()
								_UpperCamelCase						    =	input_mask.unsqueeze(1				).expand(-1       ,							self.num_choices       ,							-1				).contiguous()
								_UpperCamelCase						    =	model(
								    a       ,							attention_mask=a       ,							token_type_ids=a       ,							labels=a       ,							)
								self.parent.assertEqual(result.logits.shape       ,							(self.batch_size, self.num_choices)				)







						def  A_				(			self				)					->      int:


								'''simple docstring'''

								_UpperCamelCase						    =	self.prepare_config_and_inputs()
								(
								    (
								    _UpperCamelCase
								)    ,	(
								    _UpperCamelCase
								)    ,	(
								    _UpperCamelCase
								)    ,	(
								    _UpperCamelCase
								)    ,	(
								    _UpperCamelCase
								)    ,	(
								    _UpperCamelCase
								)    ,	(
								    _UpperCamelCase
								)    ,	
								)						    =	config_and_inputs
								_UpperCamelCase						    =	{"""input_ids""": input_ids, """token_type_ids""": token_type_ids, """attention_mask""": input_mask}
								return config, inputs_dict







@require_torch
class        lowerCAmelCase__      (   __lowercase		,	__lowercase		,	unittest.TestCase	):
						UpperCamelCase_							: Dict	=		(
						    (
						        AlbertModel,
						        AlbertForPreTraining,
						        AlbertForMaskedLM,
						        AlbertForMultipleChoice,
						        AlbertForSequenceClassification,
						        AlbertForTokenClassification,
						        AlbertForQuestionAnswering,
						    )
						    if is_torch_available()
						    else ()
						)
						UpperCamelCase_							: List[str]	=		(
						    {
						        "feature-extraction": AlbertModel,
						        "fill-mask": AlbertForMaskedLM,
						        "question-answering": AlbertForQuestionAnswering,
						        "text-classification": AlbertForSequenceClassification,
						        "token-classification": AlbertForTokenClassification,
						        "zero-shot": AlbertForSequenceClassification,
						    }
						    if is_torch_available()
						    else {}
						)
						UpperCamelCase_							: Optional[int]	=		True

						def  A_				(			self       ,							a       ,							a       ,							a=False				)					->      Optional[Any]:


								'''simple docstring'''

								_UpperCamelCase						    =	super()._prepare_for_class(a       ,							a       ,							return_labels=a				)

								if return_labels:
										if model_class in get_values(a				):
												_UpperCamelCase						    =	torch.zeros(
												    (self.model_tester.batch_size, self.model_tester.seq_length)       ,							dtype=torch.long       ,							device=a				)
												_UpperCamelCase						    =	torch.zeros(
												    self.model_tester.batch_size       ,							dtype=torch.long       ,							device=a				)
								return inputs_dict

						def  A_				(			self				)					->      Union[str, Any]:


								'''simple docstring'''

								_UpperCamelCase						    =	AlbertModelTester(self				)
								_UpperCamelCase						    =	ConfigTester(self       ,							config_class=a       ,							hidden_size=37				)

						def  A_				(			self				)					->      int:


								'''simple docstring'''

								self.config_tester.run_common_tests()

						def  A_				(			self				)					->      List[str]:


								'''simple docstring'''

								_UpperCamelCase						    =	self.model_tester.prepare_config_and_inputs()
								self.model_tester.create_and_check_model(*a				)

						def  A_				(			self				)					->      Tuple:


								'''simple docstring'''

								_UpperCamelCase						    =	self.model_tester.prepare_config_and_inputs()
								self.model_tester.create_and_check_for_pretraining(*a				)

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


								'''simple docstring'''

								_UpperCamelCase						    =	self.model_tester.prepare_config_and_inputs()
								self.model_tester.create_and_check_for_masked_lm(*a				)

						def  A_				(			self				)					->      List[Any]:


								'''simple docstring'''

								_UpperCamelCase						    =	self.model_tester.prepare_config_and_inputs()
								self.model_tester.create_and_check_for_multiple_choice(*a				)

						def  A_				(			self				)					->      Dict:


								'''simple docstring'''

								_UpperCamelCase						    =	self.model_tester.prepare_config_and_inputs()
								self.model_tester.create_and_check_for_question_answering(*a				)

						def  A_				(			self				)					->      Tuple:


								'''simple docstring'''

								_UpperCamelCase						    =	self.model_tester.prepare_config_and_inputs()
								self.model_tester.create_and_check_for_sequence_classification(*a				)

						def  A_				(			self				)					->      List[str]:


								'''simple docstring'''

								_UpperCamelCase						    =	self.model_tester.prepare_config_and_inputs()
								for type in ["absolute", "relative_key", "relative_key_query"]:
										_UpperCamelCase						    =	type
										self.model_tester.create_and_check_model(*a				)







						@slow
						def  A_				(			self				)					->      List[str]:


								'''simple docstring'''

								for model_name in ALBERT_PRETRAINED_MODEL_ARCHIVE_LIST[:1]:
										_UpperCamelCase						    =	AlbertModel.from_pretrained(a				)
										self.assertIsNotNone(a				)







@require_torch
class        lowerCAmelCase__      (   unittest.TestCase	):

						@slow
						def  A_				(			self				)					->      Dict:


								'''simple docstring'''

								_UpperCamelCase						    =	AlbertModel.from_pretrained("""albert-base-v2"""				)
								_UpperCamelCase						    =	torch.tensor([[0, 3_45, 2_32, 3_28, 7_40, 1_40, 16_95, 69, 60_78, 15_88, 2]]				)
								_UpperCamelCase						    =	torch.tensor([[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]				)
								with torch.no_grad():
										_UpperCamelCase						    =	model(a       ,							attention_mask=a				)[0]
								_UpperCamelCase						    =	torch.Size((1, 11, 7_68)				)
								self.assertEqual(output.shape       ,							a				)
								_UpperCamelCase						    =	torch.tensor(
								    [[[-0.6513, 1.5035, -0.2766], [-0.6515, 1.5046, -0.2780], [-0.6512, 1.5049, -0.2784]]]				)

								self.assertTrue(torch.allclose(output[:, 1:4, 1:4]       ,							a       ,							atol=1e-4				)				)





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, PNDMScheduler, StableDiffusionInpaintPipeline, UNetaDConditionModel
from diffusers.utils import floats_tensor, load_image, load_numpy, torch_device
from diffusers.utils.testing_utils import enable_full_determinism, require_torch_gpu, slow

from ..pipeline_params import TEXT_GUIDED_IMAGE_INPAINTING_BATCH_PARAMS, TEXT_GUIDED_IMAGE_INPAINTING_PARAMS
from ..test_pipelines_common import PipelineKarrasSchedulerTesterMixin, PipelineLatentTesterMixin, PipelineTesterMixin


enable_full_determinism()







class        lowerCAmelCase__      (   __lowercase		,	__lowercase		,	__lowercase		,	unittest.TestCase	):
						UpperCamelCase_							: List[Any]	=		StableDiffusionInpaintPipeline
						UpperCamelCase_							: int	=		TEXT_GUIDED_IMAGE_INPAINTING_PARAMS
						UpperCamelCase_							: Union[str, Any]	=		TEXT_GUIDED_IMAGE_INPAINTING_BATCH_PARAMS
						UpperCamelCase_							: Tuple	=		frozenset(
						    []	)  # TO-DO: update image_params once pipeline is refactored with VaeImageProcessor.preprocess
						UpperCamelCase_							: int	=		frozenset([]	)

						def  A_				(			self				)					->      Union[str, Any]:


								'''simple docstring'''

								torch.manual_seed(0				)
								_UpperCamelCase						    =	UNetaDConditionModel(
								    block_out_channels=(32, 64)       ,							layers_per_block=2       ,							sample_size=32       ,							in_channels=9       ,							out_channels=4       ,							down_block_types=("""DownBlock2D""", """CrossAttnDownBlock2D""")       ,							up_block_types=("""CrossAttnUpBlock2D""", """UpBlock2D""")       ,							cross_attention_dim=32       ,							attention_head_dim=(2, 4)       ,							use_linear_projection=a       ,							)
								_UpperCamelCase						    =	PNDMScheduler(skip_prk_steps=a				)
								torch.manual_seed(0				)
								_UpperCamelCase						    =	AutoencoderKL(
								    block_out_channels=[32, 64]       ,							in_channels=3       ,							out_channels=3       ,							down_block_types=["""DownEncoderBlock2D""", """DownEncoderBlock2D"""]       ,							up_block_types=["""UpDecoderBlock2D""", """UpDecoderBlock2D"""]       ,							latent_channels=4       ,							sample_size=1_28       ,							)
								torch.manual_seed(0				)
								_UpperCamelCase						    =	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       ,							)
								_UpperCamelCase						    =	CLIPTextModel(a				)
								_UpperCamelCase						    =	CLIPTokenizer.from_pretrained("""hf-internal-testing/tiny-random-clip"""				)

								_UpperCamelCase						    =	{
								    """unet""": unet,
								    """scheduler""": scheduler,
								    """vae""": vae,
								    """text_encoder""": text_encoder,
								    """tokenizer""": tokenizer,
								    """safety_checker""": None,
								    """feature_extractor""": None,
								}
								return components

						def  A_				(			self       ,							a       ,							a=0				)					->      List[Any]:


								'''simple docstring'''

								_UpperCamelCase						    =	floats_tensor((1, 3, 32, 32)       ,							rng=random.Random(a				)				).to(a				)
								_UpperCamelCase						    =	image.cpu().permute(0       ,							2       ,							3       ,							1				)[0]
								_UpperCamelCase						    =	Image.fromarray(np.uinta(a				)				).convert("""RGB"""				).resize((64, 64)				)
								_UpperCamelCase						    =	Image.fromarray(np.uinta(image + 4				)				).convert("""RGB"""				).resize((64, 64)				)
								if str(a				).startswith("""mps"""				):
										_UpperCamelCase						    =	torch.manual_seed(a				)
								else:
										_UpperCamelCase						    =	torch.Generator(device=a				).manual_seed(a				)
								_UpperCamelCase						    =	{
								    """prompt""": """A painting of a squirrel eating a burger""",
								    """image""": init_image,
								    """mask_image""": mask_image,
								    """generator""": generator,
								    """num_inference_steps""": 2,
								    """guidance_scale""": 6.0,
								    """output_type""": """numpy""",
								}
								return inputs

						def  A_				(			self				)					->      Dict:


								'''simple docstring'''

								_UpperCamelCase						    =	"""cpu"""  # ensure determinism for the device-dependent torch.Generator
								_UpperCamelCase						    =	self.get_dummy_components()
								_UpperCamelCase						    =	StableDiffusionInpaintPipeline(**a				)
								_UpperCamelCase						    =	sd_pipe.to(a				)
								sd_pipe.set_progress_bar_config(disable=a				)

								_UpperCamelCase						    =	self.get_dummy_inputs(a				)
								_UpperCamelCase						    =	sd_pipe(**a				).images
								_UpperCamelCase						    =	image[0, -3:, -3:, -1]

								assert image.shape == (1, 64, 64, 3)
								_UpperCamelCase						    =	np.array([0.4727, 0.5735, 0.3941, 0.5446, 0.5926, 0.4394, 0.5062, 0.4654, 0.4476]				)

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







						def  A_				(			self				)					->      Tuple:


								'''simple docstring'''

								super().test_inference_batch_single_identical(expected_max_diff=3e-3				)







@slow
@require_torch_gpu
class        lowerCAmelCase__      (   unittest.TestCase	):

						def  A_				(			self				)					->      Union[str, Any]:


								'''simple docstring'''

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

						def  A_				(			self				)					->      Dict:


								'''simple docstring'''

								_UpperCamelCase						    =	load_image(
								    """https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main"""
								    """/sd2-inpaint/init_image.png"""				)
								_UpperCamelCase						    =	load_image(
								    """https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/sd2-inpaint/mask.png"""				)
								_UpperCamelCase						    =	load_numpy(
								    """https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/sd2-inpaint"""
								    """/yellow_cat_sitting_on_a_park_bench.npy"""				)

								_UpperCamelCase						    =	"""stabilityai/stable-diffusion-2-inpainting"""
								_UpperCamelCase						    =	StableDiffusionInpaintPipeline.from_pretrained(a       ,							safety_checker=a				)
								pipe.to(a				)
								pipe.set_progress_bar_config(disable=a				)
								pipe.enable_attention_slicing()

								_UpperCamelCase						    =	"""Face of a yellow cat, high resolution, sitting on a park bench"""

								_UpperCamelCase						    =	torch.manual_seed(0				)
								_UpperCamelCase						    =	pipe(
								    prompt=a       ,							image=a       ,							mask_image=a       ,							generator=a       ,							output_type="""np"""       ,							)
								_UpperCamelCase						    =	output.images[0]

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

						def  A_				(			self				)					->      str:


								'''simple docstring'''

								_UpperCamelCase						    =	load_image(
								    """https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main"""
								    """/sd2-inpaint/init_image.png"""				)
								_UpperCamelCase						    =	load_image(
								    """https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/sd2-inpaint/mask.png"""				)
								_UpperCamelCase						    =	load_numpy(
								    """https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/sd2-inpaint"""
								    """/yellow_cat_sitting_on_a_park_bench_fp16.npy"""				)

								_UpperCamelCase						    =	"""stabilityai/stable-diffusion-2-inpainting"""
								_UpperCamelCase						    =	StableDiffusionInpaintPipeline.from_pretrained(
								    a       ,							torch_dtype=torch.floataa       ,							safety_checker=a       ,							)
								pipe.to(a				)
								pipe.set_progress_bar_config(disable=a				)
								pipe.enable_attention_slicing()

								_UpperCamelCase						    =	"""Face of a yellow cat, high resolution, sitting on a park bench"""

								_UpperCamelCase						    =	torch.manual_seed(0				)
								_UpperCamelCase						    =	pipe(
								    prompt=a       ,							image=a       ,							mask_image=a       ,							generator=a       ,							output_type="""np"""       ,							)
								_UpperCamelCase						    =	output.images[0]

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







						def  A_				(			self				)					->      Dict:


								'''simple docstring'''

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

								_UpperCamelCase						    =	load_image(
								    """https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main"""
								    """/sd2-inpaint/init_image.png"""				)
								_UpperCamelCase						    =	load_image(
								    """https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/sd2-inpaint/mask.png"""				)

								_UpperCamelCase						    =	"""stabilityai/stable-diffusion-2-inpainting"""
								_UpperCamelCase						    =	PNDMScheduler.from_pretrained(a       ,							subfolder="""scheduler"""				)
								_UpperCamelCase						    =	StableDiffusionInpaintPipeline.from_pretrained(
								    a       ,							safety_checker=a       ,							scheduler=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()

								_UpperCamelCase						    =	"""Face of a yellow cat, high resolution, sitting on a park bench"""

								_UpperCamelCase						    =	torch.manual_seed(0				)
								_UpperCamelCase						    =	pipe(
								    prompt=a       ,							image=a       ,							mask_image=a       ,							generator=a       ,							num_inference_steps=2       ,							output_type="""np"""       ,							)

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



