2.5.0: Latest release with features and bug fixes
What's new
https://nvflare.readthedocs.io/en/main/whats_new.html
https://nvidia.github.io/NVFlare/
-
User Experience Improvements¶
NVFlare 2.5.0 offers several new sets of APIs that allows for end-to-end ease of use that can greatly improve researcher and data scientists’ experience working with FLARE. The new API covers client, server and job construction with end-to-end pythonic user experience. -
Model Controller API¶
The new ModelController API greatly simplifies the experience of developing new federated learning workflows. Users can simply subclass the ModelController to develop new workflows. The new API doesn’t require users to know the details of NVFlare constructs except for FLModel class, where it is simply a data structure that contains model weights, optimization parameters and metadata.
You can easily construct a new workflow with basic python code, and when ready, the send_and_wait() communication function is all you need for communication between clients and server.
- Client API¶
We introduced another Client API implementation, InProcessClientAPIExecutor. This has the same interface and syntax of the previous Client API using SubprocessLauncher, except all communication is in memory.
Using this in-process client API, we build a ScriptExecutor, which is directly used in the new Job API.
Compared with SubProcessLauncherClientAPI, the in-process client API offers better efficiency and is easier to configure. All the operations will be carried out within the memory space of the executor.
SubProcessLauncherClientAPI can be used for cases where a separate training process is required.
- Job API¶
The new Job API, or FedJob API, combined with Client API and Model Controller API, will give users an end-to-end pythonic user experience. The Job configuration, required prior to the current release, can now be directly generated automatically, so the user doesn’t need to edit the configuration files manually.
We provide many examples to demonstrate the power of the new Job APIs making it very easy to experiment with new federated learning algorithms or create new applications.
-
Flower Integration¶
Integration between NVFlare and the Flower framework aims to provide researchers the ability to leverage the strengths of both frameworks by enabling Flower projects to seamlessly run on top of NVFlare. Through the seamless integration of Flower and FLARE, applications crafted within the Flower framework can effortlessly operate within the FLARE runtime environment without necessitating any modifications. This initial integration streamlines the process, eliminating complexities and ensuring smooth interoperability between the two platforms, thus enhancing the overall efficiency and accessibility of FL applications. Please find details here. A hello-world example is available here. -
Secure XGBoost¶
The latest features from XGBoost introduced the support for secure federated learning via homomorphic encryption. For vertical federated XGBoost learning, the gradients of each sample are protected by encryption such that the label information will not be leaked to unintended parties; while for horizontal federated XGBoost learning, the local gradient histograms will not be learnt by the central aggregation server.
With our encryption plugins working with XGBoost, NVFlare now supports all secure federated schemes for XGBoost model training, with both CPU and GPU.
Please check federated xgboost with nvflare user guide https://nvflare.readthedocs.io/en/main/user_guide/federated_xgboost.html and the example
- Tensorflow support¶
With community contributions, we add FedOpt, FedProx and Scaffold algorithms using Tensorflow. You can check the code here and the example
- FOBS Auto Registration¶
FOBS, the secure mechanism NVFlare uses for message serialization and deserialization, is enhanced with new auto registration features. These changes will reduce the number of decomposers that users have to register. The changes are:
Auto registering of decomposers on deserialization. The decomposer class is stored in the serialized data and the decomposers are registered automatically when deserializing. If a component only receives serialized data but it doesn’t perform serialization, decomposer registering is not needed anymore.
Data Class decomposer auto registering on serialization. If a decomposer is not found for a class, FOBS will try to treat the class as a Data Class and register DataClassDecomposer for it. This works in most cases but not all.
- New Examples¶
Secure Federated Kaplan-Meier Analysis¶
The Secure Federated Kaplan-Meier Analysis via Time-Binning and Homomorphic Encryption example illustrates two features:
How to perform Kaplan-Meier survival analysis in a federated setting without and with secure features via time-binning and Homomorphic Encryption (HE).
How to use the Flare ModelController API to contract a workflow to facilitate HE under simulator mode.
BioNemo example for Drug Discovery¶
BioNeMo is NVIDIA’s generative AI platform for drug discovery. We included several examples of running BioNeMo in a federated learning environment using NVFlare:
The task fitting example includes a notebook that shows how to obtain protein-learned representations in the form of embeddings using the ESM-1nv pre-trained model.
The downstream example shows three different downstream tasks for fine-tuning a BioNeMo ESM-style model.
Federated Logistic Regression with NR optimization¶
The Federated Logistic Regression with Second-Order Newton-Raphson optimization example shows how to implement a federated binary classification via logistic regression with second-order Newton-Raphson optimization.
Hierarchical Federated Statistics¶
Hierarchical Federated Statistics is helpful when there are multiple organizations involved. For example, in the medical device applications, the medical devices usage statistics can be viewed from both device, device-hosting site, and hospital or manufacturers’ point of views. Manufacturers would like to see the usage stats of their product (device) in different sites and hospitals. Hospitals may like to see overall stats of devices including different products from different manufacturers. In such a case, the hierarchical federated stats will be very helpful.
FedAvg Early Stopping Example¶
The FedAvg Early Stopping example tries to demonstrate that with the new server-side model controller API, it is very easy to change the control conditions and adjust workflows with a few lines of python code.
Tensorflow Algorithms & Examples¶
FedOpt, FedProx, Scaffold implementation for Tensorflow.
FedBN: Federated Learning on Non-IID Features via Local Batch Normalization¶
The FedBN example showcases a federated learning algorithm designed to address the feature shift problem when aggregating models across different data distributions.
In this work, we propose an effective method that uses local batch normalization to alleviate the feature shift before averaging models. The resulting scheme, called FedBN, outperforms both classical FedAvg and FedProx on our extensive experiments. These empirical results are supported by a convergence analysis that shows in a simplified setting that FedBN has a faster convergence rate than FedAvg.
End-to-end Federated XGBoost examples¶
In this example, we try to show that end-to-end process of feature engineering, pre-processing and training in federated settings. You can use FLARE to perform federated ETL and then training.
Developer Tutorial Page¶
To let users quickly learn Federated Learning with FLARE, we developed a tutorial web page with both code and video to interactively learn how to convert and run FL in a few minutes. We also created a tutorial catalog to help you easily search and find the examples you are interested in.
What's Changed
- updated the hello-TF2 readme [skip ci] by @yhwen in #2271
- Enhanced the Simulator client end_run solution by @yhwen in #2270
- Clean up master template yaml file (step 1) by @IsaacYangSLA in #2274
- updates examples, add version matching note [skip ci] by @SYangster in #2278
- Fix Auto login "communication error" by @chesterxgchen in #2279
- handle none value for the subcommand parser by @chesterxgchen in #2276
- Address VDR comments [slip ci] by @chesterxgchen in #2283
- Fix the client_executor improper lock use by @yhwen in #2282
- Add notebook for GNN examples by @ZiyueXu77 in #2289
- Fix FLModelUtil by @YuanTingHsieh in #2291
- Check invalid input directory in nvflare config by @chesterxgchen in #2295
- Refactor AWS and Azure cloud scripts of server and client by @IsaacYangSLA in #2275
- Added debug headers for all message route in CoreCell by @nvidianz in #2301
- Update execution api documentation and docstrings by @YuanTingHsieh in #2305
- Address VDR feedback by @SYangster in #2297
- Rename to execution api type, update job command output by @SYangster in #2306
- Move simulator workspace setup inside constructor by @YuanTingHsieh in #2311
- Update cli string [skip ci] by @YuanTingHsieh in #2313
- Remove base class Filter in ParamConverter by @YuanTingHsieh in #2312
- Add hello-ccwf to ci by @YuanTingHsieh in #2316
- Improve monai integration tracking example by @SYangster in #2318
- Exclude hidden json file when perform config parsing by @chesterxgchen in #2323
- apply nemo 2.4 fixes by @holgerroth in #2327
- Update all examples/research/integration requirements by @YuanTingHsieh in #2330
- Removed the no need client custom path. by @yhwen in #2322
- Enhance the handling of RC of task returned from clients by @IsaacYangSLA in #2338
- Add xgboost to CI/CD by @YuanTingHsieh in #2328
- Update cifar10 and gnn examples by @holgerroth in #2340
- Address final VDR feedbacks by @YuanTingHsieh in #2332
- Cifar10 fix plot by @holgerroth in #2346
- Added a few workarounds for HTTP driver's latency issues by @nvidianz in #2343
- Address VDR report by @SYangster in #2335
- Add notes about running TF with GPUs [skip ci] by @YuanTingHsieh in #2348
- Fix tb receiver by @YuanTingHsieh in #2349
- Clarify nemo example readme by @SYangster in #2352
- DataBus by @chesterxgchen in #2285
- Native FLARE/XGB integration by @yanchengnv in #2354
- Fix Pipe and PipeHandler by @YuanTingHsieh in #2356
- Setup for tf load_data by @SYangster in #2360
- tf dataset setup and teardown by @SYangster in #2366
- Fix nemo example link by @holgerroth in #2373
- Update outdated links by @YuanTingHsieh in #2368
- Clean up FilePipe remains by @YuanTingHsieh in #2369
- In process Client API Executor Part 1 by @chesterxgchen in #2248
- BioNeMo examples by @holgerroth in #2241
- Fix LauncherExecutor handle_event by @YuanTingHsieh in #2370
- Fix NEMO links by @YuanTingHsieh in #2385
- Update xgboost tree code by @YuanTingHsieh in #2383
- Reliable aux msg by @nvidianz in #2380
- Fix header parameter handling in sklearn's data_loader, update README with new AUC by @mikez3 in #2363
- Controller Refactor Part 1: separate communication by @SYangster in #2390
- Update publication list by @holgerroth in #2395
- Job submission with binary protocol by @yanchengnv in #2393
- Update rr_order to cyclic_order by @SYangster in #2412
- Updated FOBS readme to add DatumManager, added agrpcs as secure scheme by @nvidianz in #2410
- Multiple CC Authorizer support CCManager by @yhwen in #2396
- Support Responder functions by @SYangster in #2397
- Exclude non-training clients from cse by @yanchengnv in #2421
- Fix mlflow example tag links by @YuanTingHsieh in #2423
- Lightning client api patch multiple times by @YuanTingHsieh in #2424
- Add check to client api send method by @YuanTingHsieh in #2425
- Fixed the wrong workspace object in the simulator worker by @yhwen in #2429
- Fix api send typo by @YuanTingHsieh in #2432
- Enable StreamCell for all application channels by @YuanTingHsieh in #2407
- Add back request header by @YuanTingHsieh in #2440
- Check wandb login by @SYangster in #2445
- Clarify download_job workspace delay by @SYangster in #2454
- Client API Update: Job Templates, examples to reflect different type of Client API by @chesterxgchen in #2456
- Add controller interface by @SYangster in #2451
- Update README.md by @chesterxgchen in #2460
- Improve reliable msg by @yanchengnv in #2459
- CC block byoc jobs by @yhwen in #2403
- Fixed the authz and site_security check for check_resource command by @yhwen in #2462
- Add garbage collect at ends of round-based workflows by @SYangster in #2463
- Add WFController by @SYangster in #2468
- Add warning when the same admin in project.yml has different role by @IsaacYangSLA in #2470
- Add custom order and early termination to CyclicController by @YuanTingHsieh in #2387
- Add IPC agent and exchanger by @yanchengnv in #2435
- Fix a typo in ModelController by @holgerroth in #2473
- Refactor WFController and ModelController by @SYangster in #2475
- Add example for mulitparty kaplan-meier analysis with HE by @ZiyueXu77 in #2259
- Remove task_fn_args by @SYangster in #2479
- Enable simulator to run HE by @yhwen in #2339
- Fix simulator workspace by @SYangster in #2489
- Fix xgboost integration tests by @SYangster in #2486
- Add FedBPT research example by @holgerroth in #2465
- Fix xgboost test setup by @SYangster in #2494
- add Client API documentation by @chesterxgchen in #2497
- Added more logging for the job status changing. by @yhwen in #2480
- Fix update client status by @SYangster in #2508
- Add user guide on how to deploy to EKS by @IsaacYangSLA in #2510
- Improve dead client handling by @yanchengnv in #2506
- Enhance WFController by @SYangster in #2505
- Temporarily disable preflight tests by @SYangster in #2521
- Upgrade dependencies by @YuanTingHsieh in #2516
- Use full path for PSI components by @YuanTingHsieh in #2517
- Multiple bug fixes from 2.4 by @YuanTingHsieh in #2518
- Pythonic job creation by @yhwen in #2483
- Enhancements from 2.4 by @YuanTingHsieh in #2519
- Update ci cd from 2.4 by @YuanTingHsieh in #2520
- Use controller name for stats by @SYangster in #2522
- Simulator workspace re-design by @yhwen in #2492
- Simulator end run for all clients by @yhwen in #2514
- Secure XGBoost Integration by @nvidianz in #2512
- simplify Pythonic job simulator_run with only workspace parameter by @yhwen in #2528
- Add missing client api test jobs by @YuanTingHsieh in #2535
- Fixed the simulator server workspace root dir by @yhwen in #2533
- Improve InProcessClientAPIExecutor by @chesterxgchen in #2536
- User-defined aggregate_fn by @SYangster in #2539
- FIX MLFLow and Tensorboard Output to be consistent with new Workspace root changes by @chesterxgchen in #2537
- Fix decorator issue by @YuanTingHsieh in #2542
- FLModel summary by @chesterxgchen in #2544
- Update KM example, add 2-stage solution without HE by @ZiyueXu77 in #2541
- handle cases where the script with relative path in Script Runner by @chesterxgchen in #2543
- Lr newton raphson by @zhijinl in #2529
- Add information about dig (bind9-dnsutils) in the document [skip ci] by @IsaacYangSLA in #2548
- Update monai readme to remove logging.conf [skip ci] by @YuanTingHsieh in #2552
- MONAI mednist example by @holgerroth in #2532
- Improve AWS cloud launch script by @IsaacYangSLA in #2547
- Add in process client api tests by @YuanTingHsieh in #2549
- Add client controller executor by @SYangster in #2530
- Add option in dashboard cli for AWS vpc and subnet by @IsaacYangSLA in #2569
- [2.5] Clean up to allow creation of nvflare light by @yanchengnv in #2573
- Enable patch and build for nvflare_light by @IsaacYangSLA in #2574
- add FedBN Implementation on NVFlare research folder - a local batch normalization federated learning method by @MinghuiChen43 in #2524
- FIx MLFLOW example bugs by @chesterxgchen in #2575
- BugFix: InProcessClientAPIExecutor's TaskScriptRunner by @chesterxgchen in #2558
- update client_api.png by @chesterxgchen in #2577
- Fix the simulator worker sys path by @yhwen in #2561
- Moved the get_component_init_parameters to class_utils by @yhwen in #2578
- Add Cyclic WFController by @SYangster in #2554
- Horizontal Secure XGBoost Support by @nvidianz in #2562
- Fobs auto register by @yhwen in #2567
- Update TF2 example by @holgerroth in #2587
- added handle for class in the to-level main script for job creation API. by @yhwen in #2592
- Fix CI failure by @YuanTingHsieh in #2590
- Add API for Pythonic Job Creation by @holgerroth in #2563
- Escape character ' in the sub_start.sh. by @IsaacYangSLA in #2581
- Enable delayed model build by @holgerroth in #2596
- Rename WFController to ModelController by @SYangster in #2588
- Update readme of KM by @ZiyueXu77 in #2593
- Missing sj heartbeat by @yhwen in #2583
- Getting started guide with job tutorial by @holgerroth in #2598
- Add fedopt workflow by @SYangster in #2550
- Enhance the client sync_runner process to timeout use max_timeout, in… by @yhwen in #2603
- Reduce timeout warnings during NeMo PEFT example by @holgerroth in #2605
- [2.5] Support config dict by @yanchengnv in #2604
- Job CLI bugs fix by @chesterxgchen in #2607
- Added target validation for job API by @yhwen in #2606
- Add ipcl_python lib by @YuanTingHsieh in #2612
- add the runner_config to the client by @yhwen in #2615
- Add hierarchical statistics support by @apatole in #2608
- Added empty results check for aggregate_fn by @yhwen in #2613
- allow absolute path for the external script by @yhwen in #2565
- [2.5] fix missing replying var by @yanchengnv in #2619
- Added engine.add_component() function by @yhwen in #2621
- Add lightning and tensorflow getting started notebooks by @SYangster in #2610
- [2.5] Support log file rotation in admin commands by @yanchengnv in #2624
- Update blossom-ci ACL to secure format [skip ci] by @pxLi in #2628
- Fix docs typos by @apatole in #2629
- Build process update by @IsaacYangSLA in #2638
- Fix
project.yml
master templates by @apatole in #2617 - [2.5] Consolidate text file name validation by @yanchengnv in #2632
- Update setup.py for base version and nightly build by @IsaacYangSLA in #2644
- Add licenses for website by @SYangster in #2645
- Add flare site to github pages by @SYangster in #2642
- Wrap the xgboost plugin into a C library. by @trivialfis in #2639
- Add Secure XGBoost example by @ZiyueXu77 in #2635
- aws cloud deployment improvements by @dirkpetersen in #2618
- Add feedback when users launch dashboard to cloud with editable version by @IsaacYangSLA in #2655
- Added external script for fed_job API by @yhwen in #2623
- update client_api executor docs by @yhwen in #2661
- Fix DockerBuilder to add
build
section by @apatole in #2662 - Use npm for pages deployment by @SYangster in #2665
- Allow the simulator to pass the End_Run aux message to clients by @yhwen in #2653
- Use google drive video embeddings by @SYangster in #2668
- Change the ScatterAndGather default persistor_id by @yhwen in #2664
- AWS cloud deployments: Adding multi-region capability and auto-detection of GPU instance types and AMI images by @dirkpetersen in #2650
- Fixed the numpy release version by @yhwen in #2670
- Add correct params exchange format for tf by @SYangster in #2676
- BUGFIX: cloud deployment script issue with OSX by @dirkpetersen in #2677
- Add min_responses to send_model_and_wait() by @SYangster in #2675
- Resolve CVE with updated dependency by @IsaacYangSLA in #2681
- Add site enhancements by @SYangster in #2682
- Enhance ModelController arguments by @SYangster in #2683
- FOBS Enhancement by @nvidianz in #2580
- [2.5] Support app commands through admin by @yanchengnv in #2647
- Updates for num_clients by @SYangster in #2685
- FedAvg Early Stopping with ModelController by @SYangster in #2648
- fixed TaskScriptRunner which may locate the wrong script by @yhwen in #2626
- Fixed the sys.path for fedavg_model_learner_xsite_val_cifar10 example by @yhwen in #2614
- Update getting started notebooks for 2.5.0rc by @SYangster in #2690
- Fix Fed Stats due to recent changes by @chesterxgchen in #2691
- Support server side custom scripts in job API by @holgerroth in #2695
- update notebooks due to the simulator changes by @chesterxgchen in #2696
- Fix DAM Unit Test by @nvidianz in #2692
- Update version number MONAI and the bundle version by @nvkevlu in #2702
- Add Hierarchical Stats example by @apatole in #2694
- Update Hello Client Controlled Workflow(CCWF) README.md by @tonywjs in #2709
- Update stats READMEs by @apatole in #2711
- Fix torch ddp by @YuanTingHsieh in #2706
- Cherry pick RM fix from #2667 by @YuanTingHsieh in #2700
- Update ClientAlgo by @YuanTingHsieh in #2705
- Fix ClientAPILauncherExecutor import path to remove torch dependency. by @zhijinl in #2713
- Fix cyclic job creation example by @holgerroth in #2627
- Use ReliableMessage from 2.4 by @YuanTingHsieh in #2717
- Enhance CLI command config by @YuanTingHsieh in #2716
- Add CrossSiteEval with ModelController by @SYangster in #2699
- Enhance job auth setup script by @YuanTingHsieh in #2715
- Merging XGBoost changes from 2.4 by @nvidianz in #2712
- [2.5] Fix pipe handler race condition handling by @yanchengnv in #2728
- Remove serialization of pfx by @IsaacYangSLA in #2721
- Update readme link to website by @SYangster in #2734
- Fix BcastTaskManager min_responses by @SYangster in #2733
- Fix cell encrypt by @YuanTingHsieh in #2732
- keep the local resources for simulator by @yhwen in #2730
- Support same app for all sites in Job API by @holgerroth in #2714
- Fix overseer test timing by @YuanTingHsieh in #2743
- Add ModelController documentation by @SYangster in #2707
- [2.5] TIE (Technology for Integrating Everything) and Flower Inegration by @yanchengnv in #2523
- Add MetricsSender docstring by @YuanTingHsieh in #2745
- Update MONAI example by @YuanTingHsieh in #2724
- [2.5] Fix clone job to keep original job by @yanchengnv in #2755
- Bump up the version of monai-nvflare package to 0.2.9 by @IsaacYangSLA in #2749
- Update getting_started.rst by @hwpang in #2737
- Add CIFAR 10 examples for Tensorflow-based FedAvg & FedOpt by @zhijinl in #2704
- Minor fix for instructions in setup_poc.ipynb for main by @hwpang in #2752
- Added id to the jobAPI swarm_script_executor_cifar10 component deploy by @yhwen in #2678
- XGBoost plugin with new API by @nvidianz in #2725
- Moved the simulator server logger init earlier by @yhwen in #2753
- Cherry pick XGB docs from #2671 by @SYangster in #2759
- Getting started readmes by @holgerroth in #2757
- fix the CrossSiteEvalClientController in swarm_script_executor_cifar10 by @yhwen in #2762
- Cherry pick fixes from 2.4 by @YuanTingHsieh in #2768
- Cherry pick launcher log fix by @YuanTingHsieh in #2766
- Update xgboost user guide by @SYangster in #2750
- Honor optional flag at streaming level by @nvidianz in #2771
- Removed the app_opt scan by @yhwen in #2758
- Add job API to support additional external dir in the custom dir by @yhwen in #2748
- Moved the hello-pt example initialization to START_RUN by @yhwen in #2735
- Fix config file name in doc by @YuanTingHsieh in #2772
- Fix loading cli history in admin console by @IsaacYangSLA in #2777
- Port 2.4 xgb changes by @YuanTingHsieh in #2773
- implementation of Scaffold and FedProx for TensorFlow by @falibabaei in #2727
- name to path changes in configuration by @yhwen in #2781
- Added error handling for XGB_CONFIGURED event by @nvidianz in #2780
- Fix JobAPI Persistor handling by @SYangster in #2775
- Add FedJobAPI documentation by @SYangster in #2718
- fixed the cross validation wrong config for swarm_script_executor_cifar10 by @yhwen in #2778
- Fixed the mgpu simulator workspace change error by @yhwen in #2770
- Update Secure XGBoost example w.r.t. XGBoost's code changes by @ZiyueXu77 in #2686
- Improve the kill children processes by @yhwen in #2789
- Add back metric callback and fix examples based on new xgboost version by @YuanTingHsieh in #2787
- [2.5] Improve app_command by @yanchengnv in #2782
- Add docstring to reliable message by @YuanTingHsieh in #2788
- Pre-trained Model and training_mode changes by @nvidianz in #2793
- Update xgboost example and ci by @YuanTingHsieh in #2794
- [2.5] Update flower CLI by @yanchengnv in #2792
- Fix FedBN api key issue by replacing comet by @ZiyueXu77 in #2798
- more app_opt scan example changes by @yhwen in #2797
- Add first version of release notes by @nvkevlu in #2800
- FIX hard-coded sp_end_point in POC by @chesterxgchen in #2795
- Add hello examples with new APIs by @nvkevlu in #2785
- Update autofedrl example by @ZiyueXu77 in #2801
- Refactor XGBDataLoader by @YuanTingHsieh in #2804
- Fix HE docstring typo by @YuanTingHsieh in #2802
- re-arrange getting started examples by @chesterxgchen in #2805
- Update secure xgboost examples by @YuanTingHsieh in #2803
- XGBoost user interface change and XGBoost version check by @nvidianz in #2808
- Add lock to reliable message by @nvidianz in #2811
- Fixed 2 PTFileModelLocator config errors (Research) by @yhwen in #2807
- Update xgboost example by @YuanTingHsieh in #2813
- Refactor Job API by @SYangster in #2799
- Add CUDA plugin code by @YuanTingHsieh in #2814
- Fix Jenkins CI by @YuanTingHsieh in #2812
- Remove the module class scan by @yhwen in #2790
- Change all name to path by @YuanTingHsieh in #2817
- Add back hello-numpy-sag and update references by @nvkevlu in #2816
- Revert "Remove the module class scan " by @yhwen in #2819
- Fix config typos by @YuanTingHsieh in #2818
- Relax grpcio/protobuf versions by @nvidianz in #2822
- ScriptExecutor improvements by @SYangster in #2820
- Fix Job API Examples by @SYangster in #2823
- Support ScriptRunner in ccwf_job by @yanchengnv in #2825
- ScriptRunner framework option in examples by @SYangster in #2827
- Use pre module scan to create classes table by @yhwen in #2824
- Add one entry in MANIFEST.in by @IsaacYangSLA in #2826
- Add NVIDIA FLARE DAY banner by @SYangster in #2829
- Fix existing xgboost examples by @YuanTingHsieh in #2830
- Remove unused code and update README by @YuanTingHsieh in #2828
- Fixed the config changes error by @yhwen in #2834
- Minor fixes to xgboost example by @hwpang in #2832
- fix notebook errors by @chesterxgchen in #2835
- Update requirements versions by @nvkevlu in #2831
- Add NPModelPersistor to hello-fedavg-numpy by @SYangster in #2837
- improve the class_utils to handle the duplicate class name case by @yhwen in #2833
- Add migration guide by @nvkevlu in #2806
- Fix hello-pt and empty metrics by @SYangster in #2840
- Update ml-to-fl examples with new APIs by @SYangster in #2836
- Add example notebook for docker by @nvkevlu in #2767
- hello-pt-mlflow job api example by @yhwen in #2839
- Credit Card Fraud detection end-to-end with XGBoost by @chesterxgchen in #2738
- rolled back the job api custom_file copy destination change by @yhwen in #2848
- Remove basename in ScriptRunner by @SYangster in #2849
- Update site code blocks and links by @SYangster in #2847
- Gradient inversion fix dtype error by @holgerroth in #2852
- Convert step-by-step stats examples to use new Job API by @chesterxgchen in #2842
- Convert tree-based Fed XGBoost with Job API by @chesterxgchen in #2843
- Convert Scikit-Learn examples (SVM, Kmeans, Linear) to use Job API by @chesterxgchen in #2845
- Added Debug in ReliableMessage and Ignore XGB errors after shutdown by @nvidianz in #2851
- Update arg name for MLflowReceiver by @YuanTingHsieh in #2850
- Update step by step examples to use Job API by @YuanTingHsieh in #2841
- Update client api to use same task as CSE and update step-by-step CSE by @YuanTingHsieh in #2844
- Autofedrl fix for updated locator behavior by @ZiyueXu77 in #2856
- Convert CCWF examples to use Job API by @SYangster in #2846
- Fixed the SubprocessLauncher missing app_custom_folder in PYTHONPATH by @yhwen in #2857
- Add FLModel parameter checks by @SYangster in #2859
- Clarify default persistor_id by @SYangster in #2861
- Added check for duplicate RM request by @nvidianz in #2858
- Add support of just doing metrics streaming with client api by @YuanTingHsieh in #2763
- Add flower metrics streaming example by @YuanTingHsieh in #2764
- Add docs for Flower integration by @nvkevlu in #2862
- Update simulator folder path for random forest example by @ZiyueXu77 in #2865
- Fix an XGB Failure caused by len() by @nvidianz in #2863
- Fed Stats Notebooks and Read ME: fix fed stats output directory due to simulator output structure changes by @chesterxgchen in #2864
- Fixed the wrong dh_psi_task_handler path by @yhwen in #2866
- improve race condition handling by @yanchengnv in #2867
- support passing custom env vars for flower client by @yanchengnv in #2870
- Gradient inversion: fix cross-validation path by @holgerroth in #2869
- Update Job API docs after redesign by @SYangster in #2873
- Updated xgboost user guide by @nvidianz in #2872
- Add pipe docstring by @YuanTingHsieh in #2868
- Update flower examples by @YuanTingHsieh in #2871
- Clean up getting started installation docs by @nvkevlu in #2874
- Make the Launcher extends FLComponent by @yhwen in #2875
- BioNeMo examples: fix docs by @holgerroth in #2877
- Fix heartbeat timeout config by @SYangster in #2878
- Added more handling for the source file import handling by @yhwen in #2876
- Update the generated component classes table by @yhwen in #2879
- Fix for last index of module path by @yhwen in #2881
- Fix hierarchical stats documentation by @apatole in #2882
- Update fedbn example by @ZiyueXu77 in #2883
- fix path due to simulator output structure changes by @chesterxgchen in #2885
- Add note on installing nvflare in requirements by @nvkevlu in #2884
- Fix sbs notebooks by @SYangster in #2887
- Re-factor hello-numpy-cse example by @YuanTingHsieh in #2880
- Update CrossSiteEval by @YuanTingHsieh in #2886
- Add printing of tb logdir by @YuanTingHsieh in #2888
- Update getting_started cifar notebook by @ZiyueXu77 in #2889
- Deprecate decorator pattern by @YuanTingHsieh in #2891
- Added instructions to run horizontal secure XGBoost in simulator by @nvidianz in #2890
- Updated plugin build doc by @nvidianz in #2892
- fix PSI and Vertical learning paths by @chesterxgchen in #2893
- Fix ci test configs format issue by @YuanTingHsieh in #2896
- Remove bionemo from new by @nvkevlu in #2897
- Update random forest and vertical xgb examples by @ZiyueXu77 in #2895
- Site, docs, and example updates by @SYangster in #2894
- Update xgboost requirements by @YuanTingHsieh in #2898
- Update flare simulator tutorial by @YuanTingHsieh in #2899
- Fix tf weights filename by @SYangster in #2901
- Add log info for flower executor by @YuanTingHsieh in #2900
- Fix hello-pt-cse job by @YuanTingHsieh in #2905
- Undo remove bionemo from new by @nvkevlu in #2902
- Add vertical xgboost gpu instructions by @YuanTingHsieh in #2903
- Fix bionemo examples by @holgerroth in #2904
- Fixed Plugin README by @nvidianz in #2906
- Update xgboost docs by @nvkevlu in #2907
- Added debug info for memoryview error by @nvidianz in #2908
- Change job simulator run to use Popen by @yhwen in #2909
- Fix hello_world tf result printing by @SYangster in #2910
- Fixed XGBoost Example README by @nvidianz in #2913
- Fix cifar10 examples num_clients by @SYangster in #2914
- Fix data save path by @YuanTingHsieh in #2917
- trim the whitespace of the clients and gpu from the job simulator_run by @yhwen in #2912
- Add CSE with job api with client api by @YuanTingHsieh in #2918
- Update to use BaseFedJob by @SYangster in #2919
- Warning for Mixed Plugin Use by @nvidianz in #2920
- BugFix: Hierarchical Fed Stats, prepare data: replace os.rename() function by @chesterxgchen in #2921
- Note about Simulator in XGBoost Doc by @nvidianz in #2911
- Add params_transfer_type to ScriptRunner by @SYangster in #2922
- Fix nemo examples by @holgerroth in #2923
- Added the current-round info the fl_ctx for BaseModelController by @yhwen in #2916
- Fix ci path by @YuanTingHsieh in #2927
- Fix xgb standalone fed by @YuanTingHsieh in #2924
- Fixing the memoryview issues by @nvidianz in #2926
- Fixing memoryview error by @nvidianz in #2929
New Contributors
- @mikez3 made their first contribution in #2363
- @zhijinl made their first contribution in #2529
- @MinghuiChen43 made their first contribution in #2524
- @apatole made their first contribution in #2608
- @trivialfis made their first contribution in #2639
- @dirkpetersen made their first contribution in #2618
- @tonywjs made their first contribution in #2709
- @hwpang made their first contribution in #2737
- @falibabaei made their first contribution in #2727
Full Changelog: 2.4.0...2.5.0