def __init__( self, cfg: RasaNLUModelConfig, component_builder: Optional[ComponentBuilder] = None, skip_validation: bool = False, model_to_finetune: Optional["Interpreter"] = None, ) -> None: self.config = cfg self.skip_validation = skip_validation self.training_data = None # type: Optional[TrainingData] if component_builder is None: # If no builder is passed, every interpreter creation will result in # a new builder. hence, no components are reused. component_builder = components.ComponentBuilder() # Before instantiating the component classes, lets check if all # required packages are available if not self.skip_validation: components.validate_requirements(cfg.component_names) if model_to_finetune: self.pipeline = model_to_finetune.pipeline else: self.pipeline = self._build_pipeline(cfg, component_builder)
def create(model_metadata: Metadata, component_builder: Optional[ComponentBuilder] = None, skip_validation: bool = False) -> 'Interpreter': """Load stored model and components defined by the provided metadata.""" context = {} if component_builder is None: # If no builder is passed, every interpreter creation will result # in a new builder. hence, no components are reused. component_builder = components.ComponentBuilder() pipeline = [] # Before instantiating the component classes, # lets check if all required packages are available if not skip_validation: components.validate_requirements(model_metadata.component_classes) for i in range(model_metadata.number_of_components): component_meta = model_metadata.for_component(i) component = component_builder.load_component( component_meta, model_metadata.model_dir, model_metadata, **context) try: updates = component.provide_context() if updates: context.update(updates) pipeline.append(component) except components.MissingArgumentError as e: raise Exception("Failed to initialize component '{}'. " "{}".format(component.name, e)) return Interpreter(pipeline, context, model_metadata)
def create( model_dir: Text, model_metadata: Metadata, component_builder: Optional[ComponentBuilder] = None, skip_validation: bool = False, should_finetune: bool = False, ) -> "Interpreter": """Create model and components defined by the provided metadata. Args: model_dir: The directory containing the model. model_metadata: The metadata describing each component. component_builder: The :class:`rasa.nlu.components.ComponentBuilder` to use. skip_validation: If set to `True`, does not check that all required packages for the components are installed before loading them. should_finetune: Indicates if the model components will be fine-tuned. Returns: An interpreter that uses the created model. """ context: Dict[Text, Any] = {"should_finetune": should_finetune} if component_builder is None: # If no builder is passed, every interpreter creation will result # in a new builder. hence, no components are reused. component_builder = components.ComponentBuilder() pipeline = [] # Before instantiating the component classes, # lets check if all required packages are available if not skip_validation: components.validate_requirements(model_metadata.component_classes) for i in range(model_metadata.number_of_components): component_meta = model_metadata.for_component(i) component = component_builder.load_component( component_meta, model_dir, model_metadata, **context ) try: updates = component.provide_context() if updates: context.update(updates) pipeline.append(component) except components.MissingArgumentError as e: raise Exception( "Failed to initialize component '{}'. " "{}".format(component.name, e) ) return Interpreter(pipeline, context, model_metadata)