

'''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     a			(				unittest.TestCase       ):






						"""simple docstring"""




						def       __magic_name__							(							self					:      str  ):



								'''simple docstring'''



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







						def       __magic_name__							(							self					:      Tuple  ):



								'''simple docstring'''



								snake_case__						:       Union[str, Any]       						=  StableDiffusionKDiffusionPipeline.from_pretrained('''CompVis/stable-diffusion-v1-4'''  )
								snake_case__						:       Union[str, Any]       						=  sd_pipe.to(snake_case_  )
								sd_pipe.set_progress_bar_config(disable=snake_case_  )

								sd_pipe.set_scheduler('''sample_euler'''  )

								snake_case__						:       Any       						=  '''A painting of a squirrel eating a burger'''
								snake_case__						:       Union[str, Any]       						=  torch.manual_seed(0  )
								snake_case__						:       Union[str, Any]       						=  sd_pipe([prompt]			,			generator=snake_case_			,			guidance_scale=9.0			,			num_inference_steps=2_0			,			output_type='''np'''  )

								snake_case__						:       Optional[Any]       						=  output.images

								snake_case__						:       Dict       						=  image[0, -3:, -3:, -1]

								assert image.shape == (1, 5_1_2, 5_1_2, 3)
								snake_case__						:       Optional[Any]       						=  np.array([0.0_4_4_7, 0.0_4_9_2, 0.0_4_6_8, 0.0_4_0_8, 0.0_3_8_3, 0.0_4_0_8, 0.0_3_5_4, 0.0_3_8_0, 0.0_3_3_9]  )

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







						def       __magic_name__							(							self					:      List[Any]  ):



								'''simple docstring'''



								snake_case__						:       List[str]       						=  StableDiffusionKDiffusionPipeline.from_pretrained('''stabilityai/stable-diffusion-2-1-base'''  )
								snake_case__						:       List[Any]       						=  sd_pipe.to(snake_case_  )
								sd_pipe.set_progress_bar_config(disable=snake_case_  )

								sd_pipe.set_scheduler('''sample_euler'''  )

								snake_case__						:       Union[str, Any]       						=  '''A painting of a squirrel eating a burger'''
								snake_case__						:       Any       						=  torch.manual_seed(0  )
								snake_case__						:       Dict       						=  sd_pipe([prompt]			,			generator=snake_case_			,			guidance_scale=9.0			,			num_inference_steps=2_0			,			output_type='''np'''  )

								snake_case__						:       Optional[int]       						=  output.images

								snake_case__						:       Union[str, Any]       						=  image[0, -3:, -3:, -1]

								assert image.shape == (1, 5_1_2, 5_1_2, 3)
								snake_case__						:       Optional[int]       						=  np.array([0.1_2_3_7, 0.1_3_2_0, 0.1_4_3_8, 0.1_3_5_9, 0.1_3_9_0, 0.1_1_3_2, 0.1_2_7_7, 0.1_1_7_5, 0.1_1_1_2]  )

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







						def       __magic_name__							(							self					:      Optional[Any]  ):



								'''simple docstring'''



								snake_case__						:       Tuple       						=  StableDiffusionKDiffusionPipeline.from_pretrained('''stabilityai/stable-diffusion-2-1-base'''  )
								snake_case__						:       int       						=  sd_pipe.to(snake_case_  )
								sd_pipe.set_progress_bar_config(disable=snake_case_  )

								sd_pipe.set_scheduler('''sample_dpmpp_2m'''  )

								snake_case__						:       Any       						=  '''A painting of a squirrel eating a burger'''
								snake_case__						:       List[Any]       						=  torch.manual_seed(0  )
								snake_case__						:       Dict       						=  sd_pipe(
								    [prompt]			,			generator=snake_case_			,			guidance_scale=7.5			,			num_inference_steps=1_5			,			output_type='''np'''			,			use_karras_sigmas=snake_case_			,			)

								snake_case__						:       Optional[int]       						=  output.images

								snake_case__						:       List[str]       						=  image[0, -3:, -3:, -1]

								assert image.shape == (1, 5_1_2, 5_1_2, 3)
								snake_case__						:       str       						=  np.array(
								    [0.1_1_3_8_1_6_8_9, 0.1_2_1_1_2_9_2_1, 0.1_3_8_9_4_5_7, 0.1_2_5_4_9_6_0_6, 0.1_2_4_4_9_6_4, 0.1_0_8_3_1_5_1_7, 0.1_1_5_6_2_8_6_6, 0.1_0_8_6_7_8_1_6, 0.1_0_4_9_9_0_4_8]  )

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






'''simple docstring'''


import argparse

from transformers import BigBirdConfig, BigBirdForPreTraining, BigBirdForQuestionAnswering, load_tf_weights_in_big_bird
from transformers.utils import logging


logging.set_verbosity_info()




def 	_a       (				__lowerCAmelCase		:      Union[str, Any]   ,							__lowerCAmelCase		:      Any   ,							__lowerCAmelCase		:      Optional[int]   ,							__lowerCAmelCase		:      List[Any]     ):

		"""simple docstring"""

		snake_case__						:       Any       						=  BigBirdConfig.from_json_file(__lowerCAmelCase     )
		print(F"""Building PyTorch model from configuration: {config}"""     )

		if is_trivia_qa:
				snake_case__						:       str       						=  BigBirdForQuestionAnswering(__lowerCAmelCase     )
		else:
				snake_case__						:       Tuple       						=  BigBirdForPreTraining(__lowerCAmelCase     )

		# Load weights from tf checkpoint
		load_tf_weights_in_big_bird(__lowerCAmelCase   ,							__lowerCAmelCase   ,							is_trivia_qa=__lowerCAmelCase     )

		# Save pytorch-model
		print(F"""Save PyTorch model to {pytorch_dump_path}"""     )
		model.save_pretrained(__lowerCAmelCase     )


if __name__ == "__main__":
					lowerCAmelCase__						:       Union[str, Any]										=						argparse.ArgumentParser()
					# Required parameters
					parser.add_argument(
					    """--tf_checkpoint_path""", default=None, type=str, required=True, help="""Path to the TensorFlow checkpoint path."""
					)
					parser.add_argument(
					    """--big_bird_config_file""",
					    default=None,
					    type=str,
					    required=True,
					    help=(
					        """The config json file corresponding to the pre-trained BERT model. \n"""
					        """This specifies the model architecture."""
					    ),
					)
					parser.add_argument(
					    """--pytorch_dump_path""", default=None, type=str, required=True, help="""Path to the output PyTorch model."""
					)
					parser.add_argument(
					    """--is_trivia_qa""", action="""store_true""", help="""Whether to convert a model with a trivia_qa head."""
					)
					lowerCAmelCase__						:       Optional[int]										=						parser.parse_args()
					convert_tf_checkpoint_to_pytorch(
					    args.tf_checkpoint_path, args.big_bird_config_file, args.pytorch_dump_path, args.is_trivia_qa
					)



