Get desktop application:
View/edit binary Protocol Buffers messages
Unary RPC. Retrieves community models' metadata related to the models' evaluation.
Refers to the number of evaluation request rounds that we need to re-track. If non-positive (x <= 0): reply all, otherwise (x>0) reply current and num-1 latest community models evaluations.
A list of HashMaps where each position in the list refers to a community model and the HashMap contains the evaluation of the community model across the learners on their local private datasets (train/val/test).
Unary RPC. Controller replies with community models (num_backtracks value 0:all, 1:last, 2:previous to last, etc...).
Number of models that we need to re-track. If non-positive (x <= 0): reply all, otherwise (x>0) reply current and num-1 latest community models.
Replies a sequence of models.
Unary RPC. Retrieves most recent and historically trained learners local models (num_backtracks value 0:all, 1:last, 2:previous to last, etc...).
Refers to the number of local models that we need to re-track. If non-positive (x <= 0): reply all, otherwise (x>0) reply current and num-1 latest learners' local models.
Retrieves the num_backtracks local models for every learner that exists in the provided LearnerEntity collection.
Replies a sequence of LocalModelResponses. One record for each requested learner: [ (LearnerEntity, [LocalModel1, LocalModel2, ...]), (,[]), ... ].
Unary RPC. Retrieves learners local models' metadata related to the models' evaluation (num_backtracks value 0:all, 1:last, 2:previous to last, etc...).
Refers to the number of local tasks that we need to re-track. If non-positive (x <= 0): reply all, otherwise (x>0) reply current and num-1 latest learners' local models evaluations.
Retrieves the num_backtracks evaluations for every learner that exists in the provided LearnerEntity collection.
A HashMap containing the evaluation of the locally trained model (i.e., result of run task) of each learner on its local private datasets (train/val/test) and other metadata related to the locally completed training task.
Unary RPC. Replies with runtime metadata related to the federation environment (e.g., number of community update requests).
Refers to the number of runtime metadata we need to request for / retrack. If non-positive (x <= 0): reply all, otherwise (x>0) reply current and num-1 latest runtime metadata.
TODO No structured response yet, but in a future release this should follow a specific format.
Unary RPC. Retrieves a collection of all participating learners in the federation.
(message has no fields)
Returns a collection with all the participating learners in the federation. Even though the response is a collection of LearnerDescriptor type, for security reasons the controller only populates the learner id and dataset specifications fields.
Unary RPC. Replies with the health status (beat) of its internal services.
Unary RPC. A new participating learner asks the controller to join the federation.
TODO This field seems redundant - not used anywhere! Controller generates the learner_ids based on ServerEntity! string learner_id = 1; // If this field is empty/None then this learner is new. If it not empty its (id,token) must match with the existing records inside controller's book keeping collection.
The id of the learner assigned by the controller, see `JoinFederationResponse`.
For security reasons, the controller generates a random 64-characters string that is associated with the joining learner. The (learner_id, token) composite key is required throughout training when a learner contacts the controller.
Unary RPC. An existing learner informs the controller that it leaves the federation.
The id of the learner assigned by the controller, see `JoinFederationResponse`.
This is associated with the auth_token in `JoinFederationResponse` message.
Unary RPC. Receives the local model of a learner when it completes its (locally) assigned task.
The id of the learner assigned by the controller, see `JoinFederationResponse`.
This is associated with the auth_token in `JoinFederationResponse` message.
Unary RPC. Receives a new model to replace the current community model.
TODO: Require some sort of auth to ensure that whoever is replacing the model, e.g., driver, is authorized to do so.
Shuts down the controller service and clears any resources.
Unary RPC. Receives a model and evaluates it at its local dataset (any of [train, validation, test]).
A single model is sent to the evaluation service of the learner.
We need to provide the batch size for evaluation because a default value will not work for all models, due to memory limitations, cf. CIFAR images to sentences for NER sequence tagging.
The list of metrics we want to evaluate the model, e.g., ["accuracy", "f1_score", "confusion_matrix", etc...]
Unary RPC. Replies with the health status (beat) of its internal services.
Unary RPC. Assigns task to be trained locally by the learner.
This is the community model sent by the controller to the learner to run the assigned task.
Description of the assigned task.
The hyperparameters related to the SGD optimization, i.e., model's optimizer.
Unary rpc. Shuts down all running services of the learner module.
Acknowledgment message.
Used in:
, , , , ,Set to true if this acknowledges the successful completion of a request, or false otherwise.
Timestamp of the acknowledgement.
An optional message.
Used in:
Tensor storing double values.
Used in:
Tensor metadata.
Bytes (encrypted) representation of the array.
Used in:
Used in:
Used in:
Records the id of the global iteration, i.e., id of the community model being evaluated.
A HashMap with learner as the key and the evaluation of the community model on its local datasets as the value.
Used in:
This is the model trained by the learner locally.
These are the basic metadata sent by the learner to the controller whenever a locally assigned training task is complete.
TODO These are additional metadata sent by the learner to the controller. No structured response yet, but in a future release this should follow a specific format.
Used in:
TODO Shall we replace (batch_size, optimizer) with Hyperparameters message?
TODO Need to figure out, if this quantity will be used as part of the aggregation scheme or as part of the actual validation evaluation.
Used in:
,Used in:
Used in:
TODO(canast02): Need to add histogram support; the following statistics should refer to a histogram bucket.
Tensor storing double values.
Used in:
Tensor metadata.
Flattened representation of the array.
Used in:
The id of the epoch. This is an incremental value, i.e., serial number. A learner is training continuously and therefore it can increment its epoch id as it progresses its training.
This is a repeated field since we might request to evaluate a model on more than one datasets.
Used in:
Used in:
,Used in:
Used in:
Represents a community model.
Used in:
, ,Number of entities that contributed to the aggregation of this model.
The aggregated community model.
Used in:
Tensor storing double values.
Used in:
Tensor metadata.
Flattened representation of the array.
Used as request type in: ControllerService.GetServicesHealthStatus, LearnerService.GetServicesHealthStatus
(message has no fields)
Used as response type in: ControllerService.GetServicesHealthStatus, LearnerService.GetServicesHealthStatus
A Key-Value services status reply.
Used in:
Used in:
Used in:
Tensor storing integer values.
Used in:
Tensor metadata.
Flattened representation of the array.
Used in:
,Used in:
The description of the learner entity.
For a single learner we can return a collection of locally trained models. We encapsulate the local models as federation models because there is no difference in the structure of the two model types.
Describes the learner. It also includes the generated authorization token for the learner.
Learner's model lineage.
Used in:
Records the id of the global iteration, i.e., id of the community model sent to the learner for local training.
This reflects the number of local steps the learner needs to perform. It is similar to epochs if we take |num_training_examples| / batch_size.
This reflects the number of local steps the learner needs to perform.
Used in:
Represents a machine learning model.
Used in:
, , , ,Model's variables.
Used in:
The name of the variable.
Set to true if this is a trainable variable. Otherwise, false.
The tensor holding the values of this variable.
TODO: Not sure if we need a simple json response or scores! For instance, we might need additional metrics such as confusion matrices...
Used in:
,FOR NOW, we need to return the key-value formatted value! That is for every string metric passed through the EvaluationMetrics object we reply with a <metric, value> collection.
Wrapper for multiple model evaluations.
Used in:
,Used in:
Used in:
,Used in:
Parameters specific to the semi-synchronous protocol.
Used in:
A server entity that participates in the collaborative learning environment.
Used in:
, , , ,Either the hostname or the IP address of the server.
The server port that the service is running on.
For enabling https between the learners and controller
TODO: require some sort of auth key here?
Used as request type in: ControllerService.ShutDown, LearnerService.ShutDown
(message has no fields)
Used as response type in: ControllerService.ShutDown, LearnerService.ShutDown
Used in:
A list with all training evaluations across all epochs.
A list with all validation evaluations across all epochs.
A list of all test evaluations across all epochs.
Used in:
,Records the id of the global iteration, i.e., id of the global task or of the received community model. Need it for bookkeeping when contacting the controller the completed local task.
Learner may perform partial epochs, thus the float data type.
Time-per-epoch in milliseconds.
Time-per-batch in milliseconds.
Structural info of a tensor.
Used in:
, , ,Length of the tensor, i.e., total number of values it stores.
The size of each dimension of the tensor.
(Optional) The data type this tensor holds; may be used for casting the values to a specific type.
Supported data types.
Used in:
Used in: