from ...utils import (
    OptionalDependencyNotAvailable,
    is_torch_available,
    is_transformers_available,
    is_transformers_version,
)


try:
  if not (is_transformers_available() and is_torch_available()):
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  from ...utils.dummy_torch_and_transformers_objects import (
      ImageTextPipelineOutput,
      UniDiffuserPipeline,
  )
else:
  from .modeling_text_decoder import UniDiffuserTextDecoder
  from .modeling_uvit import UniDiffuserModel, UTransformeraDModel
  from .pipeline_unidiffuser import ImageTextPipelineOutput, UniDiffuserPipeline
import os
import time

import numpy as np
import onnxruntime as ort


UpperCAmelCase_			    =							'''1'''
UpperCAmelCase_			    =							'''0'''
UpperCAmelCase_			    =							'''1'''

UpperCAmelCase_			    =							ort.SessionOptions()
UpperCAmelCase_			    =							ort.GraphOptimizationLevel.ORT_DISABLE_ALL
print('''Create inference session...''')
UpperCAmelCase_			    =							['''TensorrtExecutionProvider''', '''CUDAExecutionProvider''']
UpperCAmelCase_			    =							ort.InferenceSession('''model.onnx''', sess_options=sess_opt, providers=execution_provider)
UpperCAmelCase_			    =							ort.RunOptions()

UpperCAmelCase_			    =							1_2_8
UpperCAmelCase_			    =							1
UpperCAmelCase_			    =							np.ones((batch, sequence), dtype=np.intaa)
UpperCAmelCase_			    =							np.ones((batch, sequence), dtype=np.intaa)
UpperCAmelCase_			    =							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...''')
UpperCAmelCase_			    =							time.time()
UpperCAmelCase_			    =							2_0_0_0
UpperCAmelCase_			    =							{}
for iter in range(max_iters):
  UpperCAmelCase_			    =							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) * 1_0_0_0 / max_iters))