code: def build_engine(
      onnx_path,
      output_path,
      fp16,
      input_profile=None,
      enable_refit=False,
      enable_preview=False,
      timing_cache=None,
      workspace_size=0,
  ):
      print(f"Building TensorRT engine for {onnx_path}: {output_path}")
      p = Profile()
      if input_profile:
          for name, dims in input_profile.items():
              assert len(dims) == 3
              p.add(name, min=dims[0], opt=dims[1], max=dims[2])
  
      preview_features = None
  
      config_kwargs = {}
      if workspace_size > 0:
          config_kwargs["memory_pool_limits"] = {
              trt.MemoryPoolType.WORKSPACE: workspace_size
          }
      engine = engine_from_network(
          network_from_onnx_path(onnx_path),
          config=CreateConfig(
              fp16=fp16,
              refittable=enable_refit,
              profiles=[p],
              preview_features=preview_features,
              load_timing_cache=timing_cache,
              **config_kwargs,
          ),
          save_timing_cache=timing_cache,
      )
      save_engine(engine, path=output_path)
  
label_desc: Use image node_id 1 for calling a global function with example usage: build_engine(onnx_path, output_path, fp16, input_profile, enable_refit, enable_preview, timing_cache, workspace_size) without return types