code: def run(self, definition):
          
          self.logger.info("Running with Python %s", sys.version.replace("\n", ""))
          self.logger.info("Running on platform %s", platform.platform())
          self.logger.info("Current cpu count is %d", multiprocessing.cpu_count())
          self.logger.info("Processing pipeline definition '%s'", definition)
  
          document = self.validate_document(definition)
          if self.options.validate_only:
              self.logger.info("Stopping after validation as requested!")
              return []
  
          self.provide_temporary_scripts_path()
  
          versions = VersionsCheck().process(document)
          VersionsReport().process(versions)
  
          collector = Application.create_and_run_collector(document, self.options)
          matrix = find_matrix(document)
          output = []
          if len(matrix) == 0:
              model = {} if 'model' not in document else document['model']
              pipeline = Pipeline(model=model, options=self.options)
              pipeline.hooks = Hooks(document)
              result = pipeline.process(document['pipeline'])
          else:
              result = self.run_matrix(matrix, document)
  
          output = result['output']
          self.shutdown(collector, success=result['success'])
          return output
docs: Processing the pipeline.