code: def do_eval(
      config: ConfigSchema,
      model: Optional[MultiRelationEmbedder] = None,
      evaluator: Optional[AbstractBatchProcessor] = None,
      subprocess_init: Optional[Callable[[], None]] = None,
  ) -> None:
      # Create and run the generator until exhaustion.
      for _ in do_eval_and_report_stats(
          config, model, evaluator, subprocess_init
      ):
          pass
  
imports: import argparse
  import logging
  import time
  from functools import partial
  from typing import Callable, Generator, List, Optional, Tuple
  import torch
  from torchbiggraph.batching import AbstractBatchProcessor, call, process_in_batches
  from torchbiggraph.bucket_scheduling import create_buckets_ordered_lexicographically
  from torchbiggraph.checkpoint_manager import CheckpointManager
  from torchbiggraph.config import add_to_sys_path, ConfigFileLoader, ConfigSchema
  from torchbiggraph.edgelist import EdgeList
  from torchbiggraph.graph_storages import EDGE_STORAGES
  from torchbiggraph.losses import LOSS_FUNCTIONS
  from torchbiggraph.model import make_model, MultiRelationEmbedder, Scores
  from torchbiggraph.stats import average_of_sums, Stats
  from torchbiggraph.types import Bucket, EntityName, Partition, UNPARTITIONED
  from torchbiggraph.util import compute_randomized_auc, create_pool, EmbeddingHolder, get_async_result, get_num_workers, set_logging_verbosity, setup_logging, split_almost_equally, SubprocessInitializer, tag_logs_with_process_name
label_desc: Use image node_id 2 for calling a global function with example usage: do_eval(config, model, evaluator, subprocess_init) without return types