timeseriesAI / tsai

Time series Timeseries Deep Learning Machine Learning Python Pytorch fastai | State-of-the-art Deep Learning library for Time Series and Sequences in Pytorch / fastai
https://timeseriesai.github.io/tsai/
Apache License 2.0
5.16k stars 644 forks source link

Numba error on Rocket notebook 5 #7

Closed scottcha closed 4 years ago

scottcha commented 4 years ago

As also noted in this other users post to the forum https://forums.fast.ai/t/time-series-sequential-data-study-group/29686/588 I'm also seeing the numba error when attempting to execute the rocket notebook.

I've tried with numba versions 0.45.1, 0.46 and 0.47 all with the same results The error seems to blame this line: candidate_lengths = np.array(([7, 9, 11])) but when I executing that in its own nb cell I don't get an error.

Offending nb line and error: `kernels = generate_kernels(seq_len, 10000)

NotImplementedError Traceback (most recent call last) ~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/targets/base.py in get_constant_generic(self, builder, ty, val) 498 try: --> 499 impl = self._get_constants.find((ty,)) 500 return impl(self, builder, ty, val)

~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/targets/base.py in find(self, sig) 49 if out is None: ---> 50 out = self._find(sig) 51 self._cache[sig] = out

~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/targets/base.py in _find(self, sig) 58 else: ---> 59 raise NotImplementedError(self, sig) 60

NotImplementedError: (<numba.targets.base.OverloadSelector object at 0x7f84b4955890>, (reflected list(int64),))

During handling of the above exception, another exception occurred:

NotImplementedError Traceback (most recent call last) ~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/errors.py in new_errorcontext(fmt, *args, **kwargs) 661 try: --> 662 yield 663 except NumbaError as e:

~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/lowering.py in lowerblock(self, block) 257 loc=self.loc, errcls=defaulterrcls): --> 258 self.lower_inst(inst) 259

~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/lowering.py in lower_inst(self, inst) 300 ty = self.typeof(inst.target.name) --> 301 val = self.lower_assign(ty, inst) 302 self.storevar(val, inst.target.name)

~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/lowering.py in lower_assign(self, ty, inst) 476 const = self.context.get_constant_generic(self.builder, valty, --> 477 pyval) 478 # cast it to the variable type

~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/targets/base.py in get_constant_generic(self, builder, ty, val) 501 except NotImplementedError: --> 502 raise NotImplementedError("Cannot lower constant of type '%s'" % (ty,)) 503

NotImplementedError: Cannot lower constant of type 'reflected list(int64)'

During handling of the above exception, another exception occurred:

LoweringError Traceback (most recent call last)

in ----> 1 kernels = generate_kernels(seq_len, 10000) ~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/dispatcher.py in _compile_for_args(self, *args, **kws) 393 e.patch_message(''.join(e.args) + help_msg) 394 # ignore the FULL_TRACEBACKS config, this needs reporting! --> 395 raise e 396 397 def inspect_llvm(self, signature=None): ~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/dispatcher.py in _compile_for_args(self, *args, **kws) 350 argtypes.append(self.typeof_pyval(a)) 351 try: --> 352 return self.compile(tuple(argtypes)) 353 except errors.TypingError as e: 354 # Intercept typing error that may be due to an argument ~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/compiler_lock.py in _acquire_compile_lock(*args, **kwargs) 30 def _acquire_compile_lock(*args, **kwargs): 31 with self: ---> 32 return func(*args, **kwargs) 33 return _acquire_compile_lock 34 ~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/dispatcher.py in compile(self, sig) 691 692 self._cache_misses[sig] += 1 --> 693 cres = self._compiler.compile(args, return_type) 694 self.add_overload(cres) 695 self._cache.save_overload(sig, cres) ~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/dispatcher.py in compile(self, args, return_type) 74 75 def compile(self, args, return_type): ---> 76 status, retval = self._compile_cached(args, return_type) 77 if status: 78 return retval ~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/dispatcher.py in _compile_cached(self, args, return_type) 88 89 try: ---> 90 retval = self._compile_core(args, return_type) 91 except errors.TypingError as e: 92 self._failed_cache[key] = e ~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/dispatcher.py in _compile_core(self, args, return_type) 106 args=args, return_type=return_type, 107 flags=flags, locals=self.locals, --> 108 pipeline_class=self.pipeline_class) 109 # Check typing error if object mode is used 110 if cres.typing_error is not None and not flags.enable_pyobject: ~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/compiler.py in compile_extra(typingctx, targetctx, func, args, return_type, flags, locals, library, pipeline_class) 970 pipeline = pipeline_class(typingctx, targetctx, library, 971 args, return_type, flags, locals) --> 972 return pipeline.compile_extra(func) 973 974 ~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/compiler.py in compile_extra(self, func) 388 self.lifted = () 389 self.lifted_from = None --> 390 return self._compile_bytecode() 391 392 def compile_ir(self, func_ir, lifted=(), lifted_from=None): ~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/compiler.py in _compile_bytecode(self) 901 """ 902 assert self.func_ir is None --> 903 return self._compile_core() 904 905 def _compile_ir(self): ~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/compiler.py in _compile_core(self) 888 self.define_pipelines(pm) 889 pm.finalize() --> 890 res = pm.run(self.status) 891 if res is not None: 892 # Early pipeline completion ~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/compiler_lock.py in _acquire_compile_lock(*args, **kwargs) 30 def _acquire_compile_lock(*args, **kwargs): 31 with self: ---> 32 return func(*args, **kwargs) 33 return _acquire_compile_lock 34 ~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/compiler.py in run(self, status) 264 # No more fallback pipelines? 265 if is_final_pipeline: --> 266 raise patched_exception 267 # Go to next fallback pipeline 268 else: ~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/compiler.py in run(self, status) 255 try: 256 event("-- %s" % stage_name) --> 257 stage() 258 except _EarlyPipelineCompletion as e: 259 return e.result ~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/compiler.py in stage_nopython_backend(self) 762 """ 763 lowerfn = self.backend_nopython_mode --> 764 self._backend(lowerfn, objectmode=False) 765 766 def stage_compile_interp_mode(self): ~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/compiler.py in _backend(self, lowerfn, objectmode) 701 self.library.enable_object_caching() 702 --> 703 lowered = lowerfn() 704 signature = typing.signature(self.return_type, *self.args) 705 self.cr = compile_result( ~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/compiler.py in backend_nopython_mode(self) 688 self.calltypes, 689 self.flags, --> 690 self.metadata) 691 692 def _backend(self, lowerfn, objectmode): ~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/compiler.py in native_lowering_stage(targetctx, library, interp, typemap, restype, calltypes, flags, metadata) 1141 lower = lowering.Lower(targetctx, library, fndesc, interp, 1142 metadata=metadata) -> 1143 lower.lower() 1144 if not flags.no_cpython_wrapper: 1145 lower.create_cpython_wrapper(flags.release_gil) ~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/lowering.py in lower(self) 175 if self.generator_info is None: 176 self.genlower = None --> 177 self.lower_normal_function(self.fndesc) 178 else: 179 self.genlower = self.GeneratorLower(self) ~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/lowering.py in lower_normal_function(self, fndesc) 216 # Init argument values 217 self.extract_function_arguments() --> 218 entry_block_tail = self.lower_function_body() 219 220 # Close tail of entry block ~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/lowering.py in lower_function_body(self) 241 bb = self.blkmap[offset] 242 self.builder.position_at_end(bb) --> 243 self.lower_block(block) 244 245 self.post_lower() ~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/lowering.py in lower_block(self, block) 256 with new_error_context('lowering "{inst}" at {loc}', inst=inst, 257 loc=self.loc, errcls_=defaulterrcls): --> 258 self.lower_inst(inst) 259 260 def create_cpython_wrapper(self, release_gil=False): ~/anaconda3/envs/fastai/lib/python3.7/contextlib.py in __exit__(self, type, value, traceback) 128 value = type() 129 try: --> 130 self.gen.throw(type, value, traceback) 131 except StopIteration as exc: 132 # Suppress StopIteration *unless* it's the same exception that ~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/errors.py in new_error_context(fmt_, *args, **kwargs) 668 from numba import config 669 tb = sys.exc_info()[2] if config.FULL_TRACEBACKS else None --> 670 six.reraise(type(newerr), newerr, tb) 671 672 ~/anaconda3/envs/fastai/lib/python3.7/site-packages/numba/six.py in reraise(tp, value, tb) 657 if value.__traceback__ is not tb: 658 raise value.with_traceback(tb) --> 659 raise value 660 661 else: LoweringError: Failed in nopython mode pipeline (step: nopython mode backend) Cannot lower constant of type 'reflected list(int64)' File "fastai_timeseries/exp/rocket_functions.py", line 16: def generate_kernels(input_length, num_kernels, kss=[7, 9, 11], pad=True, dilate=True): candidate_lengths = np.array((kss)) ^ [1] During: lowering "kss = arg(2, name=kss)" at /home/scottcha/src/timeseriesAI/fastai_timeseries/exp/rocket_functions.py (16) ------------------------------------------------------------------------------- This should not have happened, a problem has occurred in Numba's internals. You are currently using Numba version 0.45.1. Please report the error message and traceback, along with a minimal reproducer at: https://github.com/numba/numba/issues/new If more help is needed please feel free to speak to the Numba core developers directly at: https://gitter.im/numba/numba Thanks in advance for your help in improving Numba!`
zhengle2008 commented 4 years ago

same question here.

zhengle2008 commented 4 years ago

according to this QA, I made some modification to the code:

def generate_kernels(input_length, num_kernels, np_kss=np.array([7, 9, 11]), pad=True, dilate=True):
    candidate_lengths = np_kss

It works. At least the error goes away...

oguiza commented 4 years ago

Closed as I've now loaded a new solution that works as expected.