profile
viewpoint
If you are wondering where the data of this site comes from, please visit https://api.github.com/users/borzunov/events. GitMemory does not store any data, but only uses NGINX to cache data for a period of time. The idea behind GitMemory is simply to give users a better reading experience.
Alexander Borzunov borzunov Yandex Research (@yandex-research) Moscow Building hivemind for @learning-at-home // ex⁠-⁠research engineer at Yandex Self-Driving, ex⁠-⁠intern at Facebook

learning-at-home/hivemind 736

Decentralized deep learning in PyTorch. Built to train models on thousands of volunteers across the world.

borzunov/cpmoptimize 165

🚀 🐍 Optimizes Python bytecode calculating linear recurrences, reducing the time complexity from O(n) to O(log n)

DestructiveVoice/DestructiveFarm 133

📢 🔒 Exploit manager for attack-defense CTF competitions

borzunov/bit-torrent 117

📁 🌎 BitTorrent client built with Python + asyncio

borzunov/remoteink 71

📖 🖥️ Turns PocketBook E-Ink reader into a computer monitor

borzunov/alice_scripts 27

👩 📜 Easy way to make skills for Alice (Russian voice assistant)

borzunov/dontasq 27

⚡🐍 Extends built-in Python collections with LINQ-style methods

slava-sh/messenger 9

Toy messaging platform

yandex-research/btard 6

Code for the paper "Secure Distributed Training at Scale"

borzunov/timus-charts 4

Adds charts to Timus Online Judge profiles

delete branch borzunov/bittensor

delete branch : resolve-notebook-conflict

delete time in 3 hours

push eventborzunov/bittensor

Alexander Borzunov

commit sha 56926b24a81ad9461fd5a8f164ff0d31c600e0f9

Resolve merge conflict in tutorial

view details

push time in 4 hours

push eventborzunov/bittensor

Alexander Borzunov

commit sha 0d2f77ccbb407ccb3083ede61241d1b3bd56b172

Resolve merge conflict in tutorial notebook

view details

push time in 4 hours

push eventborzunov/bittensor

Alexander Borzunov

commit sha 56926b24a81ad9461fd5a8f164ff0d31c600e0f9

Resolve merge conflict in tutorial

view details

push time in 4 hours

PR opened opentensor/bittensor

Resolve merge conflict in tutorial

This PR relates to #439 and resolves the merge conflict in the tutorial notebook (that seems to be accidentally committed).

+0 -20

0 comment

1 changed file

pr created time in 4 hours

push eventborzunov/bittensor

justheuristic

commit sha 655b627d0ce3c42c819000cc9f070afc6a651be6

Resolve merge conflict in tutorial

view details

push time in 4 hours

create barnchborzunov/bittensor

branch : resolve-notebook-conflict

created branch time in 4 hours

fork borzunov/bittensor

Internet-scale Neural Networks

https://www.bittensor.com/

fork in 4 hours

PullRequestReviewEvent
PullRequestReviewEvent
PullRequestReviewEvent

Pull request review commentlearning-at-home/hivemind

Resolve dedlock for MPFuture

 def reset_backend(cls):         cls._active_pid = None      @classmethod-    def _process_updates_in_background(cls, receiver_pipe: mp.connection.Connection):+    def _process_updates_in_background(cls):         pid = os.getpid()-        while True:-            try:-                if cls._pipe_waiter_thread is not threading.current_thread():-                    break  # Backend was reset, a new background thread has started--                uid, msg_type, payload = receiver_pipe.recv()-                future = None-                future_ref = cls._active_futures.get(uid)-                if future_ref is not None:-                    future = future_ref()--                if msg_type == MessageType.STATE_REQUEST:-                    future_state = None if future is None else future.__getstate__()-                    use_lock, return_pipe = payload-                    with MPFuture._update_lock if use_lock else nullcontext():-                        return_pipe.send((uid, MessageType.STATE_RESPONSE, future_state))--                elif msg_type == MessageType.STATE_RESPONSE:-                    future, state_updated_event = cls._status_requests.get(uid, (None, None))-                    if future is None:-                        logger.debug("Received a state update for a future that does not await status update.")-                    else:-                        if payload is not None:-                            future.__setstate__(payload)+        with DefaultSelector() as selector:+            selector.register(cls._process_inner_pipe, EVENT_READ, data=cls._process_inner_pipe)+            selector.register(cls._process_outer_pipe, EVENT_READ, data=cls._process_outer_pipe)
            selector.register(cls._process_inner_pipe, EVENT_READ)
            selector.register(cls._process_outer_pipe, EVENT_READ)

This is already stored in SelectorKey.fileobj.

justheuristic

comment created time in a day

PullRequestReviewEvent

Pull request review commentlearning-at-home/hivemind

Resolve dedlock for MPFuture

 def reset_backend(cls):         cls._active_pid = None      @classmethod-    def _process_updates_in_background(cls, receiver_pipe: mp.connection.Connection):+    def _process_updates_in_background(cls):         pid = os.getpid()-        while True:-            try:-                if cls._pipe_waiter_thread is not threading.current_thread():-                    break  # Backend was reset, a new background thread has started--                uid, msg_type, payload = receiver_pipe.recv()-                future = None-                future_ref = cls._active_futures.get(uid)-                if future_ref is not None:-                    future = future_ref()--                if msg_type == MessageType.STATE_REQUEST:-                    future_state = None if future is None else future.__getstate__()-                    use_lock, return_pipe = payload-                    with MPFuture._update_lock if use_lock else nullcontext():-                        return_pipe.send((uid, MessageType.STATE_RESPONSE, future_state))--                elif msg_type == MessageType.STATE_RESPONSE:-                    future, state_updated_event = cls._status_requests.get(uid, (None, None))-                    if future is None:-                        logger.debug("Received a state update for a future that does not await status update.")-                    else:-                        if payload is not None:-                            future.__setstate__(payload)+        with DefaultSelector() as selector:+            selector.register(cls._process_inner_pipe, EVENT_READ, data=cls._process_inner_pipe)+            selector.register(cls._process_outer_pipe, EVENT_READ, data=cls._process_outer_pipe)++            while True:+                try:+                    if cls._pipe_waiter_thread is not threading.current_thread():+                        break  # Backend was reset, a new background thread has started++                    pipe = next((key.data for (key, events) in selector.select()))+                    uid, msg_type, payload = pipe.recv()
                    (key, events), *_ = selector.select()
                    uid, msg_type, payload = key.fileobj.recv()
justheuristic

comment created time in a day

PullRequestReviewEvent
PullRequestReviewEvent

Pull request review commentlearning-at-home/hivemind

Resolve dedlock for MPFuture

 class MPFuture(base.Future, Generic[ResultType]):     """      _initialization_lock = mp.Lock()  # global lock that prevents simultaneous initialization of two processes-    _update_lock = mp.Lock()  # global lock that prevents simultaneous writing to the same pipe-    _process_wide_pipe: Optional[PipeEnd] = None  # a pipe that is used to send results/exceptions to this process+    _update_lock = mp.Lock()  # global lock that prevents simultaneous writing of results/exceptions through same pipe+    _status_lock = mp.Lock()  # global lock that prevents simultaneous sening of status updates through same pipe
    _status_lock = mp.Lock()  # global lock that prevents simultaneous sending of status updates through same pipe
justheuristic

comment created time in a day

PullRequestReviewEvent

create barnchlearning-at-home/hivemind

branch : averager-libp2p-10x

created branch time in 2 days

pull request commentlearning-at-home/hivemind

Convert averager to libp2p backend

We suspect #317 to be the reason of periodic test failures. Now, we are testing a version with this commit reverted in a separate branch.

borzunov

comment created time in 2 days

push eventlearning-at-home/hivemind

Aleksandr Borzunov

commit sha b1486d99c95d1f1c347e7d2ca5ef3f483872de1d

Disable fail-fast, set TL to 15 min

view details

push time in 2 days

push eventlearning-at-home/hivemind

Aleksandr Borzunov

commit sha af593bfd14178f1cfb0b404d0a89dd28a6a1af6b

Run tests 10 times

view details

push time in 2 days

create barnchlearning-at-home/hivemind

branch : averager-libp2p-old-mpfuture

created branch time in 2 days

Pull request review commentlearning-at-home/go-libp2p-daemon

Persistent connections & unary handlers

 message Request {   optional PSRequest pubsub = 8; } +// Persistent connection request+message PCRequest {+  required bytes callId = 1;++  oneof message {+    AddUnaryHandlerRequest addUnaryHandler = 2;+    CallUnaryRequest  callUnary = 3;

nit: Make formatting more neat:

    CallUnaryRequest callUnary = 3;
deniskamazur

comment created time in 2 days

PullRequestReviewEvent
PullRequestReviewEvent

Pull request review commentlearning-at-home/go-libp2p-daemon

Persistent connections & unary handlers

 syntax = "proto2"; package p2pd.pb;  message Request {-  enum Type {-    IDENTIFY       = 0;-    CONNECT        = 1;-    STREAM_OPEN    = 2;-    STREAM_HANDLER = 3;-    DHT            = 4;-    LIST_PEERS     = 5;-    CONNMANAGER    = 6;-    DISCONNECT     = 7;-    PUBSUB         = 8;-  }+   enum Type {+    IDENTIFY                 = 0;+    CONNECT                  = 1;+    STREAM_OPEN              = 2;+    STREAM_HANDLER           = 3;+    DHT                      = 4;+    LIST_PEERS               = 5;+    CONNMANAGER              = 6;+    DISCONNECT               = 7;      +    PUBSUB                   = 8;++    PERSISTENT_CONN_UPGRADE  = 9;+    CALL_UNARY              = 10;+    ADD_UNARY_HANDLER       = 11;+    SEND_RESPONSE_TO_REMOTE = 12; +  }

nit: Make formatting more neat:

  }
  
deniskamazur

comment created time in 2 days

PullRequestReviewEvent

Pull request review commentlearning-at-home/go-libp2p-daemon

Persistent connections & unary handlers

 go 1.15 require ( 	github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect 	github.com/gogo/protobuf v1.3.2+	github.com/google/uuid v1.3.0

nit: Is this change necessary? If not, I'd suggest to revert it to keep the diff with the upstream minimal.

deniskamazur

comment created time in 2 days