code: def _run_test(
      input_features=None, output_features=None, combiner=None
  ):
      with tempfile.TemporaryDirectory() as tmpdir:
          input_features = input_features or [
              sequence_feature(encoder={"reduce_output": "sum"}),
              number_feature(),
          ]
          output_features = output_features or [
              category_feature(
                  decoder={"vocab_size": 2}, reduce_input="sum"
              )
          ]
          combiner = combiner or {"type": "concat"}
  
          csv_filename = os.path.join(tmpdir, "training.csv")
          data_csv = generate_data(
              input_features, output_features, csv_filename
          )
  
          config = {
              "input_features": input_features,
              "output_features": output_features,
              "combiner": combiner,
              TRAINER: {"epochs": 2, BATCH_SIZE: 128},
          }
  
          model = LudwigModel(config, backend=LocalTestBackend())
          _, _, output_directory = model.train(
              dataset=data_csv,
              output_directory=tmpdir,
          )
          model.predict(
              dataset=data_csv, output_directory=output_directory
          )
  
imports: import os
  import tempfile
  from typing import Dict
  import torch
  from marshmallow_dataclass import dataclass
  from torch import nn, Tensor
  from ludwig.api import LudwigModel
  from ludwig.combiners.combiners import Combiner, register_combiner
  from ludwig.constants import BATCH_SIZE, ENCODER_OUTPUT, LOGITS, MINIMIZE, NUMBER, TRAINER
  from ludwig.decoders.base import Decoder
  from ludwig.decoders.registry import register_decoder
  from ludwig.encoders.base import Encoder
  from ludwig.encoders.registry import register_encoder
  from ludwig.modules.loss_modules import LogitsInputsMixin, register_loss
  from ludwig.modules.metric_modules import LossMetric, register_metric
  from ludwig.schema import utils
  from ludwig.schema.combiners.base import BaseCombinerConfig
  from ludwig.schema.combiners.utils import register_combiner_config
  from ludwig.schema.decoders.base import BaseDecoderConfig
  from ludwig.schema.decoders.utils import register_decoder_config
  from ludwig.schema.encoders.base import BaseEncoderConfig
  from ludwig.schema.encoders.utils import register_encoder_config
  from ludwig.schema.features.loss.loss import BaseLossConfig
  from ludwig.schema.features.loss.loss import register_loss
  from tests.integration_tests.utils import category_feature, generate_data, LocalTestBackend, number_feature, sequence_feature
label_desc: Use image node_id 4 for calling a global function with example usage: _run_test(input_features, output_features, combiner) without return types