docstr: Given a set of models to be formed in a physical model and their device placement,
  this function replaces the logical node with an executable physical node for the physical model.
  
  Parameters
  ----------
  multi_model_placement : dict
      a dict of models and device placement.
      These models will be assembled into the same physical model to run.
  
  Returns
  -------
  node : Node
      the physical node to replace the logical node in the physical model
  placement : Device
      the device placement of the returned physical node
docstr_tok: ["Given","a","set","of","models","to","be","formed","in","a","physical","model","and","their","device","placement",",","this","function","replaces","the","logical","node","with","an","executable","physical","node","for","the","physical","model",".","Parameters","--","--","--","--","--","multi_model_placement",":","dict","a","dict","of","models","and","device","placement",".","These","models","will","be","assembled","into","the","same","physical","model","to","run",".","Returns","--","--","--","-","node",":","Node","the","physical","node","to","replace","the","logical","node","in","the","physical","model","placement",":","Device","the","device","placement","of","the","returned","physical","node"]
code: def assemble(
      self, multi_model_placement: Dict[GraphModelSpace, Device]
  ) -> Tuple[Node, Device]:
      """
      Given a set of models to be formed in a physical model and their device placement,
      this function replaces the logical node with an executable physical node for the physical model.
  
      Parameters
      ----------
      multi_model_placement : dict
          a dict of models and device placement.
          These models will be assembled into the same physical model to run.
  
      Returns
      -------
      node : Node
          the physical node to replace the logical node in the physical model
      placement : Device
          the device placement of the returned physical node
      """
  
      raise NotImplementedError
  
imports: import copy
  from typing import Dict, Tuple, Any, Type, cast
  from nni.common.device import Device, CPUDevice
  from nni.mutable.utils import uid
  from nni.nas.space import Edge, Graph, GraphModelSpace, Node
  from nni.nas.space.graph_op import Cell, Operation, _IOPseudoOperation
label_desc: Use image node_id 2 for calling the AbstractLogicalNode obj's underlying member method code with example usage: obj.assemble(multi_model_placement) without return types