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:
- the configuration (except for "epoch" keys) does not change
- the domain (except for e.g. "responses") does not change - or we're not finetuning the core part
- 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:
model_storage- Storage which graph components can use to persist and load themselves.resource- Resource locator for this component which can be used to persist and load itself from themodel_storage.execution_context- Information about the current graph run.fingerprints- A dictionary of fingerprints generated by aFineTuningValidator
validate
def validate(importer: TrainingDataImporter) -> TrainingDataImporter:
# Validates whether we can finetune Core and NLU when finetuning is enabled.
Arguments:
importer- a training data importer
Raises:
InvalidConfigExceptionif there is a conflict
Returns:
- Training Data Importer.
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.