Skip to content

[BUG] freeze on import of aeon.classification.convolution_based #2179

Open
@user706

Description

@user706

Describe the bug

Hi,
when doing

from aeon.classification.convolution_based import Arsenal

it takes forever.

  • It was working a few days back. In fact in the old venv it still works. (Edit: might be that the 1st loading always takes long. [Not quite sure how long it should take...])
  • But when trying a new venv (see below -> reproduce) it takes forever. Why?

my system

  • Ubuntu 24.04.1 LTS (according to cat /etc/os-release)
  • Python 3.12.3 (according to python --version after starting the venv (see below))

reproduce (or does it work on your side?)

# in the shell (I'm using bash on linux)
python3 -m venv pyvenv
. pyvenv/bin/activate
pip install --upgrade pip
pip install -U aeon
python -c "print('loading'); from aeon.classification.convolution_based import Arsenal; print('done')" # takes forever

Any ideas?

details

stopping the freeze by hitting Ctrl-C, results in

KeyboardInterrupt: 
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/aeon/classification/convolution_based/__init__.py", line 10, in <module>
    from aeon.classification.convolution_based._arsenal import Arsenal
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/aeon/classification/convolution_based/_arsenal.py", line 20, in <module>
    from aeon.transformations.collection.convolution_based import (
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/aeon/transformations/collection/__init__.py", line 33, in <module>
    from aeon.transformations.collection.channel_selection import (
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/aeon/transformations/collection/channel_selection/__init__.py", line 16, in <module>
    from aeon.transformations.collection.channel_selection._channel_scorer import (
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/aeon/transformations/collection/channel_selection/_channel_scorer.py", line 7, in <module>
    from aeon.classification.convolution_based._rocket_classifier import RocketClassifier
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/aeon/classification/convolution_based/_rocket_classifier.py", line 16, in <module>
    from aeon.transformations.collection.convolution_based import (
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/aeon/transformations/collection/convolution_based/__init__.py", line 14, in <module>
    from ._multirocket import MultiRocket
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/aeon/transformations/collection/convolution_based/_multirocket.py", line 556, in <module>
    @njit(
     ^^^^^
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/core/decorators.py", line 232, in wrapper
    disp.compile(sig)
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/core/dispatcher.py", line 912, in compile
    self._cache.save_overload(sig, cres)
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/core/caching.py", line 652, in save_overload
    self._save_overload(sig, data)
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/core/caching.py", line 661, in _save_overload
    data = self._impl.reduce(data)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/core/caching.py", line 389, in reduce
    return cres._reduce()
           ^^^^^^^^^^^^^^
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/core/compiler.py", line 199, in _reduce
    libdata = self.library.serialize_using_object_code()
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/core/codegen.py", line 921, in serialize_using_object_code
    data = (self._get_compiled_object(),
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/core/codegen.py", line 629, in _get_compiled_object
    raise RuntimeError("no compiled object yet for %s" % (self,))
RuntimeError: no compiled object yet for <Library '_transform_multi' at 0x77c57e6ddd00>

or

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/aeon/classification/convolution_based/__init__.py", line 10, in <module>
    from aeon.classification.convolution_based._arsenal import Arsenal
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/aeon/classification/convolution_based/_arsenal.py", line 20, in <module>
    from aeon.transformations.collection.convolution_based import (
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/aeon/transformations/collection/__init__.py", line 33, in <module>
    from aeon.transformations.collection.channel_selection import (
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/aeon/transformations/collection/channel_selection/__init__.py", line 16, in <module>
    from aeon.transformations.collection.channel_selection._channel_scorer import (
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/aeon/transformations/collection/channel_selection/_channel_scorer.py", line 7, in <module>
    from aeon.classification.convolution_based._rocket_classifier import RocketClassifier
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/aeon/classification/convolution_based/_rocket_classifier.py", line 16, in <module>
    from aeon.transformations.collection.convolution_based import (
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/aeon/transformations/collection/convolution_based/__init__.py", line 14, in <module>
    from ._multirocket import MultiRocket
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/aeon/transformations/collection/convolution_based/_multirocket.py", line 556, in <module>
    @njit(
     ^^^^^
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/core/decorators.py", line 232, in wrapper
    disp.compile(sig)
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/core/dispatcher.py", line 905, in compile
    cres = self._compiler.compile(args, return_type)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/core/dispatcher.py", line 80, in compile
    status, retval = self._compile_cached(args, return_type)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/core/dispatcher.py", line 94, in _compile_cached
    retval = self._compile_core(args, return_type)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/core/dispatcher.py", line 107, in _compile_core
    cres = compiler.compile_extra(self.targetdescr.typing_context,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/core/compiler.py", line 744, in compile_extra
    return pipeline.compile_extra(func)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/core/compiler.py", line 438, in compile_extra
    return self._compile_bytecode()
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/core/compiler.py", line 506, in _compile_bytecode
    return self._compile_core()
           ^^^^^^^^^^^^^^^^^^^^
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/core/compiler.py", line 472, in _compile_core
    pm.run(self.state)
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/core/compiler_machinery.py", line 356, in run
    self._runPass(idx, pass_inst, state)
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/core/compiler_lock.py", line 35, in _acquire_compile_lock
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/core/compiler_machinery.py", line 311, in _runPass
    mutated |= check(pss.run_pass, internal_state)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/core/compiler_machinery.py", line 273, in check
    mangled = func(compiler_state)
              ^^^^^^^^^^^^^^^^^^^^
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/core/typed_passes.py", line 468, in run_pass
    lower.lower()
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/core/lowering.py", line 187, in lower
    self.lower_normal_function(self.fndesc)
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/core/lowering.py", line 226, in lower_normal_function
    entry_block_tail = self.lower_function_body()
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/core/lowering.py", line 256, in lower_function_body
    self.lower_block(block)
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/core/lowering.py", line 270, in lower_block
    self.lower_inst(inst)
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/parfors/parfor_lowering.py", line 51, in lower_inst
    _lower_parfor_parallel(self, inst)
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/parfors/parfor_lowering.py", line 67, in _lower_parfor_parallel
    return _lower_parfor_parallel_std(lowerer, parfor)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/parfors/parfor_lowering.py", line 381, in _lower_parfor_parallel_std
    call_parallel_gufunc(
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/parfors/parfor_lowering.py", line 1672, in call_parallel_gufunc
    info = build_gufunc_wrapper(llvm_func, cres, sin, sout,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/np/ufunc/parallel.py", line 271, in build_gufunc_wrapper
    info = build_gufunc_kernel(
           ^^^^^^^^^^^^^^^^^^^^
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/np/ufunc/parallel.py", line 152, in build_gufunc_kernel
    wrapperlib.add_linking_library(info.library)
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/core/codegen.py", line 720, in add_linking_library
    library._ensure_finalized()
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/core/codegen.py", line 567, in _ensure_finalized
    self.finalize()
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/core/codegen.py", line 762, in finalize
    self._optimize_final_module()
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/numba/core/codegen.py", line 682, in _optimize_final_module
    self._codegen._mpm_full.run(self._final_module)
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/llvmlite/binding/passmanagers.py", line 698, in run
    return ffi.lib.LLVMPY_RunPassManager(self, module)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dude/proj/test_aeon/pyvenv/lib/python3.12/site-packages/llvmlite/binding/ffi.py", line 192, in __call__
    return self._cfn(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
KeyboardInterrupt

Steps/Code to reproduce the bug

# in the shell (I'm using bash on linux)
python3 -m venv pyvenv
. pyvenv/bin/activate
pip install --upgrade pip
pip install -U aeon
python -c "print('loading'); from aeon.classification.convolution_based import Arsenal; print('done')" # takes forever

Expected results

should finish import quickly

Actual results

takes forever

Versions

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name 'show_versions' from 'aeon.utils' (/home/dude/aeon_test/pyvenv/lib/python3.12/site-packages/aeon/utils/__init__.py)

Any ideas? thanks.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingclassificationClassification package

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions