rasa.graph_components.validators.finetuning_validator

FinetuningValidator Objects

Class: FinetuningValidator

Component that checks whether fine-tuning is possible.

This is a component at the beginning of the graph which receives all training data and raises an exception in case is_finetuning is True and finetuning is not possible (e.g. because new labels were added). In case we are doing a regular training (and not finetuning) this persists the necessary information extracted from the training data to be able to validate when initialized via load whether we can finetune.

Finetuning is possible if, compared to the initial training phase, it holds that:

  1. the configuration (except for "epoch" keys) does not change
  2. the domain (except for e.g. "responses") does not change - or we're not finetuning the core part
  3. the intents, entities, entity groups, entity roles, and action names that appeared in the original NLU training data, appear in the NLU training data used for finetuning, and no new such items (i.e. intents, entities, entity groups, entity roles, or action names) have been added, compared to the original training data - or we're not finetuning the nlu part.

Note that even though conditions 2. and 3. differ based on which part we finetune, condition 1. always covers both parts, i.e. NLU and Core.

get_default_config

@staticmethod
def get_default_config() -> Dict[Text, Any]:
    # Default config for ProjectProvider

init

def __init__(config: Dict[Text, Any],
             model_storage: ModelStorage,
             resource: Resource,
             execution_context: ExecutionContext,
             fingerprints: Optional[Dict[Text, Text]] = None) -> None:
    # Instantiates a FineTuningValidator.

Arguments:

validate

def validate(importer: TrainingDataImporter) -> TrainingDataImporter:
    # Validates whether we can finetune Core and NLU when finetuning is enabled.

Arguments:

Raises:

Returns:

create

@classmethod
def create(cls, config: Dict[Text, Any], model_storage: ModelStorage,
           resource: Resource,
           execution_context: ExecutionContext) -> FinetuningValidator:
    # Creates a new FineTuningValidator.

persist

def persist() -> None:
    # Persists this FineTuningValidator.

load

@classmethod
def load(cls, config: Dict[Text, Any], model_storage: ModelStorage,
         resource: Resource, execution_context: ExecutionContext,
         **kwargs: Any) -> GraphComponent:
    # Loads a FineTuningValidator.