An open framework for Federated Learning.

Overview

Welcome to Intel® Open Federated Learning

Federated learning is a distributed machine learning approach that enables organizations to collaborate on machine learning projects without sharing sensitive data, such as, patient records, financial data, or classified secrets (Sheller MJ, et al., 2020; Sheller MJ, et al., 2019; Yang Y, et al., 2019; McMahan HB, et al., 2016).

The basic premise behind federated learning is that the model moves to meet the data rather than the data moving to meet the model. Therefore, the minimum data movement needed across the federation is solely the model parameters and their updates.

Open Federated Learning (OpenFL) is a Python 3 project developed by Intel Labs and Intel Internet of Things Group.

Federated Learning

Requirements

  • OS: Tested on Ubuntu Linux 16.04 and 18.04.
  • Python 3.6+ with a Python virtual environment (e.g. conda)
  • TensorFlow 2+ or PyTorch 1.6+ (depending on your training requirements). OpenFL is designed to easily support other frameworks as well.

fx commandline interface

License

This project is licensed under Apache License Version 2.0. By contributing to the project, you agree to the license and copyright terms therein and release your contribution under these terms.

Resources:

Support

Please report questions, issues and suggestions using:

Relation to OpenFederatedLearning and the Federated Tumor Segmentation (FeTS) Initiative

This project builds on the Open Federated Learning framework that was developed as part of a collaboration between Intel and the University of Pennsylvania (UPenn) for federated learning. It describes Intel’s commitment in supporting the grant awarded to the Center for Biomedical Image Computing and Analytics (CBICA) at UPenn (PI: S. Bakas) from the Informatics Technology for Cancer Research (ITCR) program of the National Cancer Institute (NCI) of the National Institutes of Health (NIH), for the development of the Federated Tumor Segmentation (FeTS, www.fets.ai) platform (grant award number: U01-CA242871).

FeTS is an exciting, real-world medical FL platform, and we are honored to be collaborating with UPenn in leading a federation of international collaborators. The original OpenFederatedLearning project and OpenFL are designed to serve as the backend for the FeTS platform, and OpenFL developers and researchers continue to work very closely with UPenn on the FeTS project. The FeTS-AI/Front-End shows how UPenn and Intel have integrated UPenn’s medical AI expertise with Intel’s framework to create a federated learning solution for medical imaging.

Although initially developed for use in medical imaging, this project is designed to be agnostic to the use-case, the industry, and the machine learning framework.

Comments
  • Problem with Openfl Gramine

    Problem with Openfl Gramine "error: PAL failed at ../../Pal/src/db_main.c:pal_main:513 (exitcode = 4, reason=No 'loader.entrypoint' is specified in the manifest)"

    Describe the bug I am attempting to run the example of FL as given in manual and getting this error on the aggregator.

    Gramine is starting. Parsing TOML manifest file, this may take some time...
    Detected a huge manifest, preallocating 64MB of internal memory.
    -----------------------------------------------------------------------------------------------------------------------
    Gramine detected the following insecure configurations:
    
      - loader.insecure__use_cmdline_argv = true   (forwarding command-line args from untrusted host to the app)
      - sgx.allowed_files = [ ... ]                (some files are passed through from untrusted host without verification)
    
    Gramine will continue application execution, but this configuration must not be used in production!
    -----------------------------------------------------------------------------------------------------------------------
    
    error: PAL failed at ../../Pal/src/db_main.c:pal_main:513 (exitcode = 4, reason=No 'loader.entrypoint' is specified in the manifest)
    

    Also, step 7 in the manual is presented in a bit vague manner for a first-time user. I used the setup given here as a workspace and template. But using this gave above error when I am trying to start federation on aggregator machine.

    MediumBug 
    opened by gagandeep987123 20
  • executor failed running [/bin/bash -o pipefail -c fx workspace import --archive /workspace.zip]: exit code: 1

    executor failed running [/bin/bash -o pipefail -c fx workspace import --archive /workspace.zip]: exit code: 1

    Describe the bug Attemptin to run the openfl-gramine example. I am getting a error at point 4 "Build the Experiment Docker image"

    To Reproduce following the steps mentioned in the openfl-gramine/MANUAL. Also attaching the terminal logs for more reference. output.zip

    Can you please help?

    opened by gagandeep987123 11
  • [Tutorials] Anomaly Detection example MVTec PatchSVDD

    [Tutorials] Anomaly Detection example MVTec PatchSVDD

    In this PR, the problem of image anomaly detection and segmentation is addressed. Anomaly detection involves making a binary decision as to whether an input image contains an anomaly, and anomaly segmentation aims to locate the anomaly on the pixel level. The deep learning variant of support vector data description (SVDD) algorithm is extended to the patch-based method using self-supervised learning. This extension enables anomaly segmentation and improves detection performance. Industrial dataset is used for this tutorial - MVTec AD dataset.

    sample 
    opened by mansishr 11
  • Error while running the kvasir interactive API example

    Error while running the kvasir interactive API example

    Describe the bug Error while running the kvasir interactive API example

    To Reproduce Steps to reproduce the behavior:

    1. Use openfl 1.2 and Pytorch_kvasir interactive API tutorial
    2. Start Director
    3. Start Envoy
    4. After dataset is download, there is an error

    Expected behavior Federation should start

    Screenshots image

    Note:

    using Ubuntu 20.04. The ports 50500 are open and the same was verified through netcat command

    opened by shreyasnc1 10
  • Connection issue between collaborator and aggregator

    Connection issue between collaborator and aggregator

    In some machines, when I run a federation (even if it both the collaborators and the aggregator are on the same machine) they fail to establish a connection. I have started facing this problem specifically in the interactive API, I have been unsuccessful in running a federation as collaborator is unable to connect to the port where aggregator has started the gRPC server.

    Reproducing the error: I did not do anything differently than what is already mentioned in the tutorial. I created a fresh conda environment, installed the openfl library and finally tried to replicate the experiment.

    We tried to debug this error and in the process we found out that the gRPC server from the aggregator runs exclusively on IPv6. Whereas, collaborator tries to listen to IPv4. We even tried to hardcode the server and the port numbers but we were unable to make it work. We suspect that the error has something to do with the way the gRPC server are started in https://github.com/intel/openfl/blob/c3c0886aefeb09f426fc3726be0f65de2b344e22/openfl/transport/grpc/server.py and https://github.com/intel/openfl/blob/c3c0886aefeb09f426fc3726be0f65de2b344e22/openfl/transport/grpc/client.py

    I think this error can pose a potentially big problem in the future. Therefore, please look into it.

    Thanks

    opened by saransh09 10
  • Add ISV product ID and ISV SVN fields to manifest

    Add ISV product ID and ISV SVN fields to manifest

    ISV product ID and ISV SVN fields are defined and signed in SIGSTRUCT. In Gramine, they are defined in the manifest and then used on enclave signing in enclave build flow. Add the option to configure them in OpenFL manifest with new flags to the makefile: SGX_ISVPRODID and SGX_ISVSVN. Their default values are 0, to maintain backwards compatibility.

    Currently ISV SVN is configurable in build time, but this is not necessarily the desired behavior. Required behavior is open for discussion and should be updated once a decision is made.

    Related issue: #501

    enhancement 
    opened by DL8 9
  • Aggregator does not have an aggregated tensor for TensorKey(tensor_name='block_1.1.running_mean',                     origin='aggregator_plan.yaml_4ebcd576', round_number=55, report=False, tags=('model',))

    Aggregator does not have an aggregated tensor for TensorKey(tensor_name='block_1.1.running_mean', origin='aggregator_plan.yaml_4ebcd576', round_number=55, report=False, tags=('model',))","grpc_status":2}"

    During training, after several epochs (55 in this example, but this number is random) this errors happens.

    ERROR    Collaborator failed with error: <_InactiveRpcError of RPC that terminated with:                                                  envoy.py:75
                                status = StatusCode.UNKNOWN
                                details = "Exception calling application: Aggregator does not have an aggregated tensor for
                        TensorKey(tensor_name='block_1.1.running_mean', origin='aggregator_plan.yaml_4ebcd576', round_number=55, report=False,
                        tags=('model',))"
                                debug_error_string = "{"created":"@1646124781.553286945","description":"Error received from peer
                        ipv4:172.20.8.151:59526","file":"src/core/lib/surface/call.cc","file_line":1062,"grpc_message":"Exception calling application:
                        Aggregator does not have an aggregated tensor for TensorKey(tensor_name='block_1.1.running_mean',
                        origin='aggregator_plan.yaml_4ebcd576', round_number=55, report=False, tags=('model',))","grpc_status":2}"
                        >:
                        Traceback (most recent call last):
                          File "/home/lmancuso/bruno/lib/python3.7/site-packages/openfl/component/envoy/envoy.py", line 73, in run
                            self._run_collaborator()
                          File "/home/lmancuso/bruno/lib/python3.7/site-packages/openfl/component/envoy/envoy.py", line 141, in _run_collaborator
                            col.run()
                          File "/home/lmancuso/bruno/lib/python3.7/site-packages/openfl/component/collaborator/collaborator.py", line 145, in run
                            self.do_task(task, round_number)
                          File "/home/lmancuso/bruno/lib/python3.7/site-packages/openfl/component/collaborator/collaborator.py", line 215, in do_task
                            required_tensorkeys
                          File "/home/lmancuso/bruno/lib/python3.7/site-packages/openfl/component/collaborator/collaborator.py", line 257, in
                        get_numpy_dict_for_tensorkeys
                            return {k.tensor_name: self.get_data_for_tensorkey(k) for k in tensor_keys}
                          File "/home/lmancuso/bruno/lib/python3.7/site-packages/openfl/component/collaborator/collaborator.py", line 257, in <dictcomp>
                            return {k.tensor_name: self.get_data_for_tensorkey(k) for k in tensor_keys}
                          File "/home/lmancuso/bruno/lib/python3.7/site-packages/openfl/component/collaborator/collaborator.py", line 331, in
                        get_data_for_tensorkey
                            require_lossless=True
                          File "/home/lmancuso/bruno/lib/python3.7/site-packages/openfl/component/collaborator/collaborator.py", line 367, in
                        get_aggregated_tensor_from_aggregator
                            self.collaborator_name, tensor_name, round_number, report, tags, require_lossless)
                          File "/home/lmancuso/bruno/lib/python3.7/site-packages/openfl/transport/grpc/client.py", line 84, in wrapper
                            response = func(self, *args, **kwargs)
                          File "/home/lmancuso/bruno/lib/python3.7/site-packages/openfl/transport/grpc/client.py", line 285, in get_aggregated_tensor
                            response = self.stub.GetAggregatedTensor(request)
                          File "/home/lmancuso/bruno/lib/python3.7/site-packages/grpc/_interceptor.py", line 221, in __call__
                            compression=compression)
                          File "/home/lmancuso/bruno/lib/python3.7/site-packages/grpc/_interceptor.py", line 257, in _with_call
                            return call.result(), call
                          File "/home/lmancuso/bruno/lib/python3.7/site-packages/grpc/_channel.py", line 333, in result
                            raise self
                          File "/home/lmancuso/bruno/lib/python3.7/site-packages/grpc/_interceptor.py", line 247, in continuation
                            compression=new_compression)
                          File "/home/lmancuso/bruno/lib/python3.7/site-packages/grpc/_channel.py", line 934, in with_call
                            return _end_unary_response_blocking(state, call, True, None)
                          File "/home/lmancuso/bruno/lib/python3.7/site-packages/grpc/_channel.py", line 826, in _end_unary_response_blocking
                            raise _InactiveRpcError(state)
                        grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with:
                                status = StatusCode.UNKNOWN
                                details = "Exception calling application: Aggregator does not have an aggregated tensor for
                        TensorKey(tensor_name='block_1.1.running_mean', origin='aggregator_plan.yaml_4ebcd576', round_number=55, report=False,
                        tags=('model',))"
                                debug_error_string = "{"created":"@1646124781.553286945","description":"Error received from peer
                        ipv4:172.20.8.151:59526","file":"src/core/lib/surface/call.cc","file_line":1062,"grpc_message":"Exception calling application:
                        Aggregator does not have an aggregated tensor for TensorKey(tensor_name='block_1.1.running_mean',
                        origin='aggregator_plan.yaml_4ebcd576', round_number=55, report=False, tags=('model',))","grpc_status":2}"
    

    I was doing image classification on MNIST using 1 director and 10 envoys with a non-iid data distribution.

    bug 
    opened by CasellaJr 9
  • tf.keras Serialization fix

    tf.keras Serialization fix

    This closes #422.

    Serialization of tf.keras models is natively supported as of https://github.com/keras-team/keras/pull/14748. This PR removes hotfix function to allow serialization on TF2.7 and greater.

    opened by MasterSkepticista 8
  • Allow IP-based Communication

    Allow IP-based Communication

    This PR enables IP-based connection in addition to connecting based on registered FQDNs. It also corrects a bug which was leading to the use of incorrect default plan .yaml files.

    opened by TortoiseHam 8
  • 3D U-Net TensorFlow workspace for BraTS 2020

    3D U-Net TensorFlow workspace for BraTS 2020

    This adds a workspace for OpenFL to train a TensorFlow 3D U-Net model on BraTS 2020.

    • I show how to use a TensorFlow dataloader rather than loading everything into memory. It should make for a nice example to showcase how to use custom data loaders

    • I fixed a bug in the KerasRunner on the validation function. It was using x_validate rather than the get_valid_data() function. This change makes it possible to use an arbitrary dataloader.

    • I think there's a bug with db_rounds to keep. When I set it to 1 round to keep, the federation crashes on round 2 because it doesn't have the graph variables. It looks like this should be at least >=2 rounds to keep. I'd suggest doing a max(db_rounds, 2) so that the user doesn't inadvertently put in something like 0 (or -999).

    • The model trains, but no guarantees on a good Dice score. It's just a template.

    Hope you all are well. спасибо друзья!

    sample 
    opened by tonyreina 8
  • [Feature] Timing Fed Components

    [Feature] Timing Fed Components

    Core timeout functionality is in place. To apply timeouts to any function/method in openfl codebase, import and decorate the function with @fedtiming.

    from openfl.utilities.fed_timer import fedtiming
    
    @fedtiming(timeout=10)    #10 seconds
    def some_function(*args, **kwargs):
        pass
    

    Update: 20th Oct

    The @fedtiming can now be decorated on normal python functions or async co-routine likewise. Usage remains the same.

    opened by acharyasunil 7
  • Director Admin Client

    Director Admin Client

    This PR introduces additional Director-Admin service to the Director component. New API allows modifying Director component settings and interacting with Envoy and Experiment registries.

    Signed-off-by: igor-davidyuk [email protected]

    opened by igor-davidyuk 0
  • WIP: CI badges

    WIP: CI badges

    New

    • Ubuntu test sequence
    • Windows test sequence
    • 2 badges in the README.md

    The test sequence for both operating systems is following:

    • Linter
    • PyTest
    • Dockerization
    • Interactive API (UNet Kvasir example)
    • CLI (Keras CNN MNIST template)
    opened by itrushkin 0
  • Installing OpenFL from develop doesn't work

    Installing OpenFL from develop doesn't work

    Describe the bug fx command fails with the following after installing OpenFL from repo:

    $ fx
    Traceback (most recent call last):
      File "/home/vmuser/venv_test/bin/fx", line 6, in <module>
        from pkg_resources import load_entry_point
      File "/home/vmuser/venv_test/lib/python3.8/site-packages/pkg_resources/__init__.py", line 3252, in <module>
        def _initialize_master_working_set():
      File "/home/vmuser/venv_test/lib/python3.8/site-packages/pkg_resources/__init__.py", line 3235, in _call_aside
        f(*args, **kwargs)
      File "/home/vmuser/venv_test/lib/python3.8/site-packages/pkg_resources/__init__.py", line 3264, in _initialize_master_working_set
        working_set = WorkingSet._build_master()
      File "/home/vmuser/venv_test/lib/python3.8/site-packages/pkg_resources/__init__.py", line 583, in _build_master
        ws.require(__requires__)
      File "/home/vmuser/venv_test/lib/python3.8/site-packages/pkg_resources/__init__.py", line 900, in require
        needed = self.resolve(parse_requirements(requirements))
      File "/home/vmuser/venv_test/lib/python3.8/site-packages/pkg_resources/__init__.py", line 786, in resolve
        raise DistributionNotFound(req, requirers)
    pkg_resources.DistributionNotFound: The 'jsonpointer>1.13; extra == "format-nongpl"' distribution was not found and is required by jsonschema
    

    A second installation on the same environment fixes this issue, but it's not very elegant to demand invoking pip install twice

    To Reproduce

    python -m venv venv_test
    . venv_test/bin/activate
    git clone https://github.com/intel/openfl.git
    pip install ./openfl
    fx
    

    Expected behavior fx runs without dependency errors

    documentation 
    opened by DL8 3
  • build(deps): bump tensorflow from 2.8.3 to 2.9.3 in /tests/github/interactive_api_director/experiments/tensorflow_mnist/envoy

    build(deps): bump tensorflow from 2.8.3 to 2.9.3 in /tests/github/interactive_api_director/experiments/tensorflow_mnist/envoy

    Bumps tensorflow from 2.8.3 to 2.9.3.

    Release notes

    Sourced from tensorflow's releases.

    TensorFlow 2.9.3

    Release 2.9.3

    This release introduces several vulnerability fixes:

    TensorFlow 2.9.2

    Release 2.9.2

    This releases introduces several vulnerability fixes:

    ... (truncated)

    Changelog

    Sourced from tensorflow's changelog.

    Release 2.9.3

    This release introduces several vulnerability fixes:

    Release 2.8.4

    This release introduces several vulnerability fixes:

    ... (truncated)

    Commits
    • a5ed5f3 Merge pull request #58584 from tensorflow/vinila21-patch-2
    • 258f9a1 Update py_func.cc
    • cd27cfb Merge pull request #58580 from tensorflow-jenkins/version-numbers-2.9.3-24474
    • 3e75385 Update version numbers to 2.9.3
    • bc72c39 Merge pull request #58482 from tensorflow-jenkins/relnotes-2.9.3-25695
    • 3506c90 Update RELEASE.md
    • 8dcb48e Update RELEASE.md
    • 4f34ec8 Merge pull request #58576 from pak-laura/c2.99f03a9d3bafe902c1e6beb105b2f2417...
    • 6fc67e4 Replace CHECK with returning an InternalError on failing to create python tuple
    • 5dbe90a Merge pull request #58570 from tensorflow/r2.9-7b174a0f2e4
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Parameterize PKI certs location

    Parameterize PKI certs location

    For manual PKI exchange, certificates are stored under 'cert' directory inside workspace by default. This PR decouples the location of certificates from workspace in that the user can now specify certificate path to store certs which can reside outside the workspace.

    opened by mansishr 0
  • [Snyk] Security upgrade wheel from 0.30.0 to 0.38.0

    [Snyk] Security upgrade wheel from 0.30.0 to 0.38.0

    This PR was automatically created by Snyk using the credentials of a real user.


    Snyk has created this PR to fix one or more vulnerable packages in the `pip` dependencies of this project.

    Changes included in this PR

    • Changes to the following files to upgrade the vulnerable dependencies to a fixed version:
      • openfl-workspace/torch_cnn_mnist_straggler_check/requirements.txt
    ⚠️ Warning
    tensorboard 2.1.0 requires numpy, which is not installed.
    tensorboard 2.1.0 requires protobuf, which is not installed.
    google-auth 1.35.0 requires rsa, which is not installed.
    
    

    Vulnerabilities that will be fixed

    By pinning:

    Severity | Priority Score (*) | Issue | Upgrade | Breaking Change | Exploit Maturity :-------------------------:|-------------------------|:-------------------------|:-------------------------|:-------------------------|:------------------------- medium severity | 551/1000
    Why? Recently disclosed, Has a fix available, CVSS 5.3 | Regular Expression Denial of Service (ReDoS)
    SNYK-PYTHON-WHEEL-3180413 | wheel:
    0.30.0 -> 0.38.0
    | No | No Known Exploit

    (*) Note that the real score may have changed since the PR was raised.

    Some vulnerabilities couldn't be fully fixed and so Snyk will still find them when the project is tested again. This may be because the vulnerability existed within more than one direct dependency, but not all of the affected dependencies could be upgraded.

    Check the changes in this PR to ensure they won't cause issues with your project.


    Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open fix PRs.

    For more information: 🧐 View latest project report

    🛠 Adjust project settings

    📚 Read more about Snyk's upgrade and patch logic


    Learn how to fix vulnerabilities with free interactive lessons:

    🦉 Regular Expression Denial of Service (ReDoS)

    opened by Einse57 0
Releases(v1.4)
FEDn is an open-source, modular and ML-framework agnostic framework for Federated Machine Learning

FEDn is an open-source, modular and ML-framework agnostic framework for Federated Machine Learning (FedML) developed and maintained by Scaleout Systems. FEDn enables highly scalable cross-silo and cross-device use-cases over FEDn networks.

Scaleout 75 Nov 9, 2022
An open framework for Federated Learning.

Welcome to Intel® Open Federated Learning Federated learning is a distributed machine learning approach that enables organizations to collaborate on m

Intel Corporation 397 Dec 27, 2022
Plato: A New Framework for Federated Learning Research

a new software framework to facilitate scalable federated learning research.

System Group@Theory Lab 192 Jan 5, 2023
Vertical Federated Principal Component Analysis and Its Kernel Extension on Feature-wise Distributed Data based on Pytorch Framework

VFedPCA+VFedAKPCA This is the official source code for the Paper: Vertical Federated Principal Component Analysis and Its Kernel Extension on Feature-

John 9 Sep 18, 2022
FedJAX is a library for developing custom Federated Learning (FL) algorithms in JAX.

FedJAX: Federated learning with JAX What is FedJAX? FedJAX is a library for developing custom Federated Learning (FL) algorithms in JAX. FedJAX priori

Google 208 Dec 14, 2022
Official code implementation for "Personalized Federated Learning using Hypernetworks"

Personalized Federated Learning using Hypernetworks This is an official implementation of Personalized Federated Learning using Hypernetworks paper. [

Aviv Shamsian 121 Dec 25, 2022
[ICLR'21] FedBN: Federated Learning on Non-IID Features via Local Batch Normalization

FedBN: Federated Learning on Non-IID Features via Local Batch Normalization This is the PyTorch implemention of our paper FedBN: Federated Learning on

Med-AIR@CUHK 156 Dec 15, 2022
[CVPR'21] FedDG: Federated Domain Generalization on Medical Image Segmentation via Episodic Learning in Continuous Frequency Space

FedDG: Federated Domain Generalization on Medical Image Segmentation via Episodic Learning in Continuous Frequency Space by Quande Liu, Cheng Chen, Ji

Quande Liu 178 Jan 6, 2023
Personalized Federated Learning using Pytorch (pFedMe)

Personalized Federated Learning with Moreau Envelopes (NeurIPS 2020) This repository implements all experiments in the paper Personalized Federated Le

Charlie Dinh 226 Dec 30, 2022
A Research-oriented Federated Learning Library and Benchmark Platform for Graph Neural Networks. Accepted to ICLR'2021 - DPML and MLSys'21 - GNNSys workshops.

FedGraphNN: A Federated Learning System and Benchmark for Graph Neural Networks A Research-oriented Federated Learning Library and Benchmark Platform

FedML-AI 175 Dec 1, 2022
An unofficial PyTorch implementation of a federated learning algorithm, FedAvg.

Federated Averaging (FedAvg) in PyTorch An unofficial implementation of FederatedAveraging (or FedAvg) algorithm proposed in the paper Communication-E

Seok-Ju Hahn 123 Jan 6, 2023
Bachelor's Thesis in Computer Science: Privacy-Preserving Federated Learning Applied to Decentralized Data

federated is the source code for the Bachelor's Thesis Privacy-Preserving Federated Learning Applied to Decentralized Data (Spring 2021, NTNU) Federat

Dilawar Mahmood 25 Nov 30, 2022
FedScale: Benchmarking Model and System Performance of Federated Learning

FedScale: Benchmarking Model and System Performance of Federated Learning (Paper) This repository contains scripts and instructions of building FedSca

null 268 Jan 1, 2023
Code for Subgraph Federated Learning with Missing Neighbor Generation (NeurIPS 2021)

To run the code Unzip the package to your local directory; Run 'pip install -r requirements.txt' to download required packages; Open file ~/nips_code/

null 32 Dec 26, 2022
GradAttack is a Python library for easy evaluation of privacy risks in public gradients in Federated Learning

GradAttack is a Python library for easy evaluation of privacy risks in public gradients in Federated Learning, as well as corresponding mitigation strategies.

null 129 Dec 30, 2022
Robbing the FED: Directly Obtaining Private Data in Federated Learning with Modified Models

Robbing the FED: Directly Obtaining Private Data in Federated Learning with Modified Models This repo contains a barebones implementation for the atta

null 16 Dec 4, 2022
Breaching - Breaching privacy in federated learning scenarios for vision and text

Breaching - A Framework for Attacks against Privacy in Federated Learning This P

Jonas Geiping 139 Jan 3, 2023
PyTorch implementation of SCAFFOLD (Stochastic Controlled Averaging for Federated Learning, ICML 2020).

Scaffold-Federated-Learning PyTorch implementation of SCAFFOLD (Stochastic Controlled Averaging for Federated Learning, ICML 2020). Environment numpy=

KI 30 Dec 29, 2022