Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Oboe module missing? #496

Open
alanwilter opened this issue Sep 17, 2022 · 4 comments
Open

Oboe module missing? #496

alanwilter opened this issue Sep 17, 2022 · 4 comments

Comments

@alanwilter
Copy link
Contributor

In frameworks/oboe/exec.py I see:

sys.path.append(f"{os.path.realpath(os.path.dirname(__file__))}/lib/oboe/automl")
from auto_learner import AutoLearner

But when running yes | python3 runbenchmark.py oboe automl_config_docker 1h4c -m docker -i . -s force it was failing because, well, there is no auto_learner to load.

Don't know if something was missing, but it seems so.

Therefore, I tried this:

  • Added oboe to frameworks/oboe/requirements.txt
  • Changed:

from:

sys.path.append(f"{os.path.realpath(os.path.dirname(__file__))}/lib/oboe/automl")
from auto_learner import AutoLearner

to

# sys.path.append(f"{os.path.realpath(os.path.dirname(__file__))}/lib/oboe/automl")
from oboe.auto_learner import AutoLearner

And now it fails with that:

**** Oboe [latest] ****

INFO:__main__:Running oboe with a maximum time of 200s on 4 cores.
WARNING:__main__:We completely ignore the advice to optimize towards metric: auc.
ERROR:frameworks.shared.callee:shape mismatch: value array of shape (35,) could not be broadcast to indexing result of shape (35,1)
multiprocessing.pool.RemoteTraceback:

"""

Traceback (most recent call last):

  File "/usr/lib/python3.7/multiprocessing/pool.py", line 121, in worker

    result = (True, func(*args, **kwds))

  File "/bench/frameworks/oboe/lib/oboe/oboe/model.py", line 102, in kfold_fit_validate

    y_predicted[test_idx] = model.predict(x_te)

ValueError: shape mismatch: value array of shape (35,) could not be broadcast to indexing result of shape (35,1)

"""



The above exception was the direct cause of the following exception:



Traceback (most recent call last):

  File "/bench/frameworks/shared/callee.py", line 70, in call_run

    result = run_fn(ds, config)

  File "/bench/frameworks/oboe/exec.py", line 42, in run

    aml.fit(X_train, y_train)

  File "/bench/frameworks/oboe/lib/oboe/oboe/auto_learner.py", line 759, in fit

    doubling()

  File "/bench/frameworks/oboe/lib/oboe/oboe/auto_learner.py", line 716, in doubling

    self._fit(x_tr, y_tr, categorical=None, ranks=k, runtime_limit=t, t_predicted=t_predicted)

  File "/bench/frameworks/oboe/lib/oboe/oboe/auto_learner.py", line 403, in _fit

    cv_error, cv_predictions = error.get()

  File "/usr/lib/python3.7/multiprocessing/pool.py", line 657, in get

    raise self._value

ValueError: shape mismatch: value array of shape (35,) could not be broadcast to indexing result of shape (35,1)




shape mismatch: value array of shape (35,) could not be broadcast to indexing result of shape (35,1)
Traceback (most recent call last):
  File "/bench/amlb/benchmark.py", line 648, in run
    meta_result = self.benchmark.framework_module.run(self._dataset, task_config)
  File "/bench/frameworks/oboe/__init__.py", line 38, in run
    process_results=process_results)
  File "/bench/frameworks/shared/caller.py", line 150, in run_in_venv
    raise NoResultError(res.error_message)
amlb.results.NoResultError: shape mismatch: value array of shape (35,) could not be broadcast to indexing result of shape (35,1)

If you guys have any clue about what to do here, that would be very appreciated.

@alanwilter
Copy link
Contributor Author

Actually, I don't even need the automlbenchmark/frameworks/oboe/requirements.txt file, since this line in frameworks/oboe/setup.sh:

# cat ${HERE}/requirements.txt | sed '/^$/d' | while read -r i; do PIP install --no-cache-dir -U "$i"; done

is not really needed.

The whole issue is frameworks/oboe/exec.py

from oboe.auto_learner import AutoLearner --> works.

sys.path.append(f"{os.path.realpath(os.path.dirname(__file__))}/lib/oboe/automl") is wrong since /bench/frameworks/oboe/lib/oboe/automl does not exist.

Anyway, I still get the same shape error.

@sebhrusen
Copy link
Collaborator

sebhrusen commented Sep 19, 2022

Oboe had been inactive for a while, so we kinda abandoned it for official benchmarks, but keeping it in the app, which may not have been a good idea... However, it seems that there's been an official 0.2.0 release end of 2021, so the setup may just be broken. I'll look at it, thanks for raising this.

@alanwilter
Copy link
Contributor Author

Out of 20 frameworks, this is the only one failing with my model.

@alanwilter
Copy link
Contributor Author

I did look into oboe again and I kind got it to work with your tests but not with mines (always reaching timeout).

You can see my branch https://github.com/alanwilter/oboe

Here's the differences I had to do in OBOE to get it to work:

udellgroup/oboe@master...alanwilter:oboe:master

Then I had to edit https://github.com/openml/automlbenchmark/blob/master/frameworks/oboe/exec.py

diff --git a/frameworks/oboe/exec.py b/frameworks/oboe/exec.py
index 37feebe..0fe773f 100644
--- a/frameworks/oboe/exec.py
+++ b/frameworks/oboe/exec.py
@@ -2,8 +2,7 @@ import logging
 import os
 import sys
 
-sys.path.append("{}/lib/oboe/automl".format(os.path.realpath(os.path.dirname(__file__))))
-from auto_learner import AutoLearner
+from oboe.auto_learner import AutoLearner
 
 from frameworks.shared.callee import call_run, result
 from frameworks.shared.utils import Timer
@@ -47,7 +46,7 @@ def run(dataset, config):
     X_test = dataset.test.X
     y_test = dataset.test.y
     with Timer() as predict:
-        predictions = aml.predict(X_test)
+        predictions = aml.predict(X_test.squeeze())
     predictions = predictions.reshape(len(X_test))
 
     if is_classification:

And now:

yes | python runbenchmark.py oboe example test -f 0 -m docker -s force

would work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants