Skip to main content

Bitfount-Supported Protocols

Protocols represent the agreed upon method by which a Data Scientist and a collection of Pods collaborate. The roles that are granted by Data Custodians are defined in terms of the protocols, and they in turn define the data and statistics that will be shared during task execution.

Bitfount currently supports the following protocols:

ProtocolDescriptionWhen to Use
Federated AveragingThis protocol performs a predetermined number of epochs or steps of training on each remote Pod before sending the updated model parameters to the Data Scientist. These parameters are then averaged and sent back to the Pods for as many federated iterations as the Data Scientist specifies.When training or evaluating ML models in a federated manner.
Works With:
- Federated Training
Results OnlyReturns the results from the provided algorithm. This protocol is the most permissive protocol and only involves one round of communication. It simply runs the algorithm on the specified Pod(s) and returns the results as a list (one element for every Pod).To return the results of a task to the Data Scientist.
Works With:
- Column Average
- Model Evaluate
- Model Train and Evaluate
- Model Inference
- SQL Query
- Private SQL Query
- Transformer Perplexity
- Transformer Text Generation
Private Set IntersectionPerforms a private set intersection given the specified algorithm.Private set intersections are best applied when performing a computation on encrypted data in order to mitigate the risk of data leakage.
Works With:
- Compute Intersection RSA
Inference And CSV ReportRuns remote model inference and then generates a CSV report locally from the results.Best applied when model inference must be run on remote data but the results cannot leave the Pod.
Works With:
- Model Inference
- CSV Report
ConversationOpens a long running chat-like session where the Data Scientist can send dynamic text prompts to the pod and receive text responses.To chat with a remote huggingface LLM:
Works With:
- Transformer Text Generation

Once instantiated, Data Scientists can initiate a run a protocol on a set of Pods using the run method:

protocol = ... # Instantiate one of the relevant protocols
protocol.run(pod_identifiers=["user1/pod1", "user2/pod2"])

The protocol will only succeed if the Data Scientists has the requisite permissions from all of the Pods specified.

Don’t see a protocol that works for you? Submit your suggestion or provide feedback to us.