dc6079821b
Docs Tests / Check for file changes (push) Has been cancelled
Docs Tests / Test Documentation (push) Has been cancelled
Docs Tests / Documentation Linting Checks (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.10, test-performance) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.10, test-policies) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.8, test-cli) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.8, test-core-featurizers) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.8, test-full-model-training) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.8, test-nlu-featurizers) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.8, test-nlu-predictors) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.8, test-other-unit-tests) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.8, test-performance) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.8, test-policies) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.9, test-cli) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.9, test-core-featurizers) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.9, test-full-model-training) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.9, test-nlu-featurizers) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.9, test-nlu-predictors) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.9, test-other-unit-tests) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.9, test-performance) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.9, test-policies) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.10, test-cli) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.10, test-core-featurizers) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.10, test-full-model-training) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.10, test-nlu-featurizers) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.10, test-nlu-predictors) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.10, test-other-unit-tests) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.10, test-performance) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.10, test-policies) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.8, test-cli) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.8, test-core-featurizers) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.8, test-full-model-training) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.8, test-nlu-featurizers) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.8, test-nlu-predictors) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.8, test-other-unit-tests) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.8, test-performance) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.8, test-policies) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.9, test-cli) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.9, test-core-featurizers) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.9, test-full-model-training) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.9, test-nlu-featurizers) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.9, test-nlu-predictors) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.9, test-other-unit-tests) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.9, test-performance) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.9, test-policies) (push) Has been cancelled
Continuous Integration / Run Flaky Tests (ubuntu-24.04, 3.10) (push) Has been cancelled
Continuous Integration / Run Flaky Tests (ubuntu-24.04, 3.8) (push) Has been cancelled
Continuous Integration / Run Flaky Tests (ubuntu-24.04, 3.9) (push) Has been cancelled
Continuous Integration / Run Flaky Tests (windows-2022, 3.10) (push) Has been cancelled
Continuous Integration / Run Flaky Tests (windows-2022, 3.8) (push) Has been cancelled
Continuous Integration / Run Flaky Tests (windows-2022, 3.9) (push) Has been cancelled
Continuous Integration / Check for file changes (push) Has been cancelled
Continuous Integration / Wait for docs tests (push) Has been cancelled
Continuous Integration / Code Quality (push) Has been cancelled
Continuous Integration / Check for changelog (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.10, test-cli) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.10, test-core-featurizers) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.10, test-full-model-training) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.10, test-nlu-featurizers) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.10, test-nlu-predictors) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.10, test-other-unit-tests) (push) Has been cancelled
Continuous Integration / Upload coverage reports to codeclimate (push) Has been cancelled
Continuous Integration / Run Non-Sequential Integration Tests (push) Has been cancelled
Continuous Integration / Run Broker Integration Tests (push) Has been cancelled
Continuous Integration / Run Sequential Integration Tests (push) Has been cancelled
Continuous Integration / Build Docker base images and setup environment (push) Has been cancelled
Continuous Integration / Build Docker (default) (push) Has been cancelled
Continuous Integration / Build Docker (full) (push) Has been cancelled
Continuous Integration / Build Docker (mitie-en) (push) Has been cancelled
Continuous Integration / Build Docker (spacy-de) (push) Has been cancelled
Continuous Integration / Build Docker (spacy-en) (push) Has been cancelled
Continuous Integration / Build Docker (spacy-it) (push) Has been cancelled
Continuous Integration / Deploy to PyPI (push) Has been cancelled
Continuous Integration / Notify Slack & Publish Release Notes (push) Has been cancelled
Publish Documentation / Evaluate release tag (push) Has been cancelled
Publish Documentation / Prebuild Docs (push) Has been cancelled
Publish Documentation / Preview Docs (push) Has been cancelled
Publish Documentation / Check for file changes (push) Has been cancelled
Publish Documentation / Publish Docs (push) Has been cancelled
Automatic PR Merger / mergepal (push) Has been cancelled
CI Github Actions / Run Tests (push) Has been cancelled
Semgrep / Semgrep Workflow Security Scan (push) Has been cancelled
103 lines
3.2 KiB
Python
103 lines
3.2 KiB
Python
from typing import Dict, Text
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
from _pytest.tmpdir import TempPathFactory
|
|
|
|
from rasa.core import training
|
|
|
|
from rasa.core.policies.ted_policy import TEDPolicy
|
|
from rasa.engine.graph import ExecutionContext, GraphSchema
|
|
from rasa.engine.storage.local_model_storage import LocalModelStorage
|
|
from rasa.engine.storage.resource import Resource
|
|
from rasa.shared.core.domain import Domain
|
|
from rasa.utils.tensorflow.callback import RasaModelCheckpoint
|
|
from rasa.utils.tensorflow.constants import EPOCHS
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"previous_best, current_values, improved",
|
|
[
|
|
(
|
|
{"val_i_acc": 0.5, "val_f1": 0.5},
|
|
{"val_i_acc": 0.65, "val_f1": 0.7},
|
|
True,
|
|
), # both improved
|
|
(
|
|
{"val_i_acc": 0.54, "val_f1": 0.5},
|
|
{"val_i_acc": 0.54, "val_f1": 0.7},
|
|
True,
|
|
), # one equal, one improved
|
|
(
|
|
{"val_i_acc": 0.8, "val_f1": 0.55},
|
|
{"val_i_acc": 0.8, "val_f1": 0.55},
|
|
False,
|
|
), # both equal
|
|
(
|
|
{"val_i_acc": 0.64, "val_f1": 0.5},
|
|
{"val_i_acc": 0.41, "val_f1": 0.7},
|
|
False,
|
|
), # one improved, one worse
|
|
(
|
|
{"val_i_acc": 0.71, "val_f1": 0.35},
|
|
{"val_i_acc": 0.52, "val_f1": 0.35},
|
|
False,
|
|
), # one worse, one equal
|
|
],
|
|
)
|
|
def test_does_model_improve(
|
|
previous_best: Dict[Text, float],
|
|
current_values: Dict[Text, float],
|
|
improved: bool,
|
|
tmpdir: Path,
|
|
):
|
|
checkpoint = RasaModelCheckpoint(tmpdir)
|
|
checkpoint.best_metrics_so_far = previous_best
|
|
# true iff all values are equal or better and at least one is better
|
|
assert checkpoint._does_model_improve(current_values) == improved
|
|
|
|
|
|
@pytest.fixture(scope="module")
|
|
def trained_ted(
|
|
tmp_path_factory: TempPathFactory, moodbot_domain_path: Path
|
|
) -> TEDPolicy:
|
|
training_files = "data/test_moodbot/data/stories.yml"
|
|
domain = Domain.load(moodbot_domain_path)
|
|
trackers = training.load_data(str(training_files), domain)
|
|
policy = TEDPolicy.create(
|
|
{**TEDPolicy.get_default_config(), EPOCHS: 1},
|
|
LocalModelStorage.create(tmp_path_factory.mktemp("storage")),
|
|
Resource("ted"),
|
|
ExecutionContext(GraphSchema({})),
|
|
)
|
|
policy.train(trackers, domain)
|
|
|
|
return policy
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"previous_best, current_values, improved",
|
|
[
|
|
({"val_i_acc": 0.5, "val_f1": 0.5}, {"val_i_acc": 0.5, "val_f1": 0.7}, True),
|
|
({"val_i_acc": 0.5, "val_f1": 0.5}, {"val_i_acc": 0.4, "val_f1": 0.5}, False),
|
|
],
|
|
)
|
|
def test_on_epoch_end_saves_checkpoints_file(
|
|
previous_best: Dict[Text, float],
|
|
current_values: Dict[Text, float],
|
|
improved: bool,
|
|
tmp_path: Path,
|
|
trained_ted: TEDPolicy,
|
|
):
|
|
model_name = "checkpoint"
|
|
best_model_file = tmp_path / model_name
|
|
assert not best_model_file.exists()
|
|
checkpoint = RasaModelCheckpoint(tmp_path)
|
|
checkpoint.best_metrics_so_far = previous_best
|
|
checkpoint.model = trained_ted.model
|
|
checkpoint.on_epoch_end(1, current_values)
|
|
if improved:
|
|
assert best_model_file.exists()
|
|
else:
|
|
assert not best_model_file.exists()
|