code: def ernie_send_aggregate(self, gw, feature, act, name):
      def ernie_send(src_feat, dst_feat, edge_feat):
          def build_position_ids(term_ids):
              input_mask = L.cast(term_ids > 0, "int64")
              position_ids = L.cumsum(input_mask, axis=1) - 1
              return position_ids
  
          """doc"""
          # input_ids
          cls = L.fill_constant_batch_size_like(
              src_feat["term_ids"], [-1, 1], "int64", self.config.cls_id
          )
          src_ids = L.concat([cls, src_feat["term_ids"]], 1)
          dst_ids = dst_feat["term_ids"]
  
          # sent_ids
          sent_ids = L.concat(
              [L.zeros_like(src_ids), L.ones_like(dst_ids)], 1
          )
          term_ids = L.concat([src_ids, dst_ids], 1)
  
          # position_ids
          position_ids = build_position_ids(term_ids)
          ernie_model = ErnieModel(self.config.ernie_config, "")
          feature, _ = ernie_model(term_ids, sent_ids, position_ids)
          return feature
  
      term_ids = feature
      msg = gw.send(ernie_send, nfeat_list=[("term_ids", term_ids)])
      neigh_feature = gw.recv(
          msg,
          lambda feat: F.layers.sequence_pool(feat, pool_type="sum"),
      )
  
      cls = L.fill_constant_batch_size_like(
          term_ids, [-1, 1], "int64", self.config.cls_id
      )
      term_ids = L.concat([cls, term_ids], 1)
      ernie_model = ErnieModel(self.config.ernie_config, "")
      self_feature, _ = ernie_model(term_ids)
  
      hidden_size = self.config.hidden_size
      self_feature = linear(self_feature, hidden_size, name + "_l", act)
      neigh_feature = linear(
          neigh_feature, hidden_size, name + "_r", act
      )
      output = L.concat([self_feature, neigh_feature], axis=1)
      output = L.l2_normalize(output, axis=1)
      return output
  
imports: import os
  import json
  import numpy
  import pgl
  import paddle.fluid
  import paddle.fluid.layers
  from ernie import ErnieModel
  from pgl.utils.logger import log
label_desc: Use image node_id 3 for calling the ERNIESageV2Encoder obj's underlying member method code with example usage: obj.ernie_send_aggregate(gw, feature, act, name) and returns: output, feature, position_ids