code: def setup_model(self, ctx: Context):
      generator = torch.Generator()
      self._model = SSHENeuralNetworkAggregatorLayer(
          ctx,
          in_features_a=self._host_in_features,
          in_features_b=self._guest_in_features,
          out_features=self._out_features,
          rank_a=ctx.hosts[0].rank,
          rank_b=ctx.guest.rank,
          wa_init_fn=lambda shape: torch.rand(
              shape, generator=generator
          ),
          wb_init_fn=lambda shape: torch.rand(
              shape, generator=generator
          ),
          precision_bits=self._precision_bits,
      )
      self._optimizer = SSHENeuralNetworkOptimizerSGD(
          ctx, self._model.parameters(), lr=self._layer_lr
      )
  
imports: from typing import Union, Literal, Tuple
  import torch
  from fate.arch import Context
  from fate.ml.nn.model_zoo.agg_layer.agg_layer import _AggLayerBase
  from fate.arch.protocol.mpc.nn.sshe.nn_layer import SSHENeuralNetworkAggregatorLayer, SSHENeuralNetworkOptimizerSGD
label_desc: Use image node_id 1 for calling a global function with example usage: setup_model(ctx) without return types