You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A cornerstone of AiiDA's design is the provenance graph. Its purpose is to improve the reproducibility of computational data. At a very minimum, the provenance graph should allow a user to retrace the origins of a particular piece of data stored within it. However, to make it truly reproducible, AiiDA should enable the user to actually relaunch a previously completed workflow or calculation to reproduce its outputs. The former goal has been achieved, but the latter is still not trivial.
Desired Outcome
The roadmap item can be considered complete if the following is possible:
User A can run a calculation or workflow through AiiDA and export it in an archive
User B can import the archive and relaunch the completed process with minimal setup. A rough sketch of the user interface would look something like:
The relaunch_completed_process is a utility function that would take care of performing the required setup as much as possible, such as setting up and configuring any computers and codes.
Impact
The potential impact of this functionality is significant, although it is slightly attentuated since it is not realistic that it will be pragmatic for all projects run with AiiDA. For projects that can fulfill the requirements though, the reproducibility of the produced data should be close to 100% which is something that hasn't yet been accomplished in computational science and would therefore be a powerful demonstrator.
Complexity
The problem can be decomposed in two subproblems:
Ensure that all inputs of any process are perfectly conserved in the provenance graph such that they can also be perfectly recreated for a relaunch
Ensure that required computing environments can be automatically recreated and reproduced.
The first problem was essentially already solved by AiiDA's provenance graph, although it was incomplete for the metadata inputs. This has since been addressed in aiida-core and should be released with the next feature release v2.3.
The second problem is more challenging. Most completed processes will include at least one CalcJob and these have a Code input. In most cases, this is an instance of InstalledCode which represents an executable on a remote computing resource which is configured as a Computer node in the provenance graph. The problem is that the Computer that was used for the original calculation job is personal to the user that launched it and most likely the user wanting to reproduce the calculation doesn't have access to the same computer. Therefore the first challenge is to replace the original computer with one that the relaunching user has access to.
But even then, the original InstalledCode input only records the filepath to the executable on the remote computer. It is unlikely that the computer on which the job is to be relaunched has the code in the exact same path. Currently, the user will therefore manually have to create an InstalledCode node to replace the original input. This problem could be significantly simplified if the code would be containerized, for example using Docker. If the InstalledCode simply refers an executable within a Docker container, it should be transferable on any computing architecture and AiiDA would be able to automatically reconfigure an InstalledCode on the appropriate Computer.
This is then exactly where the limitation of the entire proposal comes in: the functionality will only be available to processes that use containerized codes for calculation jobs. This puts a burden on users, however, as now before they can run calculation jobs, they will have to create a container first. This will make this approach less suitable for research projects where the remote code is a moving target and recreating a Docker container for each iteration would not be feasible.
Progress
The following steps need to be taken to complete the roadmap item:
Provide a utility that takes a ProcessNode and will relaunch it, while automatically setting up and configuring any needed Computer and Code instances as much as possible.
The text was updated successfully, but these errors were encountered:
Motivation
A cornerstone of AiiDA's design is the provenance graph. Its purpose is to improve the reproducibility of computational data. At a very minimum, the provenance graph should allow a user to retrace the origins of a particular piece of data stored within it. However, to make it truly reproducible, AiiDA should enable the user to actually relaunch a previously completed workflow or calculation to reproduce its outputs. The former goal has been achieved, but the latter is still not trivial.
Desired Outcome
The roadmap item can be considered complete if the following is possible:
relaunch_completed_process
is a utility function that would take care of performing the required setup as much as possible, such as setting up and configuring any computers and codes.Impact
The potential impact of this functionality is significant, although it is slightly attentuated since it is not realistic that it will be pragmatic for all projects run with AiiDA. For projects that can fulfill the requirements though, the reproducibility of the produced data should be close to 100% which is something that hasn't yet been accomplished in computational science and would therefore be a powerful demonstrator.
Complexity
The problem can be decomposed in two subproblems:
The first problem was essentially already solved by AiiDA's provenance graph, although it was incomplete for the metadata inputs. This has since been addressed in
aiida-core
and should be released with the next feature releasev2.3
.The second problem is more challenging. Most completed processes will include at least one
CalcJob
and these have aCode
input. In most cases, this is an instance ofInstalledCode
which represents an executable on a remote computing resource which is configured as aComputer
node in the provenance graph. The problem is that theComputer
that was used for the original calculation job is personal to the user that launched it and most likely the user wanting to reproduce the calculation doesn't have access to the same computer. Therefore the first challenge is to replace the original computer with one that the relaunching user has access to.But even then, the original
InstalledCode
input only records the filepath to the executable on the remote computer. It is unlikely that the computer on which the job is to be relaunched has the code in the exact same path. Currently, the user will therefore manually have to create anInstalledCode
node to replace the original input. This problem could be significantly simplified if the code would be containerized, for example using Docker. If theInstalledCode
simply refers an executable within a Docker container, it should be transferable on any computing architecture and AiiDA would be able to automatically reconfigure anInstalledCode
on the appropriateComputer
.This is then exactly where the limitation of the entire proposal comes in: the functionality will only be available to processes that use containerized codes for calculation jobs. This puts a burden on users, however, as now before they can run calculation jobs, they will have to create a container first. This will make this approach less suitable for research projects where the remote code is a moving target and recreating a Docker container for each iteration would not be feasible.
Progress
The following steps need to be taken to complete the roadmap item:
ProcessNode.get_builder_restart
fully restores all inputs including metadata inputs aiida-core#5801 and to be released withaiida-core==2.3
ProcessBuilder
from aProcessNode
that perfectly recreates the inputs of the originally completed process: Fixed by Ensure thatProcessNode.get_builder_restart
fully restores all inputs including metadata inputs aiida-core#5801 and to be released withaiida-core==2.3
Code
instances: Proposed implementation in open PR Add support for Docker images to use asCode
forCalcJob
s aiida-core#5841ProcessNode
and will relaunch it, while automatically setting up and configuring any neededComputer
andCode
instances as much as possible.The text was updated successfully, but these errors were encountered: