





import argparse
import json
from collections import OrderedDict
from pathlib import Path

import requests
import torch
from huggingface_hub import hf_hub_download
from PIL import Image

from transformers import DetrConfig, DetrForObjectDetection, DetrForSegmentation, DetrImageProcessor
from transformers.utils import logging


logging.set_verbosity_info()
_UpperCAmelCase										=					logging.get_logger(__name__)

# here we list all keys to be renamed (original name on the left, our name on the right)
_UpperCAmelCase										=					[]
for i in range(6):
     # encoder layers: output projection, 2 feedforward neural networks and 2 layernorms
     rename_keys.append(
         (f'''transformer.encoder.layers.{i}.self_attn.out_proj.weight''', f'''encoder.layers.{i}.self_attn.out_proj.weight''')
     )
     rename_keys.append(
         (f'''transformer.encoder.layers.{i}.self_attn.out_proj.bias''', f'''encoder.layers.{i}.self_attn.out_proj.bias''')
     )
     rename_keys.append((f'''transformer.encoder.layers.{i}.linear1.weight''', f'''encoder.layers.{i}.fc1.weight'''))
     rename_keys.append((f'''transformer.encoder.layers.{i}.linear1.bias''', f'''encoder.layers.{i}.fc1.bias'''))
     rename_keys.append((f'''transformer.encoder.layers.{i}.linear2.weight''', f'''encoder.layers.{i}.fc2.weight'''))
     rename_keys.append((f'''transformer.encoder.layers.{i}.linear2.bias''', f'''encoder.layers.{i}.fc2.bias'''))
     rename_keys.append(
         (f'''transformer.encoder.layers.{i}.norm1.weight''', f'''encoder.layers.{i}.self_attn_layer_norm.weight''')
     )
     rename_keys.append((f'''transformer.encoder.layers.{i}.norm1.bias''', f'''encoder.layers.{i}.self_attn_layer_norm.bias'''))
     rename_keys.append((f'''transformer.encoder.layers.{i}.norm2.weight''', f'''encoder.layers.{i}.final_layer_norm.weight'''))
     rename_keys.append((f'''transformer.encoder.layers.{i}.norm2.bias''', f'''encoder.layers.{i}.final_layer_norm.bias'''))
     # decoder layers: 2 times output projection, 2 feedforward neural networks and 3 layernorms
     rename_keys.append(
         (f'''transformer.decoder.layers.{i}.self_attn.out_proj.weight''', f'''decoder.layers.{i}.self_attn.out_proj.weight''')
     )
     rename_keys.append(
         (f'''transformer.decoder.layers.{i}.self_attn.out_proj.bias''', f'''decoder.layers.{i}.self_attn.out_proj.bias''')
     )
     rename_keys.append(
         (
             f'''transformer.decoder.layers.{i}.multihead_attn.out_proj.weight''',
             f'''decoder.layers.{i}.encoder_attn.out_proj.weight''',
         )
     )
     rename_keys.append(
         (
             f'''transformer.decoder.layers.{i}.multihead_attn.out_proj.bias''',
             f'''decoder.layers.{i}.encoder_attn.out_proj.bias''',
         )
     )
     rename_keys.append((f'''transformer.decoder.layers.{i}.linear1.weight''', f'''decoder.layers.{i}.fc1.weight'''))
     rename_keys.append((f'''transformer.decoder.layers.{i}.linear1.bias''', f'''decoder.layers.{i}.fc1.bias'''))
     rename_keys.append((f'''transformer.decoder.layers.{i}.linear2.weight''', f'''decoder.layers.{i}.fc2.weight'''))
     rename_keys.append((f'''transformer.decoder.layers.{i}.linear2.bias''', f'''decoder.layers.{i}.fc2.bias'''))
     rename_keys.append(
         (f'''transformer.decoder.layers.{i}.norm1.weight''', f'''decoder.layers.{i}.self_attn_layer_norm.weight''')
     )
     rename_keys.append((f'''transformer.decoder.layers.{i}.norm1.bias''', f'''decoder.layers.{i}.self_attn_layer_norm.bias'''))
     rename_keys.append(
         (f'''transformer.decoder.layers.{i}.norm2.weight''', f'''decoder.layers.{i}.encoder_attn_layer_norm.weight''')
     )
     rename_keys.append(
         (f'''transformer.decoder.layers.{i}.norm2.bias''', f'''decoder.layers.{i}.encoder_attn_layer_norm.bias''')
     )
     rename_keys.append((f'''transformer.decoder.layers.{i}.norm3.weight''', f'''decoder.layers.{i}.final_layer_norm.weight'''))
     rename_keys.append((f'''transformer.decoder.layers.{i}.norm3.bias''', f'''decoder.layers.{i}.final_layer_norm.bias'''))

# convolutional projection + query embeddings + layernorm of decoder + class and bounding box heads
rename_keys.extend(
    [
        ('input_proj.weight', 'input_projection.weight'),
        ('input_proj.bias', 'input_projection.bias'),
        ('query_embed.weight', 'query_position_embeddings.weight'),
        ('transformer.decoder.norm.weight', 'decoder.layernorm.weight'),
        ('transformer.decoder.norm.bias', 'decoder.layernorm.bias'),
        ('class_embed.weight', 'class_labels_classifier.weight'),
        ('class_embed.bias', 'class_labels_classifier.bias'),
        ('bbox_embed.layers.0.weight', 'bbox_predictor.layers.0.weight'),
        ('bbox_embed.layers.0.bias', 'bbox_predictor.layers.0.bias'),
        ('bbox_embed.layers.1.weight', 'bbox_predictor.layers.1.weight'),
        ('bbox_embed.layers.1.bias', 'bbox_predictor.layers.1.bias'),
        ('bbox_embed.layers.2.weight', 'bbox_predictor.layers.2.weight'),
        ('bbox_embed.layers.2.bias', 'bbox_predictor.layers.2.bias'),
    ]
)




def 			lowerCAmelCase_			(				UpperCamelCase_       ,		UpperCamelCase_       ,		UpperCamelCase_	)  ->		Optional[Any]:
       UpperCamelCase_ 							=	state_dict.pop(UpperCamelCase_	)
       UpperCamelCase_ 							=	val




def 			lowerCAmelCase_			(				UpperCamelCase_	)  ->		List[str]:
       UpperCamelCase_ 							=	OrderedDict()
       for key, value in state_dict.items():
              if "backbone.0.body" in key:
                     UpperCamelCase_ 							=	key.replace("backbone.0.body"       ,		"backbone.conv_encoder.model"	)
                     UpperCamelCase_ 							=	value
              else:
                     UpperCamelCase_ 							=	value

       return new_state_dict




def 			lowerCAmelCase_			(				UpperCamelCase_       ,		UpperCamelCase_=False	)  ->		Optional[Any]:
       UpperCamelCase_ 							=	""
       if is_panoptic:
              UpperCamelCase_ 							=	"detr."

       # first: transformer encoder
       for i in range(6	):
              # read in weights + bias of input projection layer (in PyTorch's MultiHeadAttention, this is a single matrix + bias)
              UpperCamelCase_ 							=	state_dict.pop(F'''{prefix}transformer.encoder.layers.{i}.self_attn.in_proj_weight'''	)
              UpperCamelCase_ 							=	state_dict.pop(F'''{prefix}transformer.encoder.layers.{i}.self_attn.in_proj_bias'''	)
              # next, add query, keys and values (in that order) to the state dict
              UpperCamelCase_ 							=	in_proj_weight[:256, :]
              UpperCamelCase_ 							=	in_proj_bias[:256]
              UpperCamelCase_ 							=	in_proj_weight[256:512, :]
              UpperCamelCase_ 							=	in_proj_bias[256:512]
              UpperCamelCase_ 							=	in_proj_weight[-256:, :]
              UpperCamelCase_ 							=	in_proj_bias[-256:]
       # next: transformer decoder (which is a bit more complex because it also includes cross-attention)
       for i in range(6	):
              # read in weights + bias of input projection layer of self-attention
              UpperCamelCase_ 							=	state_dict.pop(F'''{prefix}transformer.decoder.layers.{i}.self_attn.in_proj_weight'''	)
              UpperCamelCase_ 							=	state_dict.pop(F'''{prefix}transformer.decoder.layers.{i}.self_attn.in_proj_bias'''	)
              # next, add query, keys and values (in that order) to the state dict
              UpperCamelCase_ 							=	in_proj_weight[:256, :]
              UpperCamelCase_ 							=	in_proj_bias[:256]
              UpperCamelCase_ 							=	in_proj_weight[256:512, :]
              UpperCamelCase_ 							=	in_proj_bias[256:512]
              UpperCamelCase_ 							=	in_proj_weight[-256:, :]
              UpperCamelCase_ 							=	in_proj_bias[-256:]
              # read in weights + bias of input projection layer of cross-attention
              UpperCamelCase_ 							=	state_dict.pop(
                  F'''{prefix}transformer.decoder.layers.{i}.multihead_attn.in_proj_weight'''	)
              UpperCamelCase_ 							=	state_dict.pop(F'''{prefix}transformer.decoder.layers.{i}.multihead_attn.in_proj_bias'''	)
              # next, add query, keys and values (in that order) of cross-attention to the state dict
              UpperCamelCase_ 							=	in_proj_weight_cross_attn[:256, :]
              UpperCamelCase_ 							=	in_proj_bias_cross_attn[:256]
              UpperCamelCase_ 							=	in_proj_weight_cross_attn[256:512, :]
              UpperCamelCase_ 							=	in_proj_bias_cross_attn[256:512]
              UpperCamelCase_ 							=	in_proj_weight_cross_attn[-256:, :]
              UpperCamelCase_ 							=	in_proj_bias_cross_attn[-256:]




def 			lowerCAmelCase_			(				)  ->		Optional[Any]:
       UpperCamelCase_ 							=	"http://images.cocodataset.org/val2017/000000039769.jpg"
       UpperCamelCase_ 							=	Image.open(requests.get(UpperCamelCase_       ,		stream=UpperCamelCase_	).raw	)

       return im




@torch.no_grad()
def 			lowerCAmelCase_			(				UpperCamelCase_       ,		UpperCamelCase_	)  ->		int:
       UpperCamelCase_ 							=	DetrConfig()
       # set backbone and dilation attributes
       if "resnet101" in model_name:
              UpperCamelCase_ 							=	"resnet101"
       if "dc5" in model_name:
              UpperCamelCase_ 							=	True
       UpperCamelCase_ 							=	"panoptic" in model_name
       if is_panoptic:
              UpperCamelCase_ 							=	250
       else:
              UpperCamelCase_ 							=	91
              UpperCamelCase_ 							=	"huggingface/label-files"
              UpperCamelCase_ 							=	"coco-detection-id2label.json"
              UpperCamelCase_ 							=	json.load(open(hf_hub_download(UpperCamelCase_       ,		UpperCamelCase_       ,		repo_type="dataset"	)       ,		"r"	)	)
              UpperCamelCase_ 							=	{int(UpperCamelCase_	): v for k, v in idalabel.items()}
              UpperCamelCase_ 							=	idalabel
              UpperCamelCase_ 							=	{v: k for k, v in idalabel.items()}

       # load image processor
       UpperCamelCase_ 							=	"coco_panoptic" if is_panoptic else "coco_detection"
       UpperCamelCase_ 							=	DetrImageProcessor(format=UpperCamelCase_	)

       # prepare image
       UpperCamelCase_ 							=	prepare_img()
       UpperCamelCase_ 							=	image_processor(images=UpperCamelCase_       ,		return_tensors="pt"	)
       UpperCamelCase_ 							=	encoding["pixel_values"]

       logger.info(F'''Converting model {model_name}...'''	)

       # load original model from torch hub
       UpperCamelCase_ 							=	torch.hub.load("facebookresearch/detr"       ,		UpperCamelCase_       ,		pretrained=UpperCamelCase_	).eval()
       UpperCamelCase_ 							=	detr.state_dict()
       # rename keys
       for src, dest in rename_keys:
              if is_panoptic:
                     UpperCamelCase_ 							=	"detr." + src
              rename_key(UpperCamelCase_       ,		UpperCamelCase_       ,		UpperCamelCase_	)
       UpperCamelCase_ 							=	rename_backbone_keys(UpperCamelCase_	)
       # query, key and value matrices need special treatment
       read_in_q_k_v(UpperCamelCase_       ,		is_panoptic=UpperCamelCase_	)
       # important: we need to prepend a prefix to each of the base model keys as the head models use different attributes for them
       UpperCamelCase_ 							=	"detr.model." if is_panoptic else "model."
       for key in state_dict.copy().keys():
              if is_panoptic:
                     if (
                         key.startswith("detr"	)
                         and not key.startswith("class_labels_classifier"	)
                         and not key.startswith("bbox_predictor"	)
                     ):
                            UpperCamelCase_ 							=	state_dict.pop(UpperCamelCase_	)
                            UpperCamelCase_ 							=	val
                     elif "class_labels_classifier" in key or "bbox_predictor" in key:
                            UpperCamelCase_ 							=	state_dict.pop(UpperCamelCase_	)
                            UpperCamelCase_ 							=	val
                     elif key.startswith("bbox_attention"	) or key.startswith("mask_head"	):
                            continue
                     else:
                            UpperCamelCase_ 							=	state_dict.pop(UpperCamelCase_	)
                            UpperCamelCase_ 							=	val
              else:
                     if not key.startswith("class_labels_classifier"	) and not key.startswith("bbox_predictor"	):
                            UpperCamelCase_ 							=	state_dict.pop(UpperCamelCase_	)
                            UpperCamelCase_ 							=	val
    # finally, create HuggingFace model and load state dict
       UpperCamelCase_ 							=	DetrForSegmentation(UpperCamelCase_	) if is_panoptic else DetrForObjectDetection(UpperCamelCase_	)
       model.load_state_dict(UpperCamelCase_	)
       model.eval()
       # verify our conversion
       UpperCamelCase_ 							=	detr(UpperCamelCase_	)
       UpperCamelCase_ 							=	model(UpperCamelCase_	)
       assert torch.allclose(outputs.logits       ,		original_outputs["pred_logits"]       ,		atol=1e-4	)
       assert torch.allclose(outputs.pred_boxes       ,		original_outputs["pred_boxes"]       ,		atol=1e-4	)
       if is_panoptic:
              assert torch.allclose(outputs.pred_masks       ,		original_outputs["pred_masks"]       ,		atol=1e-4	)

       # Save model and image processor
       logger.info(F'''Saving PyTorch model and image processor to {pytorch_dump_folder_path}...'''	)
       Path(UpperCamelCase_	).mkdir(exist_ok=UpperCamelCase_	)
       model.save_pretrained(UpperCamelCase_	)
       image_processor.save_pretrained(UpperCamelCase_	)


if __name__ == "__main__":
     _UpperCAmelCase										=					argparse.ArgumentParser()

     parser.add_argument(
         '--model_name', default='detr_resnet50', type=str, help='Name of the DETR model you\'d like to convert.'
     )
     parser.add_argument(
         '--pytorch_dump_folder_path', default=None, type=str, help='Path to the folder to output PyTorch model.'
     )
     _UpperCAmelCase										=					parser.parse_args()
     convert_detr_checkpoint(args.model_name, args.pytorch_dump_folder_path)








import unittest

from transformers.testing_utils import is_torch_available, require_torch, tooslow

from ...generation.test_utils import torch_device
from ...test_configuration_common import ConfigTester
from ...test_modeling_common import ModelTesterMixin, ids_tensor
from ...test_pipeline_mixin import PipelineTesterMixin


if is_torch_available():
     import torch

     from transformers import (
         CpmAntConfig,
         CpmAntForCausalLM,
         CpmAntModel,
         CpmAntTokenizer,
     )



@require_torch
class 				_UpperCamelCase       :

       def __init__(		self:			Optional[Any]       , _SCREAMING_SNAKE_CASE:			Any       , _SCREAMING_SNAKE_CASE:			List[Any]=2       , _SCREAMING_SNAKE_CASE:			List[str]=8       , _SCREAMING_SNAKE_CASE:			Optional[Any]=True       , _SCREAMING_SNAKE_CASE:			List[str]=False       , _SCREAMING_SNAKE_CASE:			int=False       , _SCREAMING_SNAKE_CASE:			Optional[Any]=False       , _SCREAMING_SNAKE_CASE:			List[str]=False       , _SCREAMING_SNAKE_CASE:			List[Any]=99       , _SCREAMING_SNAKE_CASE:			str=32       , _SCREAMING_SNAKE_CASE:			Tuple=3       , _SCREAMING_SNAKE_CASE:			Union[str, Any]=4       , _SCREAMING_SNAKE_CASE:			List[Any]=37       , _SCREAMING_SNAKE_CASE:			int=32       , _SCREAMING_SNAKE_CASE:			int=128       , _SCREAMING_SNAKE_CASE:			Dict=8       , _SCREAMING_SNAKE_CASE:			Optional[Any]=8       , _SCREAMING_SNAKE_CASE:			str=8       , _SCREAMING_SNAKE_CASE:			Dict=1.0       , _SCREAMING_SNAKE_CASE:			List[str]=True       , )							->			Optional[int]:




              """simple docstring"""


              UpperCamelCase_ 							=	parent
              UpperCamelCase_ 							=	batch_size
              UpperCamelCase_ 							=	seq_length
              UpperCamelCase_ 							=	is_training
              UpperCamelCase_ 							=	use_token_type_ids
              UpperCamelCase_ 							=	use_input_mask
              UpperCamelCase_ 							=	use_labels
              UpperCamelCase_ 							=	use_mc_token_ids
              UpperCamelCase_ 							=	vocab_size
              UpperCamelCase_ 							=	hidden_size
              UpperCamelCase_ 							=	num_hidden_layers
              UpperCamelCase_ 							=	num_attention_heads
              UpperCamelCase_ 							=	intermediate_size
              UpperCamelCase_ 							=	num_buckets
              UpperCamelCase_ 							=	max_distance
              UpperCamelCase_ 							=	prompt_length
              UpperCamelCase_ 							=	prompt_types
              UpperCamelCase_ 							=	segment_types
              UpperCamelCase_ 							=	init_std
              UpperCamelCase_ 							=	return_dict

       def lowercase			(		self:			Dict		)							->			str:




              """simple docstring"""


              UpperCamelCase_ 							=	{}
              UpperCamelCase_ 							=	ids_tensor([self.batch_size, self.seq_length]       , self.vocab_size		).type(torch.intaa		)
              UpperCamelCase_ 							=	False

              UpperCamelCase_ 							=	self.get_config()

              return (config, input_ids)

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




              """simple docstring"""


              return CpmAntConfig(
                  vocab_size=self.vocab_size       , hidden_size=self.hidden_size       , num_hidden_layers=self.num_hidden_layers       , num_attention_heads=self.num_attention_heads       , dim_ff=self.intermediate_size       , position_bias_num_buckets=self.num_buckets       , position_bias_max_distance=self.max_distance       , prompt_types=self.prompt_types       , prompt_length=self.prompt_length       , segment_types=self.segment_types       , use_cache=_SCREAMING_SNAKE_CASE       , init_std=self.init_std       , return_dict=self.return_dict       , )

       def lowercase			(		self:			Dict       , _SCREAMING_SNAKE_CASE:			Union[str, Any]       , _SCREAMING_SNAKE_CASE:			List[str]       , *_SCREAMING_SNAKE_CASE:			Tuple		)							->			str:




              """simple docstring"""


              UpperCamelCase_ 							=	CpmAntModel(config=_SCREAMING_SNAKE_CASE		)
              model.to(_SCREAMING_SNAKE_CASE		)
              model.eval()

              UpperCamelCase_ 							=	model(**_SCREAMING_SNAKE_CASE		).last_hidden_state

              self.parent.assertEqual(hidden_states.shape       , (self.batch_size, self.seq_length, config.hidden_size)		)

       def lowercase			(		self:			Optional[Any]       , _SCREAMING_SNAKE_CASE:			Tuple       , _SCREAMING_SNAKE_CASE:			Optional[Any]       , *_SCREAMING_SNAKE_CASE:			Dict		)							->			Optional[int]:




              """simple docstring"""


              UpperCamelCase_ 							=	CpmAntForCausalLM(_SCREAMING_SNAKE_CASE		)
              model.to(_SCREAMING_SNAKE_CASE		)
              UpperCamelCase_ 							=	input_ids["input_ids"].to(_SCREAMING_SNAKE_CASE		)
              model.eval()

              UpperCamelCase_ 							=	model(**_SCREAMING_SNAKE_CASE		)
              self.parent.assertEqual(
                  model_output.logits.shape       , (self.batch_size, self.seq_length, config.vocab_size + config.prompt_types * config.prompt_length)       , )



       def lowercase			(		self:			Any		)							->			Dict:




              """simple docstring"""


              UpperCamelCase_							,			UpperCamelCase_ 							=	self.prepare_config_and_inputs()
              return config, inputs_dict



@require_torch
class 				_UpperCamelCase       (						lowerCAmelCase_	,    lowerCAmelCase_	,    unittest.TestCase  ):
       _UpperCamelCase					:       Dict       = (CpmAntModel, CpmAntForCausalLM) if is_torch_available() else ()
       _UpperCamelCase					:       Union[str, Any]       = (
           {'''feature-extraction''': CpmAntModel, '''text-generation''': CpmAntForCausalLM} if is_torch_available() else {}
       )

       _UpperCamelCase					:       Optional[Any]       = False
       _UpperCamelCase					:       Dict       = False
       _UpperCamelCase					:       Any       = False
       _UpperCamelCase					:       Optional[Any]       = False
       _UpperCamelCase					:       Any       = False

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




              """simple docstring"""


              UpperCamelCase_ 							=	CpmAntModelTester(self		)
              UpperCamelCase_ 							=	ConfigTester(self       , config_class=_SCREAMING_SNAKE_CASE		)

       def lowercase			(		self:			str		)							->			Any:




              """simple docstring"""


              self.config_tester.create_and_test_config_common_properties()
              self.config_tester.create_and_test_config_to_json_string()
              self.config_tester.create_and_test_config_to_json_file()
              self.config_tester.create_and_test_config_from_and_save_pretrained()
              self.config_tester.check_config_can_be_init_without_params()
              self.config_tester.check_config_arguments_init()

       def lowercase			(		self:			Any		)							->			List[str]:




              """simple docstring"""


              unittest.skip("CPMAnt doesn't support input_embeds."		)(self.test_inputs_embeds		)

       def lowercase			(		self:			List[str]		)							->			Optional[Any]:




              """simple docstring"""


              unittest.skip(
                  "CPMAnt doesn't support retain grad in hidden_states or attentions, because prompt management will peel off the output.hidden_states from graph.\
                 So is attentions. We strongly recommand you use loss to tune model."		)(self.test_retain_grad_hidden_states_attentions		)

       def lowercase			(		self:			List[str]		)							->			Optional[Any]:




              """simple docstring"""


              UpperCamelCase_							,			UpperCamelCase_ 							=	self.model_tester.prepare_config_and_inputs()
              self.model_tester.create_and_check_cpmant_model(_SCREAMING_SNAKE_CASE       , _SCREAMING_SNAKE_CASE		)



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




              """simple docstring"""


              UpperCamelCase_							,			UpperCamelCase_ 							=	self.model_tester.prepare_config_and_inputs()
              self.model_tester.create_and_check_lm_head_model(_SCREAMING_SNAKE_CASE       , _SCREAMING_SNAKE_CASE		)



@require_torch
class 				_UpperCamelCase       (						unittest.TestCase  ):

       @tooslow
       def lowercase			(		self:			List[Any]		)							->			List[Any]:




              """simple docstring"""


              UpperCamelCase_ 							=	"今天天气真好！"
              UpperCamelCase_ 							=	"openbmb/cpm-ant-10b"
              UpperCamelCase_ 							=	CpmAntModel.from_pretrained(_SCREAMING_SNAKE_CASE		)
              UpperCamelCase_ 							=	CpmAntTokenizer.from_pretrained(_SCREAMING_SNAKE_CASE		)
              UpperCamelCase_ 							=	tokenizer(_SCREAMING_SNAKE_CASE       , return_tensors="pt"		)
              UpperCamelCase_ 							=	model(**_SCREAMING_SNAKE_CASE		).last_hidden_state

              UpperCamelCase_ 							=	torch.tensor(
                  [[[6.17_08, 5.92_44, 1.08_35], [6.52_07, 6.28_93, -11.33_24], [-1.01_07, -0.05_76, -5.95_77]]]       , )
              self.assertTrue(torch.allclose(hidden_states[:, :3, :3]       , _SCREAMING_SNAKE_CASE       , atol=1e-2		)		)



@require_torch
class 				_UpperCamelCase       (						unittest.TestCase  ):

       @tooslow
       def lowercase			(		self:			Optional[Any]		)							->			Union[str, Any]:




              """simple docstring"""


              UpperCamelCase_ 							=	"今天天气真好！"
              UpperCamelCase_ 							=	"openbmb/cpm-ant-10b"
              UpperCamelCase_ 							=	CpmAntForCausalLM.from_pretrained(_SCREAMING_SNAKE_CASE		)
              UpperCamelCase_ 							=	CpmAntTokenizer.from_pretrained(_SCREAMING_SNAKE_CASE		)
              UpperCamelCase_ 							=	tokenizer(_SCREAMING_SNAKE_CASE       , return_tensors="pt"		)
              UpperCamelCase_ 							=	model(**_SCREAMING_SNAKE_CASE		).logits

              UpperCamelCase_ 							=	torch.tensor(
                  [[[-6.42_67, -6.40_83, -6.39_58], [-5.88_02, -5.94_47, -5.78_11], [-5.38_96, -5.48_20, -5.42_95]]]       , )
              self.assertTrue(torch.allclose(hidden_states[:, :3, :3]       , _SCREAMING_SNAKE_CASE       , atol=1e-2		)		)

       @tooslow
       def lowercase			(		self:			Dict		)							->			Optional[int]:




              """simple docstring"""


              UpperCamelCase_ 							=	"openbmb/cpm-ant-10b"
              UpperCamelCase_ 							=	CpmAntForCausalLM.from_pretrained(_SCREAMING_SNAKE_CASE		)
              UpperCamelCase_ 							=	CpmAntTokenizer.from_pretrained(_SCREAMING_SNAKE_CASE		)
              UpperCamelCase_ 							=	"今天天气不错，"
              UpperCamelCase_ 							=	"今天天气不错，阳光明媚，我和妈妈一起去超市买东西。\n在超市里，我看到了一个很好玩的玩具，它的名字叫“机器人”。它有一个圆圆的脑袋，两只圆圆的眼睛，还有一个圆圆的"
              UpperCamelCase_ 							=	tokenizer(_SCREAMING_SNAKE_CASE       , return_tensors="pt"		)
              UpperCamelCase_ 							=	model.generate(**_SCREAMING_SNAKE_CASE		)
              UpperCamelCase_ 							=	tokenizer.batch_decode(_SCREAMING_SNAKE_CASE		)
              self.assertEqual(_SCREAMING_SNAKE_CASE       , _SCREAMING_SNAKE_CASE		)



       @tooslow
       def lowercase			(		self:			List[str]		)							->			Optional[Any]:




              """simple docstring"""


              UpperCamelCase_ 							=	"openbmb/cpm-ant-10b"
              UpperCamelCase_ 							=	CpmAntForCausalLM.from_pretrained(_SCREAMING_SNAKE_CASE		)
              UpperCamelCase_ 							=	CpmAntTokenizer.from_pretrained(_SCREAMING_SNAKE_CASE		)
              UpperCamelCase_ 							=	["今天天气不错，", "新年快乐，万事如意！"]
              UpperCamelCase_ 							=	[
                  "今天天气不错，阳光明媚，我和妈妈一起去超市买东西。\n在超市里，我看到了一个很好玩的玩具，它的名字叫“机器人”。它有一个圆圆的脑袋，两只圆圆的眼睛，还有一个圆圆的",
                  "新年快乐，万事如意！在这辞旧迎新的美好时刻，我谨代表《农村新技术》杂志社全体同仁，向一直以来关心、支持《农村新技术》杂志发展的各级领导、各界朋友和广大读者致以最诚挚的",
              ]
              UpperCamelCase_ 							=	tokenizer(_SCREAMING_SNAKE_CASE       , return_tensors="pt"       , padding=_SCREAMING_SNAKE_CASE		)
              UpperCamelCase_ 							=	model.generate(**_SCREAMING_SNAKE_CASE		)
              UpperCamelCase_ 							=	tokenizer.batch_decode(_SCREAMING_SNAKE_CASE		)
              self.assertEqual(_SCREAMING_SNAKE_CASE       , _SCREAMING_SNAKE_CASE		)

