code: def test_text_classifier_multi(results_base_path, tasks_base_path):
      flair.set_seed(123)
  
      flair_embeddings = FlairEmbeddings("news-forward-fast")
  
      corpus = ClassificationCorpus(
          tasks_base_path
          / "trivial"
          / "trivial_text_classification_single",
          label_type="city",
      )
      label_dict = corpus.make_label_dictionary(label_type="city")
  
      model: TextClassifier = TextClassifier(
          embeddings=DocumentPoolEmbeddings(
              [flair_embeddings], fine_tune_mode="linear"
          ),
          label_dictionary=label_dict,
          label_type="city",
      )
  
      trainer = ModelTrainer(model, corpus)
      trainer.train(
          results_base_path,
          mini_batch_size=2,
          max_epochs=1,
          shuffle=True,
      )
  
      del model
      train_log_file = results_base_path / "training.log"
      assert train_log_file.exists()
      lines = train_log_file.read_text(encoding="utf-8").split("\n")
      expected_substrings = [
          "compute on device: ",
          "Corpus: ",
          "- learning_rate: ",
          "patience",
          "embedding storage:",
          "epoch 1 - iter",
          "EPOCH 1 done: loss",
          "Results:",
      ]
      for expected_substring in expected_substrings:
          assert any(
              expected_substring in line for line in lines
          ), expected_substring
  
file_path: flair/tests/test_trainer.py
imports: import pytest
  from torch.optim import Adam
  import flair
  from flair.data import Sentence
  from flair.datasets import ClassificationCorpus
  from flair.embeddings import DocumentPoolEmbeddings, FlairEmbeddings, WordEmbeddings
  from flair.models import SequenceTagger, TextClassifier
  from flair.trainers import ModelTrainer
label_desc: Use image node_id 1 for calling a global function with example usage: test_text_classifier_multi(results_base_path, tasks_base_path) without return types