BagPipes is a second-generation configuration space exploration framework. It enables intelligent, algorithmic exploration of configuration spaces under time and resource constraints. A configuration space is defined as a phase of a pipeline with mutliple components and/or any component with a variable parameter (discrete- and real-valued, cross products). The performance of a generated pipeline is further measured by any number of metrics provided by scoring annotators. Furthermore, individual annotators can be scored based on ...
BagPipes can (eventually) parallelize executions for faster evaluation of a configuration space.
This module is part of the Open Advancement of Question Answering (OAQA) project.
BagPipes can be included as a library dependency or executed as standalone project.
The bagpipes command-line tool can be used to generate and execute yaml component and pipeline descriptors. To use the command-line tool as a standalone executable:
- Clone the git repo to your local machine (
git clone https://github.com/oaqa/bagpipes.git
) - Go to the root directory of the project.
- Run
sbt stage
. This will generate the command-line executable at /path/to/bagpipes/target/universal/stage/bin/
For a full tutorial on how to generate/run configurations or setup as part of an external project, go here or run bagpipes --help
to view more options.
To generate the most basic configuration (name, author, and collection-reader):
bagpipes init
This will result in the following yaml configuration file:
configuration:
author: default
name: default
collection-reader:
inherit: collection_reader.filesystem-collection-reader
BagPipes comes with built-in components based on the UIMA tutorial. To generate the most basic RoomAnnotator pipeline configuration run:
bagpipes init pl -n --collection-reader "collection_reader.filesystem-collection-reader" --component "tutorial.ex1.RoomNumberAnnotator" Pp1=foo p2=bar
This will result in the following configuration:
configuration:
author: default
name: default
collection-reader:
inherit: collection_reader.filesystem-collection-reader
pipeline:
- inherit: tutorial.ex1.RoomNumberAnnotator
params:
p1: foo
p2: bar
To execute an arbitrary yaml myDesc.yaml
configuration, simply run:
bagpipes exec myDesc
For example, to execute the configuration above, you can run,
bagpipes init pl -n --collection-reader "collection_reader.filesystem-collection-reader" --component "tutorial.ex1.RoomNumberAnnotator" Pp1=foo p2=bar > myDesc.yaml
Then execute with,
bagpipes exec myDesc
To include BagPipes as a maven dependency, (for now) clone it to your local machine and add this to your pom.xml
:
<dependency>
<groupId> edu.cmu.lti.oaqa </groupId>
<artifactId>bagpipes</artifactId>
<version> 0.0.1 </version>
</dependency>
To use within a Java or Scala application use this API call to execute an arbitrary YAML configuration:
BagPipesRun.run(myYaml);