code: def on_federation(
      self,
      ctx: Context,
      aggregator: AggregatorClientWrapper,
      fed_args: FedArguments,
      args: TrainingArguments,
      model: Optional[nn.Module] = None,
      optimizer: Optional[Optimizer] = None,
      scheduler: Optional[_LRScheduler] = None,
      dataloader: Optional[Tuple[DataLoader]] = None,
      control: Optional[TrainerControl] = None,
      state: Optional[TrainerState] = None,
      **kwargs,
  ):
      aggregator.model_aggregation(ctx, model)
  
imports: from fate.ml.nn.trainer.trainer_base import HomoTrainerClient, HomoTrainerServer
  from fate.ml.nn.trainer.trainer_base import FedArguments, TrainingArguments
  from dataclasses import dataclass
  from typing import List, Optional, Tuple, Callable, Union
  from fate.arch import Context
  from torch.optim import Optimizer
  from torch.utils.data import Dataset
  from torch.optim.lr_scheduler import _LRScheduler
  from transformers.trainer_callback import TrainerCallback
  from torch.nn import Module
  from torch import nn
  from torch.utils.data import DataLoader
  from transformers import TrainerState, TrainerControl, PreTrainedTokenizer
  from fate.ml.aggregator import AggregatorClientWrapper, AggregatorServerWrapper
  import logging
label_desc: Use image node_id 3 for calling the FedAVGClient obj's underlying member method code with example usage: obj.on_federation(ctx, aggregator, fed_args, args, model, optimizer, scheduler, dataloader, control, state) without return types