eric-haibin-lin opened a new issue #17612: Gluon block thread safety bug
URL: https://github.com/apache/incubator-mxnet/issues/17612
 
 
   ```
   import mxnet as mx
   import threading
   import queue
   import gluonnlp as nlp
   
   q = queue.Queue()
   count = 2
   net = mx.gluon.nn.Dense((10))
   net.initialize(mx.init.Uniform(), ctx=[mx.gpu(0), mx.gpu(1)])
   mx.nd.waitall()
   
   def fn(net, ctx):
       with mx.autograd.record():
           x = mx.nd.random.uniform(low=0, high=1000, shape=(10, 128), ctx=ctx)
           q.put(net(x))
       mx.nd.waitall()
       return
   
   threads = []
   for i in range(count):
       t = threading.Thread(target=fn, args=(net, mx.gpu()))
       threads.append(t)
   for i in range(count):
       threads[i].start()
   for i in range(count):
       threads[i].join()
   
   ys = []
   for i in range(count):
       ys.append(q.get())
   print(ys)
   ```
   
   Error: 
   ```
   Exception in thread Thread-2:
   Traceback (most recent call last):
     File "/home/ubuntu/src/mxnet/python/mxnet/gluon/block.py", line 1154, in 
forward
       params = {k: v.data(ctx) for k, v in self._reg_params.items()}
     File "/home/ubuntu/src/mxnet/python/mxnet/gluon/block.py", line 1154, in 
<dictcomp>
       params = {k: v.data(ctx) for k, v in self._reg_params.items()}
     File "/home/ubuntu/src/mxnet/python/mxnet/gluon/parameter.py", line 565, 
in data
       return self._check_and_get(self._data, ctx)
     File "/home/ubuntu/src/mxnet/python/mxnet/gluon/parameter.py", line 236, 
in _check_and_get
       "num_features, etc., for network layers."%(self.name))
   mxnet.gluon.parameter.DeferredInitializationError: Parameter 'dense0_weight' 
has not been initialized yet because initialization was deferred. Actual 
initialization happens during the first forward pass. Please pass one batch of 
data through the network before accessing Parameters. You can also avoid 
deferred initialization by specifying in_units, num_features, etc., for network 
layers.
   
   During handling of the above exception, another exception occurred:
   
   Traceback (most recent call last):
     File "/home/ubuntu/src/mxnet/python/mxnet/gluon/block.py", line 976, in 
_deferred_infer_shape
       self.infer_shape(*args)
     File "/home/ubuntu/src/mxnet/python/mxnet/gluon/block.py", line 1074, in 
infer_shape
       self._infer_attrs('infer_shape', 'shape', *args)
     File "/home/ubuntu/src/mxnet/python/mxnet/gluon/block.py", line 1058, in 
_infer_attrs
       inputs, out = self._get_graph(*args)
     File "/home/ubuntu/src/mxnet/python/mxnet/gluon/block.py", line 928, in 
_get_graph
       out = self.hybrid_forward(symbol, *grouped_inputs, **params)  # pylint: 
disable=no-value-for-parameter
     File "/home/ubuntu/src/mxnet/python/mxnet/gluon/block.py", line 94, in 
__exit__
       self._name_scope.__exit__(ptype, value, trace)
   AttributeError: 'NoneType' object has no attribute '__exit__'
   
   During handling of the above exception, another exception occurred:
   
   Traceback (most recent call last):
     File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
       self.run()
     File "/usr/lib/python3.5/threading.py", line 862, in run
       self._target(*self._args, **self._kwargs)
     File "test.py", line 29, in fn
       q.put(net(x))
     File "/home/ubuntu/src/mxnet/python/mxnet/gluon/block.py", line 696, in 
__call__
       out = self.forward(*args)
     File "/home/ubuntu/src/mxnet/python/mxnet/gluon/block.py", line 1156, in 
forward
       self._deferred_infer_shape(x, *args)
     File "/home/ubuntu/src/mxnet/python/mxnet/gluon/block.py", line 980, in 
_deferred_infer_shape
       raise ValueError(error_msg)
   ValueError: Deferred initialization failed because shape cannot be inferred. 
'NoneType' object has no attribute '__exit__'
   ```

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to