





'''simple docstring'''


from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_flax_available,
    is_sentencepiece_available,
    is_tf_available,
    is_tokenizers_available,
    is_torch_available,
)


lowerCAmelCase_   :   str       =					{
    "configuration_albert": ["ALBERT_PRETRAINED_CONFIG_ARCHIVE_MAP", "AlbertConfig", "AlbertOnnxConfig"],
}

try:
		if not is_sentencepiece_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		lowerCAmelCase_   :   int       =					["AlbertTokenizer"]

try:
		if not is_tokenizers_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		lowerCAmelCase_   :   str       =					["AlbertTokenizerFast"]

try:
		if not is_torch_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		lowerCAmelCase_   :   Optional[Any]       =					[
		    "ALBERT_PRETRAINED_MODEL_ARCHIVE_LIST",
		    "AlbertForMaskedLM",
		    "AlbertForMultipleChoice",
		    "AlbertForPreTraining",
		    "AlbertForQuestionAnswering",
		    "AlbertForSequenceClassification",
		    "AlbertForTokenClassification",
		    "AlbertModel",
		    "AlbertPreTrainedModel",
		    "load_tf_weights_in_albert",
		]

try:
		if not is_tf_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		lowerCAmelCase_   :   Optional[Any]       =					[
		    "TF_ALBERT_PRETRAINED_MODEL_ARCHIVE_LIST",
		    "TFAlbertForMaskedLM",
		    "TFAlbertForMultipleChoice",
		    "TFAlbertForPreTraining",
		    "TFAlbertForQuestionAnswering",
		    "TFAlbertForSequenceClassification",
		    "TFAlbertForTokenClassification",
		    "TFAlbertMainLayer",
		    "TFAlbertModel",
		    "TFAlbertPreTrainedModel",
		]

try:
		if not is_flax_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		lowerCAmelCase_   :   int       =					[
		    "FlaxAlbertForMaskedLM",
		    "FlaxAlbertForMultipleChoice",
		    "FlaxAlbertForPreTraining",
		    "FlaxAlbertForQuestionAnswering",
		    "FlaxAlbertForSequenceClassification",
		    "FlaxAlbertForTokenClassification",
		    "FlaxAlbertModel",
		    "FlaxAlbertPreTrainedModel",
		]

if TYPE_CHECKING:
		from .configuration_albert import ALBERT_PRETRAINED_CONFIG_ARCHIVE_MAP, AlbertConfig, AlbertOnnxConfig

		try:
				if not is_sentencepiece_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .tokenization_albert import AlbertTokenizer

		try:
				if not is_tokenizers_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .tokenization_albert_fast import AlbertTokenizerFast

		try:
				if not is_torch_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .modeling_albert import (
				    ALBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
				    AlbertForMaskedLM,
				    AlbertForMultipleChoice,
				    AlbertForPreTraining,
				    AlbertForQuestionAnswering,
				    AlbertForSequenceClassification,
				    AlbertForTokenClassification,
				    AlbertModel,
				    AlbertPreTrainedModel,
				    load_tf_weights_in_albert,
				)

		try:
				if not is_tf_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .modeling_tf_albert import (
				    TF_ALBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
				    TFAlbertForMaskedLM,
				    TFAlbertForMultipleChoice,
				    TFAlbertForPreTraining,
				    TFAlbertForQuestionAnswering,
				    TFAlbertForSequenceClassification,
				    TFAlbertForTokenClassification,
				    TFAlbertMainLayer,
				    TFAlbertModel,
				    TFAlbertPreTrainedModel,
				)

		try:
				if not is_flax_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .modeling_flax_albert import (
				    FlaxAlbertForMaskedLM,
				    FlaxAlbertForMultipleChoice,
				    FlaxAlbertForPreTraining,
				    FlaxAlbertForQuestionAnswering,
				    FlaxAlbertForSequenceClassification,
				    FlaxAlbertForTokenClassification,
				    FlaxAlbertModel,
				    FlaxAlbertPreTrainedModel,
				)
else:
		import sys

		lowerCAmelCase_   :   Any       =					_LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)










'''simple docstring'''


import os
import time

import numpy as np
import onnxruntime as ort


lowerCAmelCase_   :   Optional[int]       =					"1"
lowerCAmelCase_   :   List[str]       =					"0"
lowerCAmelCase_   :   Tuple       =					"1"

lowerCAmelCase_   :   str       =					ort.SessionOptions()
lowerCAmelCase_   :   Tuple       =					ort.GraphOptimizationLevel.ORT_DISABLE_ALL
print("Create inference session...")
lowerCAmelCase_   :   Any       =					["TensorrtExecutionProvider", "CUDAExecutionProvider"]
lowerCAmelCase_   :   str       =					ort.InferenceSession("model.onnx", sess_options=sess_opt, providers=execution_provider)
lowerCAmelCase_   :   Tuple       =					ort.RunOptions()

lowerCAmelCase_   :   Optional[int]       =					128
lowerCAmelCase_   :   Union[str, Any]       =					1
lowerCAmelCase_   :   List[str]       =					np.ones((batch, sequence), dtype=np.intaa)
lowerCAmelCase_   :   Optional[Any]       =					np.ones((batch, sequence), dtype=np.intaa)
lowerCAmelCase_   :   str       =					np.ones((batch, sequence), dtype=np.intaa)

print("Warm up phase...")
sess.run(
    None,
    {
        sess.get_inputs()[0].name: input_ids,
        sess.get_inputs()[1].name: attention_mask,
        sess.get_inputs()[2].name: token_type_ids,
    },
    run_options=run_opt,
)

print("Start inference...")
lowerCAmelCase_   :   Tuple       =					time.time()
lowerCAmelCase_   :   int       =					2000
lowerCAmelCase_   :   Optional[Any]       =					{}
for iter in range(max_iters):
		lowerCAmelCase_   :   List[str]       =					sess.run(
		    None,
		    {
		        sess.get_inputs()[0].name: input_ids,
		        sess.get_inputs()[1].name: attention_mask,
		        sess.get_inputs()[2].name: token_type_ids,
		    },
		    run_options=run_opt,
		)
print("Average Inference Time = {:.3f} ms".format((time.time() - start_time) * 1000 / max_iters))



