Skip to content

Asynchronous FL on MNIST: call WebsocketClientWorker evaluate() method causes error #3063

@9sashafr

Description

@9sashafr

Hello!
I am trying to run the example from tutorials. Everything works great until the models' evaluation. The script crashes with the error:

Client message

RuntimeError Traceback (most recent call last)
in async-def-wrapper()
37 )
38
---> 39 # Federate models (note that this will also change the model in models[0]
40 for worker_id, worker_model, worker_loss in results:
41 if worker_model is not None:

in evaluate_model_on_worker(model_identifier, worker, dataset_key, model, nr_bins, batch_size, print_target_hist)
67 nr_bins=nr_bins,
68 return_loss=True,
---> 69 return_raw_accuracy=True
70 )
71 test_loss = result["loss"]

~/Library/Python/3.7/lib/python/site-packages/syft/workers/websocket_client.py in evaluate(self, dataset_key, return_histograms, nr_bins, return_loss, return_raw_accuracy)
221 nr_bins=nr_bins,
222 return_loss=return_loss,
--> 223 return_raw_accuracy=return_raw_accuracy,
224 )
225

~/Library/Python/3.7/lib/python/site-packages/syft/workers/websocket_client.py in _send_msg_and_deserialize(self, command_name, *args, **kwargs)
113 # Send the message and return the deserialized response.
114 serialized_message = sy.serde.serialize(message)
--> 115 response = self._send_msg(serialized_message)
116 return sy.serde.deserialize(response)
117

~/Library/Python/3.7/lib/python/site-packages/syft/workers/websocket_client.py in _send_msg(self, message, location)
81
82 def _send_msg(self, message: bin, location=None) -> bin:
---> 83 return self._recv_msg(message)
84
85 def _forward_to_websocket_server_worker(self, message: bin) -> bin:

~/Library/Python/3.7/lib/python/site-packages/syft/workers/websocket_client.py in _recv_msg(self, message)
102 if not self.ws.connected:
103 raise RuntimeError(
--> 104 "Websocket connection closed and creation of new connection failed."
105 )
106 return response

RuntimeError: Websocket connection closed and creation of new connection failed.

Server message:

2020-02-18 17:54:56,388 | Task exception was never retrieved
future: <Task finished coro=<WebsocketServerWorker._producer_handler() done, defined at /opt/conda/lib/python3.6/site-packages/syft/workers/websocket_server.py:95> exception=AttributeError("'dict' object has no attribute 'owner'",)>
Traceback (most recent call last):
File "/opt/conda/lib/python3.6/site-packages/syft/workers/websocket_server.py", line 113, in _producer_handler
response = self._recv_msg(message)
File "/opt/conda/lib/python3.6/site-packages/syft/workers/websocket_server.py", line 124, in _recv_msg
return self.recv_msg(message)
File "/opt/conda/lib/python3.6/site-packages/syft/workers/base.py", line 310, in recv_msg
response = self._message_routertype(msg)
File "/opt/conda/lib/python3.6/site-packages/syft/workers/base.py", line 457, in execute_command
command_name, response, list(return_ids), self
File "/opt/conda/lib/python3.6/site-packages/syft/generic/frameworks/hook/hook_args.py", line 665, in register_response
new_response = register_response_function(response, response_ids=response_ids, owner=owner)
File "/opt/conda/lib/python3.6/site-packages/syft/generic/frameworks/hook/hook_args.py", line 766, in
return lambda x, **kwargs: f(lambdas, x, **kwargs)
File "/opt/conda/lib/python3.6/site-packages/syft/generic/frameworks/hook/hook_args.py", line 522, in two_fold
return lambdas[0](args[0], **kwargs), lambdas[1](args[1], **kwargs)
File "/opt/conda/lib/python3.6/site-packages/syft/generic/frameworks/hook/hook_args.py", line 744, in
else lambda i, **kwargs: register_tensor(i, **kwargs)
File "/opt/conda/lib/python3.6/site-packages/syft/generic/frameworks/hook/hook_args.py", line 712, in register_tensor
tensor.owner = owner
AttributeError: 'dict' object has no attribute 'owner'

Exactly the same issue is described here

Version of the lib is '0.2.3a1'

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions