VECMA VVUQ Toolkit

VECMA VVUQ Toolkit

The VECMA toolkit (VECMAtk) can be found on its own designated webpage vecma-toolkit.eu

The VECMAtk establishes a platform for verification, validation and uncertainty quantification (VVUQ). The goal is to provide tools that can be combined to capture complex scenarios, applied to applications in disparate domains, and used to run multiscale simulations on any desktop, cluster or supercomputing platform.

The VECMAtk is periodically updated, with minor releases every 3 months, and major releases every 12 months.

 

Month 42 final release

The Month 42 release (24 January 2022), and proceeding releases are made up of the following tools:

  • FabSim3
  • EasyVVUQ
  • EasySurrogate
  • QCG Pilot Job
  • QCG-Now
  • QCG-Client
  • EQI, which replaces the name of EasyVVUQ-QCGPilotJob previously used
  • MUSCLE3

The M42 version of the VECMAtk was released on the January 24th, 2022.

The Month 42 release continues remaining the prominent feature allows users to install all packages for the Toolkit as a python virtualEnv.

 

EasyVVUQ – v1.1.1

New features:

  • Updated the documentation in a range of places.

Bug fixes:

Tutorials:

  • Added an example for including noise in an EasyVVUQ campaign ( easyvvuq_Ishigami_with_noise_tutorial.ipynb)

 

QCG PilotJob – v0.13.0

New features:

  • Minimisation of the srun command usage

The basic mechanism that allowed to start QCG-PilotJob agents only with srun has been generalised and allows to select different mechanisms, e.g. ssh

  • Pub/Sub task status queries

Provided an asynchronous notification mechanism on a level of QCG-PilotJob manager so the client (via API) can trace the task status changes without periodic querying the service

  • Experimental implementation of a global queue mechanism

Currently available in a globalqueue branch (https://github.com/vecma-project/QCG-PilotJob/tree/globalqueue)

Bug fixes:

  • resource parsing in the partition mode
  • launching agents via ssh protocol
  • proper handling of application arguments in the intelmpi model
  • small issues

 

EasySurrogate – v0.18

New features:

Updates:

  • Added non-linear activation possibility to deep-active subspace layer

Tutorials:

 

FabSim3 – v3.6

New features:

  • Added more VVP support
    • Fixed example of Ensemble Validation VVP in FabFlee.
    • Added an example of the Stable Intermediate Form VVP in FabDummy.
  • Added support for Cirrus and MareNostrum.

Updates:

  • General refactoring of the codebase to improve maintainability.

Tutorials:

This version of FabSim3 has been used to enable five of the VECMA application tutorials

 

 

 

Previous releases 

Month 39 releases

EasyVVUQ – v1.1

 New features:

  • Ability to add external runs via a DataFrame
  • Ability to execute EasyVVUQ workflows from R

Tutorials: 

  • Updates to Dimension Adaptive Fusion tutorial.

 

 

QCG PilotJob – v0.12.3

 

New features:

  • support for the enumeration values in iterative tasks: iteration element can take a list of enumeration values as an input parameter

Updates:

  • documentation update: added FAQ section

 

 

FabSim3 – v3.2

 

New features:

  • Migrated to Fabric2

Updates:

  • Updated documentation and website
  • Fixed bugs

 

Tutorials:

This version of FabSim3 has been used to enable five of the VECMA application tutorials

 

 

Month 36 release

EasyVVUQ – v1.0

New features:

  • Better support to execute pure Python simulations.
  • Added a surrogate method to AnalysisResults classes.
  • QCG-PJ support.
  • Gaussian Process Surrogate analysis method.
  • Reworked Campaign and hand optimised database.
  • Re-implemented Actions system for modular execution options.
  • DataFrameSampler for uploading new

Updates:

  • Large scale code refactoring.
  • Docstring and documentation updates.
  • Additional testing and benchmarking.
  • Continuous benchmarking.

 

QCG PilotJob – v0.12.1

New features:

  • Initial implementation of executor-like interface
  • Breakdown of the toolkit into components (core, cmds and executor-api)

Updates:

  • Changed organisation of the repository (namespaces)
  • Optimisation in starting node agents
  • Updated documentation
  • Bug fixes

 

EasySurrogate – v0.16

New features:

  • Gaussian Process surrogate, including sequential design
  • Deep active subspace surrogate
  • Coupling between EasyVVUQ and EasySurrogate, allowing the former to generate training data for the latter

Tutorials:

  • General: link
  • Artificial neural network surrogate: link
  • Quantized Softmax Network surrogate: link
  • Kernel Mixture Network surrogate: link
  • Reduced surrogates: link
  • Coupling EasySurrogate + MUSCLE3: link
  • Coupling EasySurrogate + EasyVVUQ: link
  • Deep Active Subspace surrogate: link
  • Gaussian Process surrogate: link

 

FabSim3 – v3.0

New features:

  • Revamped FabSim3 documentation (https://fabsim3.readthedocs.io)
  • Refactored FabSim3 repository files and folders structure (pull#204, issue#203)
    • Python imports are now inside a main fabsim module to eliminate any name clashes with other existing libraries that had similar names to FabSim3 components (such as the base library).
  • Enabled the backing up of the plugin directory within install_plugin command (#198)

Updates:

  • Added support to retrieve only the request files within fetch_results command (#202)
  • Fixed the RuntimeError when the fork method is already loaded (#201) 

Tutorials:

This version of FabSim3 has been used to enable five of the VECMA application tutorials

Month 33 release

EasyVVUQ – v0.9

New features:

  • MCMC support for calibration problems.
  • Rework of the actions framework to allow a wider range of execution scenarios and to simplify the code base.
  • CSV sampler for loading in data created with other software.

Updates:

  • New, simplified workflows due to refactoring efforts.
  • New tutorials and binder integration.

 

EasySurrogate – v0.15

This release has been kept the same as the previous version. 

This is second beta release of EasySurrogate. Main release will be in the summer of 2021.

  • Features :
    • Kernel mixture networks (with time-lagged features)
    • Standard artificial neural networks (with time-lagged features)
  • Updates:
  • Tutorials:
    • Tutorials on all new features are added.

 

QCG PilotJob – v0.11

New features:

  • Support for gathering launched processes metrics

Updates:

  • Small bug fixes

 

EQI – v0.5.2

New features:

  • Features stay the same as listed in the previous version, which is comprehensive.

Updates:

  • Extended installation instruction with information about compatibility with specific versions of EasyVVUQ and QCG-PilotJob. This is aimed to preserve basic functionality regardless of the changes provided to the still evolving codes of EasyVVUQ and QCG-PilotJob

 

MUSCLE 3 – v0.4.0

This release has been kept the same as the previous version. 

MUSCLE 3 is the third incarnation of the Multiscale Coupling Library and Environment. With MUSCLE 3, you can connect multiple simulation models together into a multiscale simulation. Simulation models can be as simple as a single Python file, or as complex as a combination of multiple separate simulation codes written in C++ or Fortran, and running on an HPC machine.

  • Features :
    • New yMMSL, compute_elements are now components
  • Updates:
    • Fix handling of non-contiguous and F-order numpy arrays
    • C++ memory usage improvements for large lists/dicts
    • Improved shutdown when Python submodel crashes
    • Fix logging warning
  • Tutorials:

Refer to the VVUQ Toolkit website Tutorials page.

FabSim3 – v2.8

New features:

Updates:

  • Reduced the number of SSH connections (#196)
  • Improved FabSim3 code quality (LGTM code quality : B)
  • Updated FabSim3 documentation

 

Tutorials:

This version of FabSim3 has been used to enable five of the VECMA application tutorials

M30 release

EasyVVUQ – v0.8

New features:

  • Convenient relocation of campaigns that need to be moved to another storage location and then further worked on.
  • Added a new AnalysisResults class that represents analysis results. It can be used to inform further sampling and simulations. It also provides a consistent interface between Analysis classes and the user.
  • Plotting functionality in the AnalysisResults class.
  • Added Cerberus validation of the Decoder output.

Updates:

  • Changed the interface between Decoders and the Database – Decoders are now mandated to return dictionaries instead of pandas DataFrames.
  • Removed Collaters – moved that functionality to the database.

 

EasySurrogate – v0.15

This is second beta release of EasySurrogate. Main release will be in the summer of 2021.

  • New Features :
    • Kernel mixture networks (with time-lagged features)
    • Standard artificial neural networks (with time-lagged features)
  • Updates:
  • Tutorials:
    • Tutorials on all new features are added.

 

QCG PilotJob – v0.10

  • New Features :
    • Support for resume mechanism (#82)
    • Fixed logging (#88)
    • Support for canceling submitted jobs (#89)
  • Updates:
    • Optimized wait4all client API method (#95)
    • Automatically close service when all jobs finish and there is no active interface
    • Developer documentation updated with description of launching slurm tests with docker compose
    • Bug fixes
  • Tutorials:
    • Refer to the VVUQ Toolkit website Tutorials page

 

EQI – v0.5

This release introduces a few completely new functionalities and several improvements and changes aimed to enhance performance and usability of the tool

  • New Features :
    • Resume mechanism allowing to resurrect uncompleted executions
    • New schemes for submission of tasks employing iterative tasks of QGG-PilotJob
    • Added support for logging (logging level set in EQI Executor’s constructor)
    • Extended documentation with sections about the resume mechanism and performance optimisation
  • Updates:
    • Functional corrections in API (v0.4.1 release on GitHub):
      • Allowed simplified requirements specification for a task: specification of requirements for a task is now optional (if not provided a single core will be used by the task), cores and nodes may now be int values, not only eqi.Resources objects.
      • EQI Executor is now initialised with a campaign object so other interactions with EQI are relieved from the need to access the campaign.
    • Semantical corrections in API:
      • The main package name has been changed from “easypj” to “eqi” (v0.4.1 release on GitHub)
      • SubmitOrder -> ProcessingScheme
      • Run -> Sample (eg. RUN_ORIENTED -> SAMPLE_ORIENTED)
      • Phase -> Step (e.g. PHASE_ORIENTED -> STEP_ORIENTED)
    • Optimised way of submission tasks to QCG-PilotJob and finishing QCG-PilotJob Manager
    • Refactorisation of code and other minor improvements behind the scenes
    • Extended set of test cases
    • Ensured compatibility with the newest releases of QCG-PilotJob (v0.10) and EasyVVUQ (v0.8)
  • Tutorials:
    • Refer to the VVUQ Toolkit website Tutorials page

 

MUSCLE 3 – v0.4.0

MUSCLE 3 is the third incarnation of the Multiscale Coupling Library and Environment. With MUSCLE 3, you can connect multiple simulation models together into a multiscale simulation. Simulation models can be as simple as a single Python file, or as complex as a combination of multiple separate simulation codes written in C++ or Fortran, and running on an HPC machine.

  • New Features :
    • New yMMSL, compute_elements are now components
  • Updates:
    • Fix handling of non-contiguous and F-order numpy arrays
    • C++ memory usage improvements for large lists/dicts
    • Improved shutdown when Python submodel crashes
    • Fix logging warning
  • Tutorials:
    • Refer to the VVUQ Toolkit website Tutorials page

 

FabSim3 – v2.6

  • New Features :
    • Added the first implementation of VVP_LoR (Validation & Verification Pattern – Level of Refinement)
    • Extended documentation on how plugin developers can use the FabSim3 API
    • Added option to install plugin with branch name (#194)
    • Added support for ensemble job submission when SWEEP folder located on remote machine (#192)
    • Supported user-requested python packages installation on remote machine (#193)
    • Added pip installation option for QCG-PJ on compute nodes (#188)
    • Added option to delete target folder if exists (#191)
    • Added user-specific configuration to install application in VirtualEnv (#150)
  • Updates:
    • Reduced the number of SSH connections (#190)
    • Disabled localhost job execution on the FabSim3 root directory (#187)
  • Tutorials:

This version of FabSim3 has been used to enable five of the VECMA application tutorials:

 

M27 release

EasyVVUQ – v0.7.1.5

  • New Features :
    • Added Kubernetes support via the ExecuteKubernetes action. This allows the user to execute their VVUQ workflows on a Kubernetes cluster with minimal set-up overhead.
    • Reworked the actions mechanism. In preparation of implementing it using the Futures mechanism which would allow for a more interactive use of the framework.
    • Added a CopyEncoder for easier handling of arbitrary configuration files.
    • Added a ReplicaSampler class for sampling simulations with different seed values.
  • Updates:
    • Improvements to the Monte Carlo sampling and analysis classes.
    • Documentation restructuring and new tutorials.
    • Added a large interactive Jupyter notebook tutorial covering the major features of the software.
    • Greatly expanded testing coverage. Most of the essential functionality is covered by high-quality tests that check for the correctness of the results.

 

EasySurrogate – v0.1 (beta)

 First Beta release of EasySurrogate

  • Features:
    • Mimics the ‘Campaign’ structure of EasyVVUQ
    • Quantized Softmax Networks are available, which are stochastic, neural-network based surrogates used for conditional resampling of reference data
    • Reduced surrogates are available, which are used to compress the size of training data by orders of magnitude while retaining accuracy for spatially-integrated quantities of interest.
    • Contains a general tutorial, and one for each type of available surrogate method.

 

QCG PilotJob – v0.9.0

  • New Features :
    • New execution models intelmpi, srunmpi, openmpi designed to launch MPI applications with different implementations and various HPC Slurm configurations
    • Initial support for hyper-threading nodes, discovering hyper-threading configurations and binding more than single CPU to process
  • Updates:
    • Bug fix related to parsing slurm node list
    • Bug fix related to freezing while launching MPI applications

 

EasyVVUQ-QCGPJ – v0.4 

https://easyvvuq-qcgpj.readthedocs.io/en/latest/tutorials/interactive_tutorial.html

 

MUSCLE 3 – v0.3.2

  • New Features :
    • Improved logging to aid in debugging Python submodels
  • Updates:
    • Fixes to sending and receiving lists, dictionaries and grids from C++
    • Accessing settings from C++ is now more flexible
    • Compatibility improvements to the build system

 

FabSim3 – v2.3 

  • New Features :
    • Added support for plugin machine-specific setting (#186)
  • Updates:
    • Used abbreviated form for PilotJob and virtualenv input args (#185)
    • Fixed incompatibility with newer version of QCG-PilotJob (#184)
    • Fixed reported bugs
    • Improved ensemble2campaign and campaign2ensemble functionalities

      Tutorials

This version of FabSim3 has been used to enable five of the VECMA application tutorials:

 

We encourage you to share with us your experience with using VECMAtk, and fill out this very short and focused user questionnaire available here so that we can incorporate your suggestions in advance to our next release.

Month 24 release

Some significant new features and updates have been made in M24 release.

The Month 24 release has a prominent new feature allows users to install all packages for the Toolkit as a python virtualEnv.

In addition to installing each component of VECMA VVUQ Toolkit individually, the full VECMAtk Toolkit is available for download and installation; this contains all the software components in the form of a Python VirtualEnv.

For EasyVVUQ, it has Important changes since v0.5

  • Added support for vector QOIs
  • Implemented validation classes for comparing probability distributions
  • New tutorials
  • Expanded test coverage
  • Implemented automatic continuous deployment (to pypi and conda cloud)
  • Created an Anaconda package

MUSCLE3 v0.3.1 has been updated with the new features:

  • Support for sending and receiving multidimensional grids/arrays
  • Support for Python 3.8

and improved functions:

  • Python 3.5.1 support
  • Build compatibility on more operating systems

FabSim3 v2.0 has the following new Features

  • Fixed synchronizing/copying for a large number of files and folders 
  • Added support for setting memory size for the submitted job 
  • Added two new FabSim3 plugins FabCovid and fabmogp
  • Setup new documentation website 

and updates

  • Fixed overwritten of env.memory bug
  • Fixed QCG-PJ template file for a large number of jobs 
  • Improved FabSim3 automated installation script
  • Fixed several bugs
  • Improved performance and scalability

Tutorials

This version of FabSim3 has been used to enable three of the VECMA application tutorials:

QCG-PilotJob V0.8.0 has been updated with the new features:

  • new form of documentation based on Sphinx at https://qcg-pilotjob.readthedocs.io
  • changed package name to qcg-pilotjob (previously QCGPilotManager)
  • changed Python library module name to qcg.pilotjob (previously qcg.appscheduler)
  • updated documentation in API methods
  • added more optimal way of handling iterative jobs
  • job names cannot contain any special character nor the variable in form ${}
  • iterations of job’s will automatically have assigned job name in format: MAIN_JOB_NAME:ITERATION_INDEX
  • changed ‘iterate’ element in job description: 
    • the new name is ‘iteration’
    • the new format is dictionary with ‘start’ (optional) and ‘stop’ keys
  • changed API methods: 
    • qcg.pilotjob.api.job.Joblist: 
      • addStd() -> add_std()
      • jobNames() -> job_names()
      • orderedJobNames() -> ordered_job_names()
      • orderedJobs() -> ordered_jobs()
      • loadFromFile() -> load_from_file()
      • saveToFile() -> save_to_file()
    • qcg.pilotjob.api.manager.Manager:
      • sendRequest() -> send_request()
      • isStatusFinished() -> is_status_finished()
    • qcg.pilotjob.api.manager.LocalManager:
      • stopManager() -> kill_manager_process()
  • new method qcg.pilotjob.api.manager.Manager.info_parsed() – returns job information in parsed form
  • qcg.pilotjob.api.manager.Manager.resources() – changed attributes in response: 
    • totalCores -> total_cores
    • totalNodes -> total_nodes
    • usedCores -> used_cores
    • freeCores -> free_cores
    • EasyVVUQ-QCGPJ

EasyVVUQ-QCGPJ V0.3 has been updated with the new features:

  • a new form of documentation based on Sphinx 
  • packages available in the pypi repository 
  • released an explicite dependency on EasyVVUQ and QCG-PilotJob, so the tool can be installed as a plugin for the existing installation of EasyVVUQ.
  • support for the latest versions of EasyVVUQ (v0.6) and QCG-PilotJob (v0.8)

Month 21 release

The Month 21 release has the following tools:

  • FabSim3
  • EasyVVUQ
  • QCG Pilot Job
  • QCG-Now
  • QCG-Client
  • EasyVVUQ-QCGPilotJob
  • MUSCLE3

Features and updates made in M21 release are listed as follows.

For EasyVVUQ, it has:

  • Point Collocation method for PCE sampling.
  • GaussianProcessSurrogate class which will serve as a basis and testing ground for surrogate based workflows
  • Added quasirandom sampling classes: LHCSampler and HaltonSampler.
  • JSONDecoder class. It allows codes to use JSON as output format.

And the tool has the following updates:

  • Started measuring test coverage using coveralls
  • Numerous bug fixes

For FabSim3, the tool has the following new feature:

  • Added automated configuration of machines_user.yml file (#173 , #162)

FabSim3 has been updated with:

  • Fixed Multi threading bug, allowing for much larger ensemble sizes (#175#174)
  • Disabled execution of run_prefix commands on the remote machine during the job submission (#171#176)
  • Defined additional functional tests for FabSim3 and plugins (#125)

MUSCLE3 has been released with the new tag: 0.3.0. MUSCLE3 has now with support for Fortran model components and various small fixes and improvements. The e-MUSC project has contributed MUSCLE 3 to the VECMA toolkit.

The QCG-PJ tool have been released with the new tags and have included several bugfixes, in particular:

  • bugfix related to the ‘job temporarily disabled’ error
  • bugfix related to the node launcher agent wait time

The QCG-EasyVVUQ-QCGPJ tool has some new features as follows:

  • possibility to use `EXEC_ONLY` option for `SubmitOrder` that limits the application of the pilot job tasks just to the actual execution of model (with this option decoding is executed without PJ)
  • possibility to define a logging level of the QCG Pilot Job software directly from the API
  • an internal tutorial material that can be helpful for new EasyVVUQ-QCGPJ users.  

Month 18 release

The Month 18 release is made up of the following tools:

  • FabSim3
  • EasyVVUQ
  • QCG Pilot Job
  • QCG-Now
  • QCG-Client
  • EasyVVUQ-QCGPilotJob
  • MUSCLE3

The following enhancements in terms of features have been made in the Month 18 release:

  • Improved UQ for the human migration application, mixing EasyVVUQ with FabSim3
  • QCG-PJ: improved scalability, both with and without EasyVVUQ
  • Support for half the UQ patterns originally proposed in VECMA for four projects
  • Stable version of MUSCLE3 – FabSim3 integration
  • Support for the High-Performance Computing Center Stuttgart (HLRS) supercomputer
  • Support for systematic output analysis through a new tool
  • Support for multiple Validation & Verification Patterns (VVPs)
  • 20 alpha users

Month 15 public release

The latest VECMAtk M15 release contains the following components:

  • EasyVVUQ
  • FabSim3
  • QCG Pilot Job
  • QCG-Client
  • QCG-Now
  • MUSCLE3

The M15 release has the following feature improvements:

– Addition of MUSCLE 3.
– FabSim3: addition of replica support.
– Implementation of the first VVP + automated validation example.
– EasyVVUQ: completion of refactoring + addition of new UQ methods.
– Implementation of fixes addressing concerns from M12 release.
– Support for at least two UQ patterns.
– 15 alpha users.
– Alpha version of MUSCLE3 – FabSim3 integration.

The M15 version was released on September 13th, 2019.

Month 12 public release

Internal releases

Month 9

Month 6

Month 3