class_docstr: A nn.Module subclass that wraps the inference preprocessor, predictor, and postprocessor.
class_docstr_tok: ["A","nn.Module","subclass","that","wraps","the","inference","preprocessor",",","predictor",",","and","postprocessor","."]
docstr: Create an InferenceModule from a trained LudwigModel.
docstr_tok: ["Create","an","InferenceModule","from","a","trained","LudwigModel","."]
code: def from_ludwig_model(
      cls: "InferenceModule",
      model: "BaseModel",
      config: ModelConfigDict,
      training_set_metadata: TrainingSetMetadataDict,
      device: Optional[TorchDevice] = None,
  ):
      """Create an InferenceModule from a trained LudwigModel."""
      if device is None:
          logger.info(
              f'No device specified. Loading using device "{DEVICE}".'
          )
          device = DEVICE
  
      stage_to_module = _init_inference_stages_from_ludwig_model(
          model,
          config,
          training_set_metadata,
          device=device,
          scripted=True,
      )
  
      return cls(
          stage_to_module[PREPROCESSOR],
          stage_to_module[PREDICTOR],
          stage_to_module[POSTPROCESSOR],
          config=config,
          training_set_metadata=training_set_metadata,
      )
  
imports: import logging
  import os
  from typing import Any, Dict, Optional, TYPE_CHECKING, Union
  import pandas
  import torch
  from torch import nn
  from ludwig.constants import NAME, POSTPROCESSOR, PREDICTOR, PREPROCESSOR, TYPE
  from ludwig.data.postprocessing import convert_dict_to_df
  from ludwig.data.preprocessing import load_metadata
  from ludwig.features.feature_registries import get_input_type_registry
  from ludwig.features.feature_utils import get_module_dict_key_from_name, get_name_from_module_dict_key
  from ludwig.globals import MODEL_HYPERPARAMETERS_FILE_NAME, TRAIN_SET_METADATA_FILE_NAME
  from ludwig.types import ModelConfigDict, TrainingSetMetadataDict
  from ludwig.utils import output_feature_utils
  from ludwig.utils.data_utils import load_json, save_json
  from ludwig.utils.inference_utils import get_filename_from_stage, to_inference_module_input_from_dataframe
  from ludwig.utils.misc_utils import get_from_registry
  from ludwig.utils.output_feature_utils import get_feature_name_from_concat_name, get_tensor_name_from_concat_name
  from ludwig.utils.torch_utils import DEVICE
  from ludwig.utils.types import TorchDevice, TorchscriptPreprocessingInput
label_desc: Use image node_id 7 for calling the InferenceModule obj's underlying member method code with example usage: obj.from_ludwig_model(cls, model, config, training_set_metadata, device) and returns: cls