class_docstr: Trains a model using a graph schema.
class_docstr_tok: ["Trains","a","model","using","a","graph","schema","."]
docstr: Runs the graph using fingerprints to determine which nodes need to re-run.
  
  Nodes which have a matching fingerprint key in the cache can either be removed
  entirely from the graph, or replaced with a cached value if their output is
  needed by descendent nodes.
  
  Args:
      train_schema: The train graph schema that will be run in fingerprint mode.
      importer: The importer which provides the training data for the training.
      is_finetuning: `True` if we want to finetune the model.
  
  Returns:
      Mapping of node names to fingerprint results.
docstr_tok: ["Runs","the","graph","using","fingerprints","to","determine","which","nodes","need","to","re-run",".","Nodes","which","have","a","matching","fingerprint","key","in","the","cache","can","either","be","removed","entirely","from","the","graph",",","or","replaced","with","a","cached","value","if","their","output","is","needed","by","descendent","nodes",".","Args",":","train_schema",":","The","train","graph","schema","that","will","be","run","in","fingerprint","mode",".","importer",":","The","importer","which","provides","the","training","data","for","the","training",".","is_finetuning",":","`","True","`","if","we","want","to","finetune","the","model",".","Returns",":","Mapping","of","node","names","to","fingerprint","results","."]
code: def fingerprint(
      self,
      train_schema: GraphSchema,
      importer: TrainingDataImporter,
      is_finetuning: bool = False,
  ) -> Dict[Text, Union[FingerprintStatus, Any]]:
      """Runs the graph using fingerprints to determine which nodes need to re-run.
  
      Nodes which have a matching fingerprint key in the cache can either be removed
      entirely from the graph, or replaced with a cached value if their output is
      needed by descendent nodes.
  
      Args:
          train_schema: The train graph schema that will be run in fingerprint mode.
          importer: The importer which provides the training data for the training.
          is_finetuning: `True` if we want to finetune the model.
  
      Returns:
          Mapping of node names to fingerprint results.
      """
      fingerprint_schema = self._create_fingerprint_schema(train_schema)
  
      fingerprint_graph_runner = self._graph_runner_class.create(
          graph_schema=fingerprint_schema,
          model_storage=self._model_storage,
          execution_context=ExecutionContext(
              graph_schema=train_schema, is_finetuning=is_finetuning
          ),
      )
  
      logger.debug("Running the train graph in fingerprint mode.")
      return fingerprint_graph_runner.run(
          inputs={PLACEHOLDER_IMPORTER: importer}
      )
  
file_path: rasa/rasa/engine/training/graph_trainer.py
imports: import copy
  import logging
  from pathlib import Path
  from typing import Any, Dict, Text, Type, Union
  from rasa.engine.caching import TrainingCache
  from rasa.engine.graph import ExecutionContext, GraphSchema, GraphModelConfiguration
  from rasa.engine.constants import PLACEHOLDER_IMPORTER
  from rasa.engine.runner.interface import GraphRunner
  from rasa.engine.storage.storage import ModelStorage, ModelMetadata
  from rasa.engine.training.components import PrecomputedValueProvider, FingerprintComponent, FingerprintStatus
  from rasa.engine.training.hooks import TrainingHook, LoggingHook
  from rasa.shared.importers.importer import TrainingDataImporter
label_desc: Use image node_id 3 for calling the GraphTrainer obj's underlying member method code with example usage: obj.fingerprint(train_schema, importer, is_finetuning) and returns: fingerprint_graph_runner