






'''simple docstring'''







import gc
import unittest

import numpy as np
import torch

from diffusers import StableDiffusionKDiffusionPipeline
from diffusers.utils import slow, torch_device
from diffusers.utils.testing_utils import enable_full_determinism, require_torch_gpu


enable_full_determinism()




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




		'''simple docstring'''





		def       UpperCamelCase_       (   self							):
								# clean up the VRAM after each test
								super().tearDown()
								gc.collect()
								torch.cuda.empty_cache()






		def       UpperCamelCase_       (   self							):
								lowerCamelCase__								=	StableDiffusionKDiffusionPipeline.from_pretrained("""CompVis/stable-diffusion-v1-4"""							)
								lowerCamelCase__								=	sd_pipe.to(_lowerCAmelCase							)
								sd_pipe.set_progress_bar_config(disable=_lowerCAmelCase							)

								sd_pipe.set_scheduler("""sample_euler"""							)

								lowerCamelCase__								=	"""A painting of a squirrel eating a burger"""
								lowerCamelCase__								=	torch.manual_seed(0							)
								lowerCamelCase__								=	sd_pipe([prompt] ,generator=_lowerCAmelCase ,guidance_scale=9.0 ,num_inference_steps=20 ,output_type="""np"""							)

								lowerCamelCase__								=	output.images

								lowerCamelCase__								=	image[0, -3:, -3:, -1]

								assert image.shape == (1, 5_12, 5_12, 3)
								lowerCamelCase__								=	np.array([0.0447, 0.0492, 0.0468, 0.0408, 0.0383, 0.0408, 0.0354, 0.0380, 0.0339]							)

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






		def       UpperCamelCase_       (   self							):
								lowerCamelCase__								=	StableDiffusionKDiffusionPipeline.from_pretrained("""stabilityai/stable-diffusion-2-1-base"""							)
								lowerCamelCase__								=	sd_pipe.to(_lowerCAmelCase							)
								sd_pipe.set_progress_bar_config(disable=_lowerCAmelCase							)

								sd_pipe.set_scheduler("""sample_euler"""							)

								lowerCamelCase__								=	"""A painting of a squirrel eating a burger"""
								lowerCamelCase__								=	torch.manual_seed(0							)
								lowerCamelCase__								=	sd_pipe([prompt] ,generator=_lowerCAmelCase ,guidance_scale=9.0 ,num_inference_steps=20 ,output_type="""np"""							)

								lowerCamelCase__								=	output.images

								lowerCamelCase__								=	image[0, -3:, -3:, -1]

								assert image.shape == (1, 5_12, 5_12, 3)
								lowerCamelCase__								=	np.array([0.1237, 0.1320, 0.1438, 0.1359, 0.1390, 0.1132, 0.1277, 0.1175, 0.1112]							)

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






		def       UpperCamelCase_       (   self							):
								lowerCamelCase__								=	StableDiffusionKDiffusionPipeline.from_pretrained("""stabilityai/stable-diffusion-2-1-base"""							)
								lowerCamelCase__								=	sd_pipe.to(_lowerCAmelCase							)
								sd_pipe.set_progress_bar_config(disable=_lowerCAmelCase							)

								sd_pipe.set_scheduler("""sample_dpmpp_2m"""							)

								lowerCamelCase__								=	"""A painting of a squirrel eating a burger"""
								lowerCamelCase__								=	torch.manual_seed(0							)
								lowerCamelCase__								=	sd_pipe(
								    [prompt] ,generator=_lowerCAmelCase ,guidance_scale=7.5 ,num_inference_steps=15 ,output_type="""np""" ,use_karras_sigmas=_lowerCAmelCase ,)

								lowerCamelCase__								=	output.images

								lowerCamelCase__								=	image[0, -3:, -3:, -1]

								assert image.shape == (1, 5_12, 5_12, 3)
								lowerCamelCase__								=	np.array(
								    [0.1138_1689, 0.1211_2921, 0.138_9457, 0.1254_9606, 0.124_4964, 0.1083_1517, 0.1156_2866, 0.1086_7816, 0.1049_9048]							)

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








from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_torch_available,
)


a__: str							   =						{
    'configuration_mega': ['MEGA_PRETRAINED_CONFIG_ARCHIVE_MAP', 'MegaConfig', 'MegaOnnxConfig'],
}

try:
       if not is_torch_available():
              raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
       pass
else:
       a__: Union[str, Any]							   =						[
           'MEGA_PRETRAINED_MODEL_ARCHIVE_LIST',
           'MegaForCausalLM',
           'MegaForMaskedLM',
           'MegaForMultipleChoice',
           'MegaForQuestionAnswering',
           'MegaForSequenceClassification',
           'MegaForTokenClassification',
           'MegaModel',
           'MegaPreTrainedModel',
       ]

if TYPE_CHECKING:
       from .configuration_mega import MEGA_PRETRAINED_CONFIG_ARCHIVE_MAP, MegaConfig, MegaOnnxConfig

       try:
              if not is_torch_available():
                     raise OptionalDependencyNotAvailable()
       except OptionalDependencyNotAvailable:
              pass
       else:
              from .modeling_mega import (
                  MEGA_PRETRAINED_MODEL_ARCHIVE_LIST,
                  MegaForCausalLM,
                  MegaForMaskedLM,
                  MegaForMultipleChoice,
                  MegaForQuestionAnswering,
                  MegaForSequenceClassification,
                  MegaForTokenClassification,
                  MegaModel,
                  MegaPreTrainedModel,
              )

else:
       import sys

       a__: Union[str, Any]							   =						_LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)





