Releases: securefederatedai/openfl
v1.6
We are excited to announce the release of OpenFL 1.6! This release brings the following changes.
New Features and APIs:
-
Federated LLM fine-tuning:
- Horovod: Use horovod to efficiently train LLMs across multiple private clusters
- Neuralchat-7b fine-tuning: Learn how to fine-tune neuralchat-7b using the Intel® Extension for Transformers and the workflow interface.
-
Workflow API enhancements: Introducing an experimental Workspace Export feature that can be used to transform a Workflow API-based FL experiment into the TaskRunner API format for running in a distributed deployment. There is also groundwork laid for a future FederatedRuntime implementation for Workflow API, in addition to the currently supported LocalRuntime.
-
Federated Evaluation: Federated evaluation allows for the assessment of ML models in a federated learning system by validating the model's performance locally on decentralized collaborator nodes, and then aggregating these metrics to gauge overall effectiveness, without compromising data privacy and security. FE is now officially supported by OpenFL, including example tutorials on how to use this new feature (via TaskRunner API).
-
Expanded AI Accelerator Support: Intel® Data Center GPU Max Series support via the Intel® Extension for PyTorch, including examples for training on datasets such as MNIST (via Workflow API) and TinyImageNet (via Interactive API)
-
Improved straggler collaborator handling: Improvements and bug fixes to aggregator’s fault-tolerance when collaborators stop responding or drop out of a federation. Introducing a cut-off timer-based policy and enabling other policies to be plugged-in. This capability is particularly relevant for large or geo-distributed federations.
-
fx CLI Improvements: We have separated the CLI commands are separated for creating a collaborator from the certificate request generation, for offering improved control of the participant setup workflow.
Highlighting Community Research
- Mitigating backdoor attacks in FL - Workflow API example contributed by @perieger (TU Darmstadt) demonstrates how Crowdguard can be used to leverage clients' feedback on individual models, analyze the behavior of neurons in hidden layers, and eliminate poisoned models through an iterative pruning scheme.
Enhanced Documentation:
- Quickstart Tutorial: An updated TaskRunner API quickstart tutorial makes it easier for newcomers to get up and running with built-in workspaces or custom code.
- FL Plan Description Documentation: There is now a detailed FL plan description in the to our documentation to help users better understand and configure the federated learning process.
New Contributors
Thank you and welcome to our 30 first time contributors In OpenFL 1.6!
@ptizzza, @grib0ed0v, @joedevon, @akantak, @wangleflex, @fangxiaoran, @danhe1, @bjklemme-intel, @fstrr, @KeertiX, @porteratzo, @amitport, @ashahba, @andreazanetti, @GabrieleRoncolato, @orionsBeltWest, @sbakas, @perieger, @manuelhsantana, @Hmikihiro, @VukW, @aryanxk02, @pboushy, @ParthMandaliya, @yanmxa, @tonywjs, @theakshaypant, @ishaileshpant, @rajithkrishnegowda, @teoparvanov
Full Changelog: v1.5...v1.6
v1.5.1
We are excited to announce the release of OpenFL 1.5.1 - our first since moving to LF AI & Data! This release brings the following changes.
Highlights
- Documentation accessibility improvements: As part of our Global Accessibility Awareness Day (GAAD) Pledge, the OpenFL project is making strides towards more accessible documentation. This release includes the integration of Intel® One Mono font, contrast color improvements, formatting improvements, and new accessibility focused issues to take up in the future.
- Documentation to federate a Generally Nuanced Deep Learning Framework (GaNDLF) model with OpenFL
- New OpenFL Interactive API Tutorials:
- Improvements to workspace export and import
- Many documentation improvements and updates
- Bug fixes
- Fixing dependency vulnerabilities
What's Changed
- Update Github Python version badge by @grib0ed0v in #719
- Fixed workflow interface notebook requirements by @psfoley in #729
- Fix CONTINUE_GLOBAL optimizer treatment by @itrushkin in #711
- Create MAINTAINERS.md by @ptizzza in #761
- Create GOVERNANCE.md by @ptizzza in #763
- Create TSC by @ptizzza in #762
- Fix flake8 error in local runtime by @psfoley in #764
- Q2 2023 Roadmap by @psfoley in #765
- Update ROADMAP.md by @joedevon in #785
- Updated integrations to GaNDLF by @sarthakpati in #781
- Fix Flake8 C419 for Ubuntu CI by @akantak in #800
- Fix warnings and issues in docs by @akantak in #825
- Add Logo by @psfoley in #827
- Change OpenFL documentation font to improve accessibility by @wangleflex in #809
- Update unit tests to improve code coverage by @fangxiaoran in #821
- Add PyTorch linear regression example by @danhe1 in #808
- This prints out the hash of the CSR to disk for both the aggregator and by @bjklemme-intel in #813
- Improve workspace requirements import by @danhe1 in #810
- Added Example using FedProx by @bjklemme-intel in #818
- Add new tutorial example to OpenFL interactive API by @bjklemme-intel in #812
- Running a federation with GaNDLF Documentation by @psfoley in #794
- Fix documentation build by @psfoley in #841
- Fix GaNDLF documentation links by @psfoley in #842
- Fix incorrectly formatted link in docs by @fstrr in #839
- Accessibility updates by @fstrr in #861
- Fixing FedAvg in workflow interface tutorials to be compatible with latest numpy stable release (1.24.3) by @kta-intel in #833
- Accessibility color contrast fixes by @fstrr in #864
- Testflow for verifying stdout redirection to Metaflow datastore by @KeertiX in #758
- Tweak link color so it’s not so aggressive by @fstrr in #865
- pinned tensorboardX by @porteratzo in #870
- Update Tensorflow, gRPC, Protobuf dependencies by @psfoley in #868
- Add FL plan description to documentation by @mansishr in #872
- Resolve Coverity Issues by @psfoley in #874
- Migrate Docker to Ubuntu 22.04 LTS release (supported through 2027) by @psfoley in #875
- Update EdenPipeline in the documentation by @amitport in #877
- CI Scans by @psfoley in #873
- Roadmap update by @psfoley in #878
- Removed unused packages from Docker image by @ashahba in #890
- Help redirect users looking for Open Flash Library (OpenFL) Project by @psfoley in #891
- Fixes that address dependency vulnerabilities
New Contributors
- @grib0ed0v made their first contribution in #719
- @ptizzza made their first contribution in #761
- @joedevon made their first contribution in #785
- @akantak made their first contribution in #800
- @wangleflex made their first contribution in #809
- @fangxiaoran made their first contribution in #821
- @danhe1 made their first contribution in #808
- @bjklemme-intel made their first contribution in #813
- @fstrr made their first contribution in #839
- @KeertiX made their first contribution in #758
- @porteratzo made their first contribution in #870
- @amitport made their first contribution in #877
- @ashahba made their first contribution in #890
Full Changelog: v1.5...v1.5.1
v1.5
Highlights
We are excited to announce the release of OpenFL 1.5! This release brings the following changes:
- New Workflows Interface (Experimental) - a new way of composing federated learning experiments inspired by Metaflow. Enables the creation of custom aggregator and collaborators tasks. This initial release is intended for simulation on a single node (using the LocalRuntime); distributed execution (FederatedRuntime) to be enabled in a future release.
- New use cases enabled by the workflow interface:
- End-of-round validation with aggregator dataset
- Privacy Meter - Privacy meter, based on state-of-the-art membership inference attacks, provides a tool to quantitatively audit data privacy in statistical and machine learning algorithms. The objective of a membership inference attack is to determine whether a given data record was in the training dataset of the target model. Measures of success (accuracy, area under the ROC curve, true positive rate at a given false positive rate ...) for particular membership inference attacks against a target model are used to estimate privacy loss for that model (how much information a target model leaks about its training data). Since stronger attacks may be possible, these measures serve as lower bounds of the actual privacy loss. The Privacy Meter workflow example generates privacy loss reports for all party's local model updates as well as the global models throughout all rounds of the FL training.
- Vertical Federated Learning Examples
- Federated Model Watermarking using the WAFFLE method
- Differential Privacy – Global differentially private federated learning using Opacus library to achieve a differentially private result w.r.t the inclusion or exclusion of any collaborator in the training process. At each round, a subset of collaborators are selected using a Poisson distribution over all collaborators, the selected collaborators perform local training with periodic clipping of their model delta (with respect to the current global model) to bound their contribution to the average of local model updates. Gaussian noise is then added to the average of these local models at the aggregator. This example is implemented in two different but statistically equivalent ways – the lower level API utilizes RDPAccountant and DPDataloader Opacus objects to perform privacy accounting and collaborator selection respectively, whereas the higher level API uses PrivacyEngine Opacus object for collaborator selection and internally utilizes RDPAccountant for privacy accounting.
- Habana Accelerator Support
- Official support for Python 3.9 and 3.10
- EDEN Compression Pipeline: Communication-Efficient and Robust Distributed Mean Estimation for Federated Learning (paper link)
- FLAX Framework Support
- Improvements to the resiliency and security of the director / envoy infrastructure:
- Optional notification to plan participants to agree to experiment sent to their infrastructure
- Improved resistance to loss of network connectivity and failure at various stages of execution
- Windows Support (Experimental): Continuous Integration now tests OpenFL on Windows, but certain features may not work as expected. Full Windows support will be added in a future release.
Breaking Changes
- Removal of Python 3.6 support due to numpy requirements
- Removal of FastEstimator examples due to dependency package incompatibility with OpenFL
What's Changed
- Remove CLA from OpenFL Repo by @psfoley in #504
- Introduce parameters to tune gRPC max message size by @igor-davidyuk in #494
- [Snyk] Security upgrade protobuf from 3.20.1 to 3.20.2 by @snyk-bot in #508
- Bump protobuf from 3.19.4 to 3.19.5 by @dependabot in #507
- Tutorials fixes by @igor-davidyuk in #516
- Pin TF version in CI tests by @mansishr in #517
- OpenFL Roadmap by @psfoley in #514
- Add ISV product ID and ISV SVN fields to manifest by @DL8 in #502
- citation updated to IOP source by @sarthakpati in #526
- Tutorial Improvements by @mkurisoo in #493
- Flax CIFAR10 CNN Interactive API Example by @acharyasunil in #482
- Break apart CI tests by @psfoley in #528
- Support Python 3.9 and 3.10 by @psfoley in #532
- Contributing EDEN compression pipeline by @yanivbi in #527
- Gramine manifest update by @igor-davidyuk in #537
- Configurable enclave size by @DL8 in #569
- For gramine set write logs to false by @mansishr in #547
- Add flake8 extensions to linter CI workflow by @itrushkin in #560
- Removed Protobuf 3.19.4 dependency by @acharyasunil in #558
- [Snyk] Fix for 2 vulnerabilities by @Einse57 in #598
- Fix log metric callback settings by @mansishr in #538
- Convert protobuf model to native format by @psfoley in #550
- Fix linter issues by @itrushkin in #619
- Update OpenFL 1.5 features on roadmap by @psfoley in #626
- Add random delay in authentication failures by @igor-davidyuk in #620
- [Windows] UnicodeDecodeError by @itrushkin in #610
- Introduce the
install requirements
option in director and envoy configs by @igor-davidyuk in #536 - Update Jenkins pipeline to support publishing to PyPI by @soda480 in #634
- Update pytest_coverage.yml by @Einse57 in #635
- Handling envoy disconnections on getting experiment. by @aleksandr-mokrov in #623
- Versions of zlib before 1.2.12 have several CVEs lodged against them.… by @Einse57 in #631
- Tensorboard documentation by @mansishr in #520
- Envoys to review plan before experiment starts by @mansishr in #489
- PKI testing by @itrushkin in #621
- Fix logging in Numpy Linear model + Colab example by @igor-davidyuk in #535
- Fix FeTS Challenge CI by @psfoley in #641
- HPU Adaptations for PyTorch TinyImagenet Interactive API by @Supriya-Krishnamurthi in #636
- build(deps): bump pillow from 9.0.1 to 9.3.0 in /openfl-tutorials/interactive_api/HPU/PyTorch_TinyImageNet/envoy by @dependabot in #643
- Envoy can reconnect to current experiment after restarting for the du… by @aleksandr-mokrov in #640
- Adapt
torch_cnn_mnist
example to testing pipeline by @igor-davidyuk in #644 - Jenkins Pipeline updates by @soda480 in #645
- Resending Shard Info if the director has lost the information by @aleksandr-mokrov in #624
- Fix TensorFlow version comparison by @itrushkin in #649
- Write keys with restricted permissions (#637) by @DL8 in #648
- [Feature] Timing Fed Components by @acharyasunil in #530
- [Examples] Update Tensorflow to 2.8.4 by @psfoley in #650
- Update to Pillow 9.3.0 by @psfoley in #651
- Suppress pandas FutureWarning by @itrushkin in #664
- CI for Windows by @itrushkin in #587
- Enable PEP8 naming extension for flake8 by @itrushkin in #668
- [CI] Process GitHub API rate limit error by @itrushkin in #669
- Fix straggler handling to identify stragglers for a round by @mansishr in #628
- Add tag name argument to graminize by @DL8 in #662
- Cleanup temporary files (SDLE task) by @mansishr in #665
- CI badges by @itrushkin in #673
- Experimental Wo...
OpenFL 1.4
The OpenFL v1.4 release contains the following:
- Straggler Handling
- tf.data Pipeline Example
PrivilegedAggregationFunction
Interface- FeTS Challenge Task Runner
- JAX Framework Support
- Bug fixes and other improvements
OpenFL 1.3
The OpenFL v1.3 release contains the following updates:
- Task Assigner functionality
- OpenFL + Gramine to support workloads within SGX
- FedCurv aggregation algorithm
- HuggingFace/transformers audio classification example using SUPERB dataset
- PyTorch Lightning GAN example
- NumPy Linear Regression example in Google Colab
- Adaptive Federated Optimization algorithms implementation:
FedYogi
,FedAdagrad
,FedAdam
- MXNet landmarks regression example as a custom plugin to OpenFL
- Migration to JupyterLab
- Bug fixes and other improvements
OpenFL 1.2.1
The OpenFL v1.2.1 release contains the following updates:
- CUDA Device plugin for monitoring GPU utilisation
- Fixing OpenFL behaviour when only validation tasks are defined to support Federated Analytics via Interactive API
- New Examples with Interactive API + Director/Envoy: PyTorch Histology classification, Vision Transformer for Cats and Dogs dataset from vit-pytorch, Anomaly Detection example MVTec PatchSVDD
- Example with full CPU reproducibility between non OpenFL-based and OpenFL-based example
- Major documentation update
- Bug fixes and other improvements
OpenFL 1.2
The OpenFL v1.2 release contains the following updates:
- Long-living entities: Director/Envoy for supporting multiple experiments within the same
Federation
- Scalable PKI: semi-automatic mechanism for certificates distribution via step-ca
- Examples with new Interactive API + Director/Envoy: TensorFlow Next Word Prediction, PyTorch Re-ID on Market, PyTorch MobileNet v2 on TinyImageNet
- 3D U-Net TensorFlow workspace for BraTS 2020 for CLI-based workflow
AggregationFunction
interface for custom aggregation functions in new Interactive API- Autocomplete of
fx
CLI - Bug fixes and documentation improvements
OpenFL 1.1
The OpenFL v1.1 release contains the following updates:
- New Interactive Python API (experimental)
- Example FedProx algorithm implementation for PyTorch and Tensorflow
AggregationFunctionInterface
for custom aggregation functions- Adds a Keras-based NLP Example
- Fixed lossy compression pipelines and added an example for usage
- Bug fixes and documentation improvements
OpenFL 1.0.1
v1.0.1 is a patch release. It includes the following updates:
- New docker CI tests
- New Pytorch UNet Kvasir tutorial
- Cleanup / fixes to other OpenFL tutorials
- Fixed description for Pypi
- Status/documentation/community badges for README.md
OpenFL 1.0
This release includes:
- The official open source release of OpenFL
- Tensorflow 2.0 and PyTorch support
- Examples for classification, segmentation, and adversarial training
- No-install Docker and Singularity* deployments
- Python native API intended for single node federated learning experiments
fx
CLI for multi-node production deployments- Additional test coverage for OpenFL components
* Singularity supported via DockerHub integration: singularity shell docker://openfl:latest