Error mitigation service for NISQ devices
The error mitigation service can mitigate the impact of errors of noisy measurement results obtained from a quantum computer.
The service enables the generation and management of calibration and mitigation data for multiple QPU providers. Further, it allows users to mitigate their execution results on the basis of freshly generated or already existing mitigation data, speeding up the typical error mitigation process. The error mitigation service currently implements multiple methods, such as Mthree or TPNM for IBMQ and IonQ. Additional mitigation methods and QPU providers can easily be integrated into the service.
Running the Application
Run the App with Docker-Compose
docker-compose up
API Structure
In the following the structure of the error mitigation service API is explained briefly. The full API specification can be found at here when the service is running.http://127.0.0.1:5000/api/swagger-ui
/circuit-generation
Contains encoding and algorithm circuit fragements.
/mitigation
Contains error mitigiation capabilities.
/cm
Endpoint for generating calibration matrices by generating and running calibration circuits on QPUs.
/mm
Endpoint for generating mitigators based on calibration data. These mitigators can then be used to mitigate execution results.
/rem
Endpoint for mitigating results retrieved from circuit executions on NISQ devices.
Developer Guide
Setup (exemplary for ubuntu 18.04):
git clone https://github.com/UST-QuAntiL/quokka.git
cd quokka
git clone https://github.com/UST-QuAntiL/error-mitigation-service.git
cd error-mitigation-service
-
sudo -H pip install virtualenv
(if you don't have virtualenv installed) -
virtualenv venv
(create virtualenv named 'venv') -
source venv/bin/activate
(enter virtualenv; in Windows systems activate might be invenv/Scripts
) -
pip install -r requirements.txt
(install application requirements)
Note: MinIO needs to be running for the error-mitigation-service to work. For setting up MinIO, it is recommended to use the setup included in the docker-compose.yml
file .
Execution:
- Run with:
flask run
- Test with:
flask test
- Coverage with:
coverage run --branch --include 'api/*' -m unittest discover; coverage report