



import argparse

import torch

from transformers import FunnelBaseModel, FunnelConfig, FunnelModel, load_tf_weights_in_funnel
from transformers.utils import logging


logging.set_verbosity_info()






def 					__lowerCAmelCase		(  __lowerCamelCase	:    int				,   __lowerCamelCase	:    Optional[int]				,   __lowerCamelCase	:    Union[str, Any]				,   __lowerCamelCase	:    List[Any]	)  ->						Optional[int]:
					# Initialise PyTorch model
					__lowerCAmelCase	   =FunnelConfig.from_json_file(__lowerCamelCase	)
					print(f"""Building PyTorch model from configuration: {config}"""	)
					__lowerCAmelCase	   =FunnelBaseModel(__lowerCamelCase	) if base_model else FunnelModel(__lowerCamelCase	)

					# Load weights from tf checkpoint
					load_tf_weights_in_funnel(__lowerCamelCase				,   __lowerCamelCase				,   __lowerCamelCase	)

					# Save pytorch-model
					print(f"""Save PyTorch model to {pytorch_dump_path}"""	)
					torch.save(model.state_dict()				,   __lowerCamelCase	)


if __name__ == "__main__":
				lowercase_	       =			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(
				    '''--config_file''',
				    default=None,
				    type=str,
				    required=True,
				    help='''The config json file corresponding to the pre-trained model. \nThis 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(
				    '''--base_model''', action='''store_true''', help='''Whether you want just the base model (no decoder) or not.'''
				)
				lowercase_	       =			parser.parse_args()
				convert_tf_checkpoint_to_pytorch(
				    args.tf_checkpoint_path, args.config_file, args.pytorch_dump_path, args.base_model
				)









from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


lowercase_	       =			{
    '''configuration_blip_2''': [
        '''BLIP_2_PRETRAINED_CONFIG_ARCHIVE_MAP''',
        '''Blip2Config''',
        '''Blip2QFormerConfig''',
        '''Blip2VisionConfig''',
    ],
    '''processing_blip_2''': ['''Blip2Processor'''],
}

try:
				if not is_torch_available():
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				pass
else:
				lowercase_	       =			[
				    '''BLIP_2_PRETRAINED_MODEL_ARCHIVE_LIST''',
				    '''Blip2Model''',
				    '''Blip2QFormerModel''',
				    '''Blip2PreTrainedModel''',
				    '''Blip2ForConditionalGeneration''',
				    '''Blip2VisionModel''',
				]

if TYPE_CHECKING:
				from .configuration_blip_a import (
				    BLIP_2_PRETRAINED_CONFIG_ARCHIVE_MAP,
				    BlipaConfig,
				    BlipaQFormerConfig,
				    BlipaVisionConfig,
				)
				from .processing_blip_a import BlipaProcessor

				try:
								if not is_torch_available():
												raise OptionalDependencyNotAvailable()
				except OptionalDependencyNotAvailable:
								pass
				else:
								from .modeling_blip_a import (
								    BLIP_2_PRETRAINED_MODEL_ARCHIVE_LIST,
								    BlipaForConditionalGeneration,
								    BlipaModel,
								    BlipaPreTrainedModel,
								    BlipaQFormerModel,
								    BlipaVisionModel,
								)

else:
				import sys

				lowercase_	       =			_LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)




