code: def generate_sequence_training_data():
      input_features = [
          sequence_feature(
              encoder={
                  "vocab_size": TEST_VOCAB_SIZE,
                  "embedding_size": TEST_EMBEDDING_SIZE,
                  "state_size": TEST_STATE_SIZE,
                  "hidden_size": TEST_HIDDEN_SIZE,
                  "num_filters": TEST_NUM_FILTERS,
                  "min_len": 5,
                  "max_len": 10,
                  "type": "rnn",
                  "cell_type": "lstm",
              }
          )
      ]
  
      output_features = [
          sequence_feature(
              decoder={
                  "type": "generator",
                  "min_len": 5,
                  "max_len": 10,
                  "cell_type": "lstm",
                  "attention": "bahdanau",
              }
          )
      ]
  
      # generate synthetic data set testing
      dataset = build_synthetic_dataset(
          150,
          copy.deepcopy(input_features)
          + copy.deepcopy(output_features),
      )
      raw_data = "\n".join([r[0] + "," + r[1] for r in dataset])
      df = pd.read_csv(StringIO(raw_data))
  
      return df, input_features, output_features
  
file_path: ludwig/tests/integration_tests/test_sequence_features.py
imports: import contextlib
  import copy
  from io import StringIO
  import pandas
  import pytest
  import torch
  from ludwig.api import LudwigModel
  from ludwig.constants import DECODER, ENCODER_OUTPUT_STATE, LOGITS
  from ludwig.data.dataset_synthesizer import build_synthetic_dataset
  from ludwig.data.preprocessing import preprocess_for_training
  from ludwig.features.feature_registries import update_config_with_metadata
  from tests.integration_tests.utils import generate_data, run_experiment, sequence_feature
label_desc: Use image node_id 1 for calling a global function with example usage: generate_sequence_training_data() and returns: df,  input_features,  output_features