unitaryfund / mitiq

Mitiq is an open source toolkit for implementing error mitigation techniques on most current intermediate-scale quantum computers.
https://mitiq.readthedocs.io
GNU General Public License v3.0
363 stars 160 forks source link

Improve default `ZNESettings` for calibration #1679

Closed natestemen closed 1 year ago

natestemen commented 1 year ago

The ZNESettings object (which specifies a set of experiments to run to find the best ZNE hyperparameters), is currently very barebones. https://github.com/unitaryfund/mitiq/blob/f4045949c28d519c4976b5be8c8ab826888e9b70/mitiq/calibration/settings.py#L240-L286

This has allowed it to be tested in code, but it's not necessarily as useful as it can be. @nathanshammah @willzeng @andreamari do you have comments here on what is/is not important to test here.

andreamari commented 1 year ago

The list of explicit strategies looks great to me. Easy to understand and flexible.

We could do something similar for the benchmark circuits too. For example,

Settings( 
    benchmarks =[
        {
            circuit_type="ghz".
            num_qubits=2, 
            circuit_depth=None, 
        },
       {
            circuit_type="rb".
            num_qubits=2, 
            circuit_depth=7, 
        },
        .....
    ],
    strategies = [{},{}, .....],
)

About your code snippet, I see 2 potential problems: 1) for ghz circuits depth is fixed by num_qubits. Similarly, different benchmarks may need different options. 2) It could be good to test multiple values of depths and multiple values of num_qubits.

Misty-W commented 1 year ago

Clarification: this issue is for determining which combinations of parameters we should use for testing and potentially add more built-in Settings objects to test.