code: def test_p13n_performance(self):
      test_file_name = (
          TestFileName.TEST_PERSONALIZATION_OPPOSITE_INPUTS_TSV
      )
      baseline_config, baseline_task = self._get_baseline_task(
          test_file_name=test_file_name
      )
      p13n_config, p13n_task = self._get_p13n_task(
          test_file_name=test_file_name
      )
  
      orig_p13n_model = copy.deepcopy(p13n_task.model)
  
      baseline_model, baseline_metrics = baseline_task.train(
          baseline_config
      )
      p13n_model, p13n_metrics = p13n_task.train(p13n_config)
  
      # Verify that the training changes the p13n_model.
      self.assertNotEqual(
          get_mismatched_param([orig_p13n_model, p13n_model]), ""
      )
  
      # The dataset has two users with opposite inputs so a personalized model
      # is expected to have better performance.
      epsilon = 0.15
      self.assertGreater(
          p13n_metrics.roc_auc - baseline_metrics.roc_auc, epsilon
      )
  
imports: import copy
  import unittest
  from typing import Tuple, Type
  import torch
  from pytext.config import LATEST_VERSION, PyTextConfig
  from pytext.data import Batcher, Data
  from pytext.data.sources.tsv import TSVDataSource
  from pytext.data.tensorizers import FloatListTensorizer
  from pytext.models.doc_model import DocModel, PersonalizedDocModel
  from pytext.models.model import Model
  from pytext.optimizer.optimizers import SGD
  from pytext.task.new_task import NewTask
  from pytext.task.tasks import DocumentClassificationTask
  from pytext.trainers import TaskTrainer
  from pytext.utils.model import get_mismatched_param
  from pytext.utils.test import import_tests_module
label_desc: Use image node_id 5 for calling the PersonalizationTrainerTest obj's underlying member method code with example usage: obj.test_p13n_performance() without return types