qiskit-ibm-runtime
qiskit-ibm-runtime copied to clipboard
Allow users to (optionally) access more execution metadata from Qiskit Runtime jobs such as the final compiled circuits and measurement counts
What is the expected feature or enhancement? Caveat: I am new to using runtime, so this feature may already exist and I just have not been able to find it. Apologies if that is the case.
In the dashboard and in the runtme job objects, I have not been able to find anything that allows users to query for the measurement counts for the circuit(s) that were executed (for example for an Estimator job), or the device compiled circuit(s). The only data that seems to be available for an Estimator runtime job is the expectation value and variance.
The reason I think this is important is because it can be incredibly useful to examine the exact circuit which was compiled to the backend (for example, how the dynamical decoupling passes are inserted if that is applicable). It is also important to be able to access the direct measurements - for example if you need to do further analysis on the measurements from a previous job that does not only involve computing the expectation value. For example, if the error mitigation procedure ZNE is applied, then it may be of interest to the user to go examine the data further and try different extrapolation algorithms to see how different extrapolations change the results.
Basically, the same information that is retrievable from standard jobs is what I am looking for.
Acceptance criteria Expose compiled circuits and measurement counts to the user for all runtme jobs. Additional metadata such as device calibration information would also be useful.
An example where I think this type of user facing data would be useful is in debugging why different resilience levels are behaving unexpectedly, such with https://github.com/Qiskit/qiskit-ibm-runtime/issues/640
Being able to retrieve the set of compiled circuits is an important thing to have here. As both the size and quality of devices increases, the compilation time of circuits can easily grow into the hours. Without access to the compiled circuits, the user is forced to re-compile within the runtime, wasting hours, if they want to re-execute circuits, and they might not be the same circuits due to the stochastic nature of the compilation process, and noise aware qubit selection process. The alternative is to compile locally, but then users do not get the benefits of things like automatic dynamical decoupling as those only get added via the transpilation process. While this would skip the routing stage, it would still go through several optimization steps that need not be run again.
Primitives now only accept ISA circuits, so users can send the same compiled (transpiled) circuits without having to re-compile.
Additional metadata such as device calibration information would also be useful.
You can get the device calibration data using backend.properties(date)