Merge branch 'main' into enhance/speedup-get-trials

This commit is contained in:
keisuke umezawa
2024-02-06 21:41:48 +09:00
committed by GitHub
68 changed files with 9473 additions and 8428 deletions
+20 -3
View File
@@ -4,6 +4,13 @@ import tempfile
from unittest.mock import MagicMock
import optuna
from packaging import version
import pytest
if version.parse(optuna.__version__) < version.parse("3.3.0"):
pytest.skip("optuna.artiracts module is introduced at v3.3.0", allow_module_level=True)
from optuna.artifacts import FileSystemArtifactStore
from optuna.artifacts import upload_artifact
from optuna.storages import BaseStorage
@@ -12,7 +19,6 @@ from optuna_dashboard.artifact import _backend
from optuna_dashboard.artifact import upload_artifact as dashboard_upload_artifact
from optuna_dashboard.artifact._backend_to_store import to_artifact_store
from optuna_dashboard.artifact.file_system import FileSystemBackend
import pytest
from ..wsgi_client import send_request
@@ -84,9 +90,12 @@ def test_delete_all_artifacts(init_storage_with_artifact_meta: MagicMock) -> Non
def test_list_trial_artifacts(init_storage_with_artifact_meta: MagicMock) -> None:
storage = init_storage_with_artifact_meta
trial = MagicMock(_trial_id=0, system_attrs=storage.get_trial_system_attrs(0))
trial_system_attrs = storage.get_trial_system_attrs(0)
trial = MagicMock(_trial_id=0, system_attrs={})
actual = _backend.list_trial_artifacts(storage.get_study_system_attrs(0), trial)
actual = _backend.list_trial_artifacts(
storage.get_study_system_attrs(0), trial_system_attrs, trial
)
assert actual == [
{"artifact_id": "id0", "filename": "foo.txt"},
{"artifact_id": "id1", "filename": "bar.txt"},
@@ -119,6 +128,10 @@ def test_study_artifact_not_found() -> None:
assert status == 404
@pytest.mark.skipif(
version.parse(optuna.__version__) < version.parse("3.4.0"),
reason="upload_artiract needs storage",
)
def test_successful_study_artifact_retrieval() -> None:
storage = optuna.storages.InMemoryStorage()
study = optuna.create_study(storage=storage)
@@ -254,6 +267,10 @@ def test_upload_artifact() -> None:
assert data == "dummy_content"
@pytest.mark.skipif(
version.parse(optuna.__version__) < version.parse("3.4.0"),
reason="upload_artiract needs storage",
)
def test_delete_study_artifact() -> None:
storage = optuna.storages.InMemoryStorage()
study = optuna.create_study(storage=storage)
+7 -2
View File
@@ -2,12 +2,17 @@ import io
from unittest import TestCase
import boto3
from moto import mock_s3
from optuna_dashboard.artifact.boto3 import Boto3Backend
from optuna_dashboard.artifact.exceptions import ArtifactNotFound
@mock_s3
try:
from moto import mock_aws
except ImportError:
from moto import mock_s3 as mock_aws
@mock_aws
class Boto3BackendTestCase(TestCase):
def setUp(self) -> None:
self.s3_client = boto3.client("s3")
@@ -36,8 +36,11 @@ def test_list_optuna_trial_artifacts() -> None:
study.tell(trial, 0.0)
study_system_attrs = storage.get_study_system_attrs(study._study_id)
trial_system_attrs = storage.get_trial_system_attrs(trial._trial_id)
frozen_trial = storage.get_trial(trial._trial_id)
artifact_meta_list = list_trial_artifacts(study_system_attrs, frozen_trial)
artifact_meta_list = list_trial_artifacts(
study_system_attrs, trial_system_attrs, frozen_trial
)
assert len(artifact_meta_list) == 1
artifact_id = artifact_meta_list[0]["artifact_id"]
+4 -1
View File
@@ -11,6 +11,7 @@ from optuna.distributions import IntDistribution
from optuna.samplers import BaseSampler
from optuna.trial import TrialState
from optuna_dashboard.preferential import create_study
from packaging import version
import pytest
@@ -27,7 +28,9 @@ parametrize_sampler = pytest.mark.parametrize(
pytest.param(
PreferentialGPSampler,
marks=pytest.mark.skipif(
sys.version_info < (3, 8), reason="BoTorch dropped Python3.7 support"
sys.version_info < (3, 8)
or version.parse(optuna.__version__) < version.parse("3.2.0"),
reason="BoTorch dropped Python3.7 support",
),
),
],
+5
View File
@@ -8,6 +8,7 @@ from typing import Callable
from unittest.mock import patch
import uuid
import optuna
from optuna import copy_study
from optuna import create_trial
from optuna import delete_study
@@ -17,12 +18,16 @@ from optuna.exceptions import DuplicatedStudyError
from optuna.trial import TrialState
from optuna_dashboard.preferential import create_study
from optuna_dashboard.preferential import load_study
from packaging import version
import pytest
from ..storage_supplier import parametrize_storages
from ..storage_supplier import StorageSupplier
if version.parse(optuna.__version__) < version.parse("3.4.0"):
pytest.skip("Preferential optimization is introduced at v3.4.0", allow_module_level=True)
if sys.version_info < (3, 8):
pytest.skip("BoTorch dropped Python3.7 support", allow_module_level=True)
+29
View File
@@ -18,6 +18,7 @@ from optuna_dashboard._preferential_history import remove_history
from optuna_dashboard._preferential_history import report_history
from optuna_dashboard._serializer import serialize_preference_history
from optuna_dashboard.preferential import create_study
from packaging import version
import pytest
from .wsgi_client import send_request
@@ -94,6 +95,10 @@ class APITestCase(TestCase):
self.run_get_study_details({"limit": "-1"}, expected_status=400)
@pytest.mark.skipif(sys.version_info < (3, 8), reason="BoTorch dropped Python3.7 support")
@pytest.mark.skipif(
version.parse(optuna.__version__) < version.parse("3.2.0"),
reason="Needs optuna.search_space",
)
def test_get_best_trials_of_preferential_study(self) -> None:
storage = optuna.storages.InMemoryStorage()
study = create_study(n_generate=4, storage=storage)
@@ -118,6 +123,10 @@ class APITestCase(TestCase):
assert best_trials[0]["number"] == 0
@pytest.mark.skipif(sys.version_info < (3, 8), reason="BoTorch dropped Python3.7 support")
@pytest.mark.skipif(
version.parse(optuna.__version__) < version.parse("3.2.0"),
reason="Needs optuna.search_space",
)
def test_report_preference(self) -> None:
storage = optuna.storages.InMemoryStorage()
study = create_study(n_generate=4, storage=storage)
@@ -152,6 +161,10 @@ class APITestCase(TestCase):
assert worse.number == 1
@pytest.mark.skipif(sys.version_info < (3, 8), reason="BoTorch dropped Python3.7 support")
@pytest.mark.skipif(
version.parse(optuna.__version__) < version.parse("3.2.0"),
reason="Needs optuna.search_space",
)
def test_report_preference_when_typo_mode(self) -> None:
storage = optuna.storages.InMemoryStorage()
study = create_study(storage=storage, n_generate=3)
@@ -176,6 +189,10 @@ class APITestCase(TestCase):
self.assertEqual(status, 400)
@pytest.mark.skipif(sys.version_info < (3, 8), reason="BoTorch dropped Python3.7 support")
@pytest.mark.skipif(
version.parse(optuna.__version__) < version.parse("3.2.0"),
reason="Needs optuna.search_space",
)
def test_change_component(self) -> None:
storage = optuna.storages.InMemoryStorage()
study = create_study(storage=storage, n_generate=3)
@@ -311,6 +328,10 @@ class APITestCase(TestCase):
assert note_ver_key(0) not in study.system_attrs
@pytest.mark.skipif(sys.version_info < (3, 8), reason="BoTorch dropped Python3.7 support")
@pytest.mark.skipif(
version.parse(optuna.__version__) < version.parse("3.2.0"),
reason="Needs optuna.search_space",
)
def test_skip_trial(self) -> None:
storage = optuna.storages.InMemoryStorage()
study = create_study(n_generate=4, storage=storage)
@@ -336,6 +357,10 @@ class APITestCase(TestCase):
assert best_trials[0].number == 2
@pytest.mark.skipif(sys.version_info < (3, 8), reason="BoTorch dropped Python3.7 support")
@pytest.mark.skipif(
version.parse(optuna.__version__) < version.parse("3.2.0"),
reason="Needs optuna.search_space",
)
def test_remove_history(self) -> None:
storage = optuna.storages.InMemoryStorage()
study = create_study(storage=storage, n_generate=3)
@@ -370,6 +395,10 @@ class APITestCase(TestCase):
assert len(study.get_preferences()) == 0
@pytest.mark.skipif(sys.version_info < (3, 8), reason="BoTorch dropped Python3.7 support")
@pytest.mark.skipif(
version.parse(optuna.__version__) < version.parse("3.2.0"),
reason="Needs optuna.search_space",
)
def test_restore_history(self) -> None:
storage = optuna.storages.InMemoryStorage()
study = create_study(storage=storage, n_generate=3)
@@ -132,7 +132,7 @@ class _CachedExtraStudyPropertySearchSpaceTestCase(TestCase):
create_trial(
state=TrialState.COMPLETE, value=0, distributions=distributions, params=params
),
create_trial(state=TrialState.FAIL, value=0, distributions={}, params={}),
create_trial(state=TrialState.FAIL, value=None, distributions={}, params={}),
create_trial(
state=TrialState.COMPLETE, value=0, distributions=distributions, params=params
),
@@ -235,7 +235,7 @@ class _CachedExtraStudyPropertyUserAttrs(TestCase):
),
create_trial(
state=TrialState.FAIL,
value=0,
value=None,
distributions={},
params={},
user_attrs={"bar": "bar"},
@@ -5,6 +5,7 @@ import sys
from typing import Callable
from typing import TYPE_CHECKING
import optuna
from optuna.storages import BaseStorage
from optuna_dashboard._preferential_history import _SYSTEM_ATTR_PREFIX_HISTORY
from optuna_dashboard._preferential_history import NewHistory
@@ -14,6 +15,7 @@ from optuna_dashboard._preferential_history import restore_history
from optuna_dashboard._serializer import serialize_preference_history
from optuna_dashboard.preferential import create_study
from optuna_dashboard.preferential._system_attrs import _SYSTEM_ATTR_PREFIX_PREFERENCE
from packaging import version
import pytest
from .storage_supplier import parametrize_storages
@@ -24,6 +26,10 @@ if TYPE_CHECKING:
from optuna_dashboard._preferential_history import History
if version.parse(optuna.__version__) < version.parse("3.4.0"):
pytest.skip("Preferential optimization is introduced at v3.4.0", allow_module_level=True)
if sys.version_info < (3, 8):
pytest.skip("BoTorch dropped Python3.7 support", allow_module_level=True)
+7
View File
@@ -9,6 +9,7 @@ from optuna_dashboard._serializer import serialize_study_detail
from optuna_dashboard._serializer import serialize_study_summary
from optuna_dashboard._storage import get_study_summaries
from optuna_dashboard.preferential import create_study
from packaging import version
import pytest
@@ -53,6 +54,9 @@ def test_serialize_numpy_floating() -> None:
@pytest.mark.skipif(sys.version_info < (3, 8), reason="BoTorch dropped Python3.7 support")
@pytest.mark.skipif(
version.parse(optuna.__version__) < version.parse("3.2.0"), reason="Needs optuna.search_space"
)
def test_get_study_detail_is_preferential() -> None:
storage = optuna.storages.InMemoryStorage()
study = create_study(n_generate=4, storage=storage)
@@ -80,6 +84,9 @@ def test_get_study_detail_is_not_preferential() -> None:
@pytest.mark.skipif(sys.version_info < (3, 8), reason="BoTorch dropped Python3.7 support")
@pytest.mark.skipif(
version.parse(optuna.__version__) < version.parse("3.2.0"), reason="Needs optuna.search_space"
)
def test_get_study_summary_is_preferential() -> None:
storage = optuna.storages.InMemoryStorage()
create_study(n_generate=4, storage=storage)