Skip to content
Ashley Scillitoe edited this page Jan 28, 2020 · 1 revision

Pipelining structures and task-centric speed-up

Effective Quadratures is seeing increasing applications in academia, and in industries such as the aeronautical industry. To make the code more accessible for non-expert users it is desirable to streamline common tasks such as Uncertainty Quantification (UQ), sensitivity analysis, dimension reduction and optimisation. One way to do this is through the use of pipelines, where a sequence of operations (such as function calls) can be packaged into a "pipeline".

For example, for a UQ task where we wish to compute the mean and variance of an output (see tutorial 9!), we might do:

myParameter = Parameter(lower=-1, upper=1, order=2, distribution='Uniform')
myBasis = Basis('Univariate')
myPoly = Poly(myParameter, myBasis, method='numerical-integration')
mypoly.set_model(data)
mean, var = mypoly.get_mean_and_variance()

The above code is a minimal example, and there might be more code to decide on order, distribution etc. This workflow could instead be packaged into the pipeline compute_moments:

mean, var = compute_moments(lower=-1,upper=1,method='numerical-integration',model_data=data)

The selection of hyper-parameters such as order could also be integrated into the pipeline through a tuning routine, to further simplify the process for the end user. A set of pipelines for the most common tasks is proposed, in addition to a generic pipeline class to enable users to build their own pipelines (similar to the scikit-learn's sklearn.pipeline).

This could also be be an opportunity to optimise workflows for speed and memory usage. Joblib (joblib.readthedocs.io/en/latest/) could be used to provide parallel capability similar to scikit-learn's n_jobs, to parallelise some tasks such as hyper-parameter tuning.

Main deliverables:

  • Build a generic Pipeline class to chain Effective Quadrature functions together.

  • Develop one or more workflows for common applications, such as multi-fidelity modelling. Incorporating visualisation tools into the workflow could form a part of this work, if the student is interested.

  • Optional extension: Investigate performance gains for specific workflows. This may involve profiling to identify bottlenecks, and joblib could be used to parallelise certain components of workflows.

Project mentors

  • Ashley Scillitoe
  • Pranay Seshadri
Clone this wiki locally