code: def main(
      lr: Param("base Learning rate", float) = 1e-2,
      bs: Param("Batch size", int) = 64,
      epochs: Param("Number of epochs", int) = 5,
      fp16: Param("Use mixed precision training", store_true) = False,
      dump: Param("Print model; don't train", int) = 0,
      runs: Param("Number of times to repeat training", int) = 1,
  ):
      "Training of IMDB classifier."
      path = rank0_first(untar_data, URLs.IMDB)
      dls = TextDataLoaders.from_folder(path, bs=bs, valid="test")
  
      for run in range(runs):
          pr(
              f"Rank[{rank_distrib()}] Run: {run}; epochs: {epochs}; lr: {lr}; bs: {bs}"
          )
  
          learn = rank0_first(
              text_classifier_learner,
              dls,
              AWD_LSTM,
              drop_mult=0.5,
              metrics=accuracy,
          )
          if dump:
              pr(learn.model)
              exit()
          if fp16:
              learn = learn.to_fp16()
  
          # Workaround: In PyTorch 1.4, need to set DistributedDataParallel() with find_unused_parameters=True,
          # to avoid a crash that only happens in distributed mode of text_classifier_learner.fine_tune()
          if num_distrib() > 1 and torch.__version__.startswith("1.4"):
              DistributedTrainer.fup = True
          with learn.distrib_ctx():  # distributed traing requires "-m fastai.launch"
              learn.fine_tune(epochs, lr)
  
file_path: fastai/nbs/examples/train_imdbclassifier.py
imports: from fastai.basics import *
  from fastai.callback.all import *
  from fastai.distributed import *
  from fastprogress import fastprogress
  from fastai.callback.mixup import *
  from fastcore.script import *
  from fastai.text.all import *
label_desc: Use image node_id 2 for calling a global function with example usage: main(lr, bs, epochs, fp16, dump, runs) without return types