code: def pipe_model(c: PipelineParallelTrainerConf):
      """
      ### Create pipeline parallel model
      """
  
      if c.is_checkpointing:
          raise NotImplementedError()
      else:
          layers = c.layers
  
      # Make sure the finetuner is initialized
      _ = c.fine_tuner
  
      # Create the Pipe module
      with monit.section("Pipe"):
          # Get the layer distribution across GPUs
          balance = balance_layers_simple(len(layers), c.n_gpus)
          inspect(balance=balance)
          # Devices for each GPU
          devices = [torch.device(f"cuda:{i}") for i in range(c.n_gpus)]
          # Create Fairscale Pipe module
          pipe_model = fairscale.nn.Pipe(
              nn.Sequential(*layers),
              balance=balance,
              devices=devices,
              chunks=c.chunks,
          )
  
      #
      return pipe_model
  
file_path: annotated_deep_learning_paper_implementations/labml_nn/neox/samples/finetune.py
imports: import fairscale
  import torch
  import torch.nn
  import torch.utils.data
  import torch.utils.data
  import typing
  from torch.utils.data import DataLoader, RandomSampler
  from labml import experiment, monit, tracker, lab
  from labml.configs import option
  from labml.logger import inspect
  from labml_nn.neox.utils.text_dataset import get_training_data
  from labml_nn.neox.utils.finetune import FineTuneBiases
  from labml_nn.neox.model import LayerGenerator, NeoXModule
  from labml_nn.neox.utils import balance_layers_simple
  from labml_nn.neox.utils.trainer import PipelineParallelTrainerConf
label_desc: Use image node_id 3 for calling a global function with example usage: pipe_model(c) and returns: pipe_model