Add noise model support for Qiskit simulators
antalszava opened this issue · comments
Context
Orquestra provides the option to pass noise model and connectivity information when using Qiskit simulators (see Orquestra workflow example with a noise model).
We would like to allow this option to be available when using the orquestra.qiskit
device by passing a noise_data
dictionary as a keyword argument.
Required entries of the noise_data
dictionary would include:
device_name
: the IBMQ hardware device for which we'd like to obtain the noise model and connectivity data forapi_token
: a valid IBMQ token used while extracting noise model data
For generating workflows, this would include adding a preliminary step that extracts noise model data using the {"file": "qe-qiskit/steps/noise.py", "function": "get_qiskit_noise_model"}
Orquestra provided function.
Draft
The qiskit_noise_models
branch contains a draft version of the described functionality:
- The server-side code is adjusted to parse keyword arguments for a noise model and device connectivity. These data are then used during backend creation.
- The client-side code is changed to allow parsing noise model data and generating workflows include a noise-model extraction step. Further improvements and changes to workflow generation are needed.
Batch execute
It is worth noting the case of workflows with parallel steps when using device.batch_execute
.
When using the device.batch_execute
method, a workflow with multiple parallel steps computing expectation values would be created (e.g., named expval
). If a noise model is defined for the backend to be used, extracting this noise model would mean adding a single step along with batch_size
many steps computing expectation values to the same workflow. Each of the expval
steps would depend on the same noise model artifact of the first step. Therefore, it is worth considering if this could lead to problems with multiple steps attempting to access the same resource.