Releases: OpenMined/PySyft
Releases · OpenMined/PySyft
v0.2.5
PySyft v0.2.5 Release Notes
Breaking changes since v0.2.4:
CRTPrecisionTensor
andLargePrecisionTensor
have been removed (#2982 by @Yugandhartripathi)- Autograd for
sqrt
has been disabled due to garbage collection issues (#3387 by @Syzygianinfern0) - Support for
custom
dtype in SecureNN has been dropped (#3392 by @Syzygianinfern0) - API and attributes of
Protocol
have changed significantly during on-going rework (#3409 by @Jasopaum)
New functionality:
- Add multi-worker computation graph support to allow gradients to be calculated on tensors moved across workers (#3083 by @LaRiffle)
- Add dropout support for SMPC (#3195 by @sukhadj)
- Add a Chebyshev approximation for sigmoid (#3205 by @gmuraru)
- Add
host_federated_training_method
toGridClient
(#3253 by @hericlesme) - Add a
protocol
kwarg toencrypt()
to select between MPC and Paillier HE (#3234 by @Syzygianinfern0) - Add
device
option toasync_fit
to enable optional GPU training on workers (#3299 by @wmlba) - Add
Plan
translation to Torchscript (#3263 and #3360 by @vvmnnnkv) - Make it possible to
send
andget
datasets (#3266 by @abogaziah) - Add
requires_grad
andno_wrap
kwargs toencrypt()
for MPC secret sharing (#3368 @Syzygianinfern0) - Add
buffers
iterator for tensor elements oftorch.nn.module
(#3273 by @ratmcu) - Increase field size to 2**64 in
AdditiveSharingTensor
andFixedPrecisionTensor
(#2982 by @Yugandhartripathi) - Add Syft version checking for Grid nodes (#3380 by @IonesioJunior)
- Make
Placeholders
forward unknown methods to child tensors (#3377 by @gmuraru) - Add average and max-pooling with SMPC (#3399 by @abogaziah)
- Add an initial implementation of Function Secret Sharing using
Plans
(#3057 by @LaRiffle) - Make
Plan
tracing work withbackward()
and autograd (#3383 by @vvmnnnkv) - Make SecureNN work with more than 3 parties (#3148 by @knexator)
- Rework
Protocols
to trace multipleRoles
from a single function (#3409 by @Jasopaum)
Bug fixes:
- Fix the
Placeholder
serialization (#3256 by @rotalex) - Remove implicit in-place
fix_precision
forPointerTensor
( #3271 by @sukhadj) - Fix overloading for
torch.nn
andtorch.nn.functional
modules (#3269 by @Syzygianinfern0) - Fix indexing Syft tensors with lists (#3285 by @rotalex)
- Fix circular import and overloading in RNNs (#3286 by @Syzygianinfern0)
- Don’t assume
self
is inknown_workers
inBaseWorker
(#3370 by @karlhigley) - Fix memory leak in
AdditiveSharingTensor
operations (#3343 by @Syzygianinfern0) - Fix garbage collection for
AutogradTensor
(#3387 by @Syzygianinfern0) - Call native Torch functions with their original names if not overloaded (#3323 by @youben11)
- Fix a bug in the
AdditiveSharingTensor.dtype
serde (#3396 by @Jasopaum) - Auto-register the Torchscript
Plan
translator (#3405 by @vvmnnnkv) - Fix garbage collection in
BaseWorker.execute_computation_action()
and Torch in-place method identification (#3403 by @Syzygianinfern0) - Fix a double-tracing bug in
Plans
(#3428 by @Jasopaum)
Refactoring:
- Decouple
Plan
methods from each other by removing temporary attributes (#3203 by @karlhigley) - Consolidate
run_websocket_server.py
files (#3225 and 3265 by @vineetjai) - Use
PlaceholderIds
inActions
andPlans
instead of fullPlaceholders
(#3223 by @Jasopaum) - Clean up
FixedPrecisionTensor
and related classes (#3253 by @sachin-101) - Extract a
Role
class fromPlans
(#3201 by @Jasopaum) - Generalize
Role
to any type ofAction
, including computation or communication (#3295 by @karlhigley) - Remove a redundant
is_built
check fromPlans
(#3292 by @gmuraru) - Remove
eval
fromRole
execution with framework package store (#3295 by @karlhigley) - Disambiguate method
args
andkwargs
from arguments and local variablesargs_
andkwargs_
(#3314 by @karlhigley) - Handle
Plan
state tensors as arguments to Torchscript (#3361 by @vvmnnnkv) - Rework
PlanTranslatorTorchscript
so it doesn’t stripParameters
from tensor chains (#3376 by @karlhigley and @Syzygianinfern0) - Make
Plan
tracing happen from thePlaceholders
instead of the Torch hooks (#3303 by @Jasopaum) - Add a
name
field toCommunicationAction
(#3352 by @Prtfw) - Remove
init_plan
attribute fromBaseWorker
to decouple fromPlans
(#3404 by @karlhigley) - Remove a
value()
method left over fromPromises
(#3418 by @Jasopaum) - Remove deprecated properties and methods from
Plan
(#3408 by @karlhigley) - Fix a warning about
getargspec
deprecation inPlans
(#3421 by @gmuraru)
Examples and Tutorials:
- Update FL training plan notebooks to report diff to PyGrid (#3224 by @vvmnnnkv)
- Add a tutorial on model inversion attacks (#3258 by @TTitcombe)
- Fix typo in Grid Part 3 (#3351 by @sfmajors373)
- Explicitly specify encryption protocol in PaillierTensor notebook (#3353 by @Syzygianinfern0)
- Fix
smart_city_aggregation
in Grid Part 3 notebook (#3342 by @IonesioJunior) - Clean up cells in Tutorial Part 13a (#3290 by @ivynasantino)
Translations:
- Add Pidgin translations of Parts 1-7, 9 (#3149 by @TemitopeOladokun)
- Add Korean translations of Part 2 (#3051 by @wonderit), Part 4 (#3270 by @seungjaeryanlee)
- Add Japanese translations of Parts 1-12 (#3182 by @kouohhashi), Part 13 (#3242 by @MADONOKOUKI)
- Add German translations of Parts 2-8,10 (#3294 and others by @JMBehnken)
- Add Marathi translations of Parts 1-7 (#3173 by @Noob-can-Compile)
Documentation:
- Update the docstrings and argument types for
federated_avg
method (#3251 by @DanyEle) - Add docstrings to
ObjectStorage
tests (#3177 by @vineeth14) - Fix installation command in the README (#3280 by @stephenjfox)
- Update
PointerTensor
docstrings (#3379 by @jaintj95) - Update the
CONTRIBUTING.md
doc (#3414 by @Prince326) - Add a link the PySyft ReadTheDocs page to the
README
(#3412 by @lucasshenv)
Tests and Builds:
- Start remote worker in test suite on
0.0.0.0
instead oflocalhost
(#3218 by @rotalex) - Add codecov integration (#3230 and others by @imskr)
- Add additional code owners for automated PR review requests (#3239, #3240 by @karlhigley)
- Run the tests in random orders to shake out flaky tests (#3127 by @karlhigley)
- Skip the main test suite for translation-only PRs (#3328 by @karlhigley)
- Add
sklearn
dependency for notebooks (#3339 and #3347 by @ucalyptus) - Fix missing
device
param intest_federated_client.py::test_fit
(#3346 by @karlhigley) - Add
dtype
specification totest_pate.py::test_torch_ref_match
(#3348 by @gmuraru) - Extract
State
andTranslator
tests fromPlan
tests (#3378 by @karlhigley) - Add tolerance to gradient clipping test (#3327 by @gmuraru)
- Add a PR template (#3268 by @sachin-101)
- Create a manifest file to include
pip-dep/
directory for Conda package (#3420 by @systemshift) - Increase tolerance for sigmoid approximation tests (#3427 by @gmuraru)
v0.2.4
Changes since 0.2.3
New functionality:
- Added the option to compute
tanh
using sigmoid or Chebyshev approximation (#3113 by @gmuraru) - Added model parameters as a default optimizer parameter in
FederatedClient
(#3117 by @gconst02) - Added an
Optims
class to track remote optimizers in federated learning (#3179 by @rimijoker) - Added the ability to use a
Plan
input as an output (#3199 by @tudorcebere) - Added the ability to send and get
Datasets
(#2960 by @abogaziah)
Refactoring:
- Extensive improvements
Plan
,Placeholder
, and the Torch hook (#3080 by @LaRiffle) - Split
Operation
class into separate message and action classes (#3132 and #3168 by @Jasopaum and @karlhigley) - Added a new message for executing non-tensor operations on remote workers (#3048 by @midokura-silvia)
- Reworked
BaseWorker's
message router to use message classes in handler functions (#3175 by @Jasopaum and @karlhigley) - Standardized the names of command message to
TensorCommandMessage
,PlanCommandMessage
, andWorkerCommandMessage
(#3198 by @karlhigley) - Moved the
Placeholder
class to theexecution
package (#3211 by @karlhigley) - Converted existing formatted strings to f-strings for consistency and performance (#3186 by @TTitcombe
- Replaced zstd compression library with zlib (#3150 and #3164 by @refactormyself)
Bug fixes:
- Fixed
VirtualWorker
message sending test (#3139 by @gmuraru) - Fixed event loop error when starting a
WebsocketServerWorker
in a notebook (#3196 by @imskr and #3204 by @gmuraru) - Stopped creating grad tensors for frozen layers (#3200 by @tudorcebere)
Documentation:
- Added homomorphic encryption to the Introduction section (#3135 by @LaRiffle)
- Updated supported PyTorch version to 1.4 (#3140 by @codeboy5)
- Added a note about support Python versions (#3154 by @J-Yash)
- Added a note about using Python 3.7 with conda (#3162 by @teddykoker)
- Added docstrings to callable pointer tests (#3130 by @steph-en-m)
- Added instructions for installing TF Encrypted (#3197 by @rimijoker)
Tutorials:
- Fixed FL training plan tutorials and added a PyGrid FL hosting example (#3185 by @vvmnnnkv)
- Cleaned up the tutorials directory structure (#3159 by @bicycleman15)
- Removed a stray cell from Part 5 - Welcome to the Sandbox (#3155 by @bicycleman15)
- Removed unnecessary
requires_grad
in Part 2 (#3216 by @bicycleman15)
Translations:
- Bengali:
- Part 3 (#3133 by @adventuroussrv), Parts 4 and 5 (#3121 by @jabertuhin)
- German:
- Part 1 (#3178 by @vineetjai)
Builds:
- Set up code owners to automatically request reviews from the relevant OpenMined teams for various parts of the PySyft codebase (#3192 and #3215 by @karlhigley, @LaRiffle, and @AlanAboudib)
v0.2.3
Changes since 0.2.2
New functionality:
- Migrates PySyft to PyTorch 1.4 (#2930 by @gmuraru)
- Implements tanh for FixedPrecisionTensors using Chebyshev approximation (#3004 by @gmuraru)
- Adds the ability to simulate latency with VirtualWorkers (#3070 by @jefersonf)
- Adds Protobuf serialization for Placeholders, Plans, and States (#2972 by @karlhigley)
Refactoring:
- Reworks Plans for smoother serialization to multiple formats (#2910 by @LaRiffle and @vvmnnnkv)
- Moves Plans, Protocols, and States from the
messaging
package to theexecution
package (#3078 by @karlhigley) - Renames Operation class to OperationMessage (#3090 by @karlhigley)
Bug fixes:
- Fixes retrieval of the fit() result in WebsocketClientWorker (#2948 by @brandonhee)
- Fixes numeric issues in handcrafted Conv and Pool implementations (#2945 and #2964 by @arshjot)
- Removes an insecure eval in native tensor interpreter (#2951 by @karlhigley)
- Fixes PyTorch JIT tracing compatibility for Plans (#2988 by @karlhigley)
- Removes workarounds for previous versions of PyTorch (#2999 by @gmuraru)
- Pins requests dependency specification to version 2.22.0 (#2970 by @ADMoreau)
- Fixes interoperability of AutogradTensors with other tensors vis a vis
requires_grad
(#2998 by @gmuraru) - Improves logging, typing, and documentation of PATE implementation (#3033 by @TTitcombe)
- Fixes a potential security issue with unsafe YAML loading (#3037 by @systemshift)
- Raises an error when attempting to additively share FloatTensors (#3094 by @pierrepocreau)
- Improves testing for Syft's RNN implementation (#3092 by @jimboH)
- Changes dependency specifications to require compatible versions (#3119 by @karlhigley)
- Fixes compatibility with msgpack 1.0 serialization library (#3067 by @IonesioJunior and #3073 by @hdodenhof)
Documentation:
- Adds Sphinx documentation (#3017 by @Benardi)
- Fixes notebook test badge (#3028 by @jefersonf)
- Adds a link to the Udacity Secure And Private AI course (#3016 by @AVJdataminer)
- Improves instructions for developing protocol changes with
syft-proto
(#2818 by @refactormyself)
Tutorials:
- Adds model evaluation to SplitNN tutorial (#2983 by @midokura-silvia)
- Adds a note to Part 10 FL with Secure Aggregation tutorial about hooking Numpy (#3022 by @fdroessler)
Translations:
- Bengali:
- French:
- Part 1 (#3107 by @r0cketr1kky)
- Hindi:
- Parts 5, 6, 7, 13b, and 13c (#2909 and #3055 by @raheja)
- Part 13a (#2958 by @Yugandhartripathi)
- Italian:
- Portuguese:
- Part 1 (#3035 by @MarcioPorto)
- Parts 7, 8, and 8bis (#2977 by @joaolcaas)
- Parts 9, 10 and 11 (#2980 by @jefersonf)
- Parts 12 and 13a (#3015 by @marcusvlc)
- Parts 12bis and 13b (#3020 by @hericlesme)
- Part 13c (#3023 by @Izabellaaaq)
- Spanish:
- Ukrainian:
Builds:
- Moves automated testing of PRs from Travis to Github Actions (#2936, #3012, and #3013 by @karlhigley and @systemshift)
- Adds a security scan for every PR (#3036 by @systemshift)
- Runs automated translation tests only on the notebooks that changed to speed up the builds (#3064 by @arturomf94)
- Automatically updates the
pysyft-notebook
Docker image when changes are merged tomaster
(#3030 by @linamnt) - Caches dependencies in Github Actions (#3124 by @imskr)
v0.2.3.a3
Third release of v0.2.3 to incorporate Syft protocol schema updates.
v0.2.3.a2
Second release of v0.2.3 to incorporate msgpack 1.0 compatibility and Syft protocol schema updates.
v0.2.3.a1
New functionality:
- Migrates PySyft to PyTorch 1.4 (#2930 by @gmuraru)
- Reworks Plans for smoother serialization to multiple formats (#2910 by @LaRiffle and @vvmnnnkv)
Bug fixes:
- Fixes numeric issues in handcrafted Conv and Pool implementations (#2945 and #2964 by @arshjot)
- Removes an insecure
eval
in native tensor interpreter (#2951 by @karlhigley) - Fixes parameters to
ObjectRequestMessage
inwebsocket_client.py
(#2948 by @brandonhee)
Tutorial updates:
- Bengali: Parts 1 and 2 (#2938 and #2942 by @ucalyptus)
- Hindi: Part 13a (#2958 by @Yugandhartripathi)
- Spanish: Parts 6, 7, and 8 (#2941, #2944, and #2962 by @ricardopretelt and @arturomf94)
v0.2.2.a1
Includes some noteworthy new functionality:
- CUDA processing enabled in PySyft (#2735 and #2772 by @midokura-silvia)
- A PrivateTensor type (#2709 by @IonesioJunior)
- Promise and PromiseTensor types (#2610 by @Jasopaum)
- A complete test suite for msgpack serialization and standardization of the serialization format (#2762 and #2812 by @vvmnnnkv)
- An implementation of Distributed Association Scan Hammer (DASH) algorithm (#2658 by @andrelmfarias)
String
andStringPointer
types added to support NLP applications (#2684 by @AlanAboudib)- The ability to nest Plans within other Plans (#2791 by @gmuraru)
- Serializability for the
grad_fn
in AutogradTensors (#2871 by @sukhadj) - PyGrid module moved to PySyft (#2760 by @IonesioJunior)
- A NumpyTensor type (#2913 by @iamtrask)
- Python implementations of
torch.nn.Conv2d
andtorch.nn.AvgPool2d
(#2896 by @iamtrask) - Approximate exp log inverse and sigmoid for SMPC (#2659 by @LaRiffle)
Also includes updates to the tutorials:
- A tutorial on Promises and PromiseTensors (#2786 by @Jasopaum)
- A split neural network tutorial (#2808 by @H4LL)
- Tutorial notebooks translated into Chinese, Spanish, Hindi, Indonesian, Korean, Portuguese, and Romanian (many PRs by @dljgs1, @Bingyy, @socd06, @ricardopretelt, @arturomf94, @darkmatter18, @Yugandhartripathi, @nggih, @wonderit, @jefersonf, and @gmuraru.)
And finally, includes:
- Many bug fixes, which are too numerous to list but nonetheless much appreciated!