-
Notifications
You must be signed in to change notification settings - Fork 145
A workflow engine #333
Comments
This would be great if we can alleviate Aqua from these type of transport/payload concerns and have it more widely available. Having a reliable guaranteed operation would allow us to rely on such an engine instead of requiring to have such code in Aqua. I am cross-referencing this PR as more thought for the engine. While we did some level splitting it turns out that it can become less than optimal as the PR outlines. qiskit-community/qiskit-aqua#694 |
Long term it would be nice to be able to somehow record this in the online database too. One very nice feature of IBMQProvider is that it allows you to retrieve results/qobj/properties from past executions and analyze them. If, for some big experiment, your circuits had to be split into 5 jobs, it can be hard to relate those 5 jobs later on. So it would be nice if the |
@ajavadia a few design questions:
Finally, to your point about relating the jobs together, we can use job name to do that. All jobs from the same set of circuits will have the same job name prefix, and the user can use |
Hi @jyu00 1- Yes I think partial Jobs/Results should be supported. Terra recently started to support partial results for cases when only a subset of circuits succeed in a job (Qiskit/qiskit#3217). This would be analogous to that. 2- Hm, yeah I see. But that sort of defeats the purpose here because the point of this is to hide "API details" from a user who doesn't care how jobs are split up, what the limits are, etc. They just want to execute 1000 circuits and look at the result. So how about: when I do 3- I'm good with whatever you decide here. |
Implemented via the PRs mentioned in this issue. |
IBMQ needs a workflow engine to manage the execution and retrieval of jobs.
This would be a higher level construct than
Job
, which is the unit of interaction with the backends (from the API's point of view). But jobs have arbitrary limitations that should be masked from the high-level user. For example each backend places its own limit on the number of experiments contained within a job. So currently you have to manually batch many circuits into some jobs, manually store the jobs into some datastructure, and manually retrieve/post-process the results. If one job fails, it can be difficult to recover the total results without manually resubmitting that job and replacing the entry in the database.The workflow engine automates this process. It can be called a
JobManager
. At a high level, the user specifies which "tasks" they would like to run. Even if a task has a million circuits, the workflow engine will take care of splitting them, farming them out to the backends, reporting on the progress to the user, and joining the reuslts into a single Result for the task.Simple pseudo-code (up for discussion):
The text was updated successfully, but these errors were encountered: