



'''simple docstring'''



import argparse

import torch

from transformers import ImageGPTConfig, ImageGPTForCausalLM, load_tf_weights_in_imagegpt
from transformers.utils import CONFIG_NAME, WEIGHTS_NAME, logging


logging.set_verbosity_info()


def 							__UpperCAmelCase				(				UpperCamelCase__				:Tuple   ,				UpperCamelCase__				:Optional[int]   ,				UpperCamelCase__				:Union[str, Any]			)		->						Any:
				# Construct configuration depending on size
				snake_case__      :   Tuple      =    {'''small''': (512, 8, 24), '''medium''': (1024, 8, 36), '''large''': (1536, 16, 48)}
				snake_case__  ,      snake_case__  ,      snake_case__      :   int      =    MODELS[model_size]  # set model hyperparameters
				snake_case__      :   Any      =    ImageGPTConfig(n_embd=UpperCamelCase__   ,				n_layer=UpperCamelCase__   ,				n_head=UpperCamelCase__			)
				snake_case__      :   str      =    ImageGPTForCausalLM(UpperCamelCase__			)

				# Load weights from numpy
				load_tf_weights_in_imagegpt(UpperCamelCase__   ,				UpperCamelCase__   ,				UpperCamelCase__			)

				# Save pytorch-model
				snake_case__      :   Tuple      =    pytorch_dump_folder_path + '''/''' + WEIGHTS_NAME
				snake_case__      :   str      =    pytorch_dump_folder_path + '''/''' + CONFIG_NAME
				print(F'''Save PyTorch model to {pytorch_weights_dump_path}'''			)
				torch.save(model.state_dict()   ,				UpperCamelCase__			)
				print(F'''Save configuration file to {pytorch_config_dump_path}'''			)
				with open(UpperCamelCase__   ,				'''w'''   ,				encoding='''utf-8'''			) as f:
								f.write(config.to_json_string()			)


if __name__ == "__main__":
				_lowercase       :						Optional[Any]						=argparse.ArgumentParser()
				# Required parameters
				parser.add_argument(
				    "--imagegpt_checkpoint_path",
				    default=None,
				    type=str,
				    required=True,
				    help="Path to the TensorFlow checkpoint path.",
				)
				parser.add_argument(
				    "--model_size",
				    default=None,
				    type=str,
				    required=True,
				    help="Size of the model (can be either 'small', 'medium' or 'large').",
				)
				parser.add_argument(
				    "--pytorch_dump_folder_path", default=None, type=str, required=True, help="Path to the output PyTorch model."
				)
				_lowercase       :						Dict						=parser.parse_args()
				convert_imagegpt_checkpoint_to_pytorch(
				    args.imagegpt_checkpoint_path, args.model_size, args.pytorch_dump_folder_path
				)






'''simple docstring'''





import numpy as np
import qiskit
from qiskit import Aer, ClassicalRegister, QuantumCircuit, QuantumRegister, execute

def   A			(							A_				:       float = np.pi / 2     ,				A_				:       float = np.pi / 2     ,				A_				:       float = np.pi / 2							):
						snake_case							:  List[Any]			=     QuantumRegister(3     ,				'''qr'''							)  # Define the number of quantum bits
						snake_case							:  List[Any]			=     ClassicalRegister(1     ,				'''cr'''							)  # Define the number of classical bits

						snake_case							:  Dict			=     QuantumCircuit(A_     ,				A_							)  # Define the quantum circuit.

						# Build the circuit
						quantum_circuit.u(A_     ,				A_     ,				A_     ,				0							)  # Quantum State to teleport
						quantum_circuit.h(1							)  # add hadamard gate
						quantum_circuit.cx(
						    1     ,				2							)  # add control gate with qubit 1 as control and 2 as target.
						quantum_circuit.cx(0     ,				1							)
						quantum_circuit.h(0							)
						quantum_circuit.cz(0     ,				2							)  # add control z gate.
						quantum_circuit.cx(1     ,				2							)

						quantum_circuit.measure([2]     ,				[0]							)  # measure the qubit.

						# Simulate the circuit using qasm simulator
						snake_case							:  str			=     Aer.get_backend('''aer_simulator'''							)
						snake_case							:  List[str]			=     execute(A_     ,				A_     ,				shots=1000							)

						return job.result().get_counts(A_							)


if __name__ == "__main__":
						print(
						    "Total count for teleported state is: "
						    f'''{quantum_teleportation(np.pi/2, np.pi/2, np.pi/2)}'''
						)

