Rebase master onto libp2p (#179)
* copytree implementation for py37 compatibility (#162)
* copytree implementation for py37 compatibility
* Running tests for python3.7
* Increment version
* Python3.7 notions
* Remove pickle.loads in averager (#160)
* Security update: remove pickle.loads in averager
* add py37 to circleci config
Co-authored-by: Alexander Borzunov <borzunov.alexander@gmail.com>
Co-authored-by: Max Ryabinin <mryabinin0@gmail.com>
* Support edge cases for DHT key/subkey/value, add tests, update .gitignore for pb2 (#167)
* fix bug with subkey equals zero
* add autogenerated protobuf files to .gitignore
* test store and get "tricky" values in dht
* Fix the remaining tests for py37 (#166)
* DecentralizedAverager is now compatible with python37's acyncio exception
* the problem was: grpc.aio with python37 raised concurrent.futures.CancelledError in some cases;
* we relied on isinstance(asyncio.CancelledError, Exception) == False
* but isinstance(concurrent.futures.CancelledError, Exception) == True
* DecentralizedAverager now shuts down if dereferenced in the main process
* though it won't shutdown if dereferenced in forks for obvious reasons
* HIVEMIND_THREADS now actually works
* test_averaging now shuts down dht and averager instances to avoid leaking processes
Co-authored-by: Max Ryabinin <mryabinin0@gmail.com>
Co-authored-by: Max Ryabinin <mryabinin0@gmail.com>
* Move Averager metadata serialization out of user scope (#168)
* move metadata serialization outside user scope
* test_overcrowded: reduce the default number of peers
* Handle edge cases in DecentralizedAverager (#171)
* move metadata serialization outside user scope
* retry averager.step on network errors
* raise AllreduceException on partial tensor
* test split/combine tensors, combine corrupted stream
Co-authored-by: Max Ryabinin <mryabinin0@gmail.com>
* Fix a typo in quickstart.md (#174)
* Serialize DHTID source with msgpack (#172)
* Change DHTID serializer
* Remove unused serializers
* Add msgpack tuple serialization
* Move CLI server launch script to hivemind/hivemind_cli (#173)
* Cast environment variables to correct types
* Compiling libp2p daemon on setup (#153)
* add setup.py prototype
* refactor
* feat: add p2p daemon (#164)
* Add p2p daemon
* Test p2p daemon exits correctly
* Impose restriction on elapsed time
Co-authored-by: Ilya Kobelev <ilya.kobellev@gmail.com>
* compare golang versions using packaging.version
* fix typo
Co-authored-by: justheuristic <justheuristic@gmail.com>
* move p2pd executable to hivemind/hivemind_cli
Co-authored-by: Alexey Bukhtiyarov <a.bukhtiyarov@yandex.ru>
Co-authored-by: justheuristic <justheuristic@gmail.com>
Co-authored-by: Alexander Borzunov <borzunov.alexander@gmail.com>
Co-authored-by: Max Ryabinin <mryabinin0@gmail.com>
Co-authored-by: Michael Diskin <yhn112@users.noreply.github.com>
Co-authored-by: romakail <36082689+romakail@users.noreply.github.com>
Co-authored-by: Ilya <37004806+skobellev@users.noreply.github.com>
Co-authored-by: Ilya Kobelev <ilya.kobellev@gmail.com>