Skip to content

declearn.messaging.InitRequest

Bases: Message

Server-emitted request to initialize local model and optimizer.

Source code in declearn/messaging/_base.py
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
@dataclasses.dataclass
class InitRequest(Message):
    """Server-emitted request to initialize local model and optimizer."""

    typekey = "init_request"

    model: Model
    optim: Optimizer
    aggrg: Aggregator
    metrics: List[MetricInputType] = dataclasses.field(default_factory=list)
    dpsgd: bool = False
    secagg: Optional[str] = None

    def to_kwargs(self) -> Dict[str, Any]:
        data = {}  # type: Dict[str, Any]
        data["model"] = serialize_object(self.model, group="Model").to_dict()
        data["optim"] = self.optim.get_config()
        data["aggrg"] = serialize_object(self.aggrg, "Aggregator").to_dict()
        data["metrics"] = self.metrics
        data["dpsgd"] = self.dpsgd
        data["secagg"] = self.secagg
        return data

    @classmethod
    def from_kwargs(cls, **kwargs: Any) -> Self:
        kwargs["model"] = deserialize_object(kwargs["model"])
        kwargs["optim"] = Optimizer.from_config(kwargs["optim"])
        kwargs["aggrg"] = deserialize_object(kwargs["aggrg"])
        return cls(**kwargs)