From 2ccc0f03e246237d624f1bc312a0fb0f46ffbce2 Mon Sep 17 00:00:00 2001 From: Daniel Egger Date: Wed, 8 Jan 2020 17:53:34 +0100 Subject: [PATCH 01/28] * Added RFC template. --- rfcs/0000-error-mitigation.md | 61 +++++++++++++++++++++++++++++++++++ rfcs/0000-template.md | 61 +++++++++++++++++++++++++++++++++++ 2 files changed, 122 insertions(+) create mode 100644 rfcs/0000-error-mitigation.md create mode 100644 rfcs/0000-template.md diff --git a/rfcs/0000-error-mitigation.md b/rfcs/0000-error-mitigation.md new file mode 100644 index 000000000000..39d42876d5eb --- /dev/null +++ b/rfcs/0000-error-mitigation.md @@ -0,0 +1,61 @@ +# RFC Title + +| **Status** | **Proposed/Accepted/Deprecated** | +|:------------------|:---------------------------------------------| +| **RFC #** | #### | +| **Authors** | First Author (first.author@ibm.com), ... | +| **Deprecates** | RFC that this RFC deprecates | +| **Submitted** | YYYY-MM-DD | +| **Updated** | YYYY-MM-DD | + +RFC markdown filename should be of the form `####-rfc-title.md`. Where #### will be set as `max(rfc_####) + 1` after the acceptance of the RFC, but before its merger. If the RFC requires supporting files, a folder may be created with the same name as the RFC, `####-rfc-title`, in which the RFC should reside. + +## Summary +One paragraph explanation of the feature. + +## Motivation +- Why are we doing this? +- What will this enable? +- What will be the outcome? +- Who will benefit? + +## User Benefit +- Who are the target users of this work? +- How will users or contributors benefit from the work proposed? + +## Design Proposal +This is the focus of the document. Explain the proposal from the perspective of +educating another user on the proposed features. + +This generally means: +- Introducing new concepts and nomenclature +- Using examples to introduce new features +- Implementation and Migration path with associated concerns +- Communication of features and changes to users + +Focus on giving an overview of impact of the proposed changes to the target audience. + +Factors to consider: +- Performance +- Dependencies +- Maintenance +- Compatibility + +## Detailed Design +Technical reference level design. Elaborate on details such as: +- Implementation procedure + - If spans multiple projects cover these parts individually +- Interaction with other features +- Dissecting corner cases +- Reference definition, eg., formal definitions. + +## Alternative Approaches +Discuss other approaches to solving this problem and why these were not selected. + +## Questions +Open questions for discussion and an opening for feedback. + +## Future Extensions +Consider what extensions might spawn from this RFC. Discuss the roadmap of related projects and how these might interact. This section is also an opening for discussions and a great place to dump ideas. + +If you do not have any future extensions in mind, state that you cannot think of anything. This section should not be left blank. diff --git a/rfcs/0000-template.md b/rfcs/0000-template.md new file mode 100644 index 000000000000..39d42876d5eb --- /dev/null +++ b/rfcs/0000-template.md @@ -0,0 +1,61 @@ +# RFC Title + +| **Status** | **Proposed/Accepted/Deprecated** | +|:------------------|:---------------------------------------------| +| **RFC #** | #### | +| **Authors** | First Author (first.author@ibm.com), ... | +| **Deprecates** | RFC that this RFC deprecates | +| **Submitted** | YYYY-MM-DD | +| **Updated** | YYYY-MM-DD | + +RFC markdown filename should be of the form `####-rfc-title.md`. Where #### will be set as `max(rfc_####) + 1` after the acceptance of the RFC, but before its merger. If the RFC requires supporting files, a folder may be created with the same name as the RFC, `####-rfc-title`, in which the RFC should reside. + +## Summary +One paragraph explanation of the feature. + +## Motivation +- Why are we doing this? +- What will this enable? +- What will be the outcome? +- Who will benefit? + +## User Benefit +- Who are the target users of this work? +- How will users or contributors benefit from the work proposed? + +## Design Proposal +This is the focus of the document. Explain the proposal from the perspective of +educating another user on the proposed features. + +This generally means: +- Introducing new concepts and nomenclature +- Using examples to introduce new features +- Implementation and Migration path with associated concerns +- Communication of features and changes to users + +Focus on giving an overview of impact of the proposed changes to the target audience. + +Factors to consider: +- Performance +- Dependencies +- Maintenance +- Compatibility + +## Detailed Design +Technical reference level design. Elaborate on details such as: +- Implementation procedure + - If spans multiple projects cover these parts individually +- Interaction with other features +- Dissecting corner cases +- Reference definition, eg., formal definitions. + +## Alternative Approaches +Discuss other approaches to solving this problem and why these were not selected. + +## Questions +Open questions for discussion and an opening for feedback. + +## Future Extensions +Consider what extensions might spawn from this RFC. Discuss the roadmap of related projects and how these might interact. This section is also an opening for discussions and a great place to dump ideas. + +If you do not have any future extensions in mind, state that you cannot think of anything. This section should not be left blank. From bd837b67e7cff07bfb44914ba1f49109dc31168a Mon Sep 17 00:00:00 2001 From: eggerdj <38065505+eggerdj@users.noreply.github.com> Date: Wed, 8 Jan 2020 18:47:36 +0100 Subject: [PATCH 02/28] First draft of error mitigation RFC --- rfcs/0000-error-mitigation.md | 77 ++++++++++++++++++++++++++--------- 1 file changed, 57 insertions(+), 20 deletions(-) diff --git a/rfcs/0000-error-mitigation.md b/rfcs/0000-error-mitigation.md index 39d42876d5eb..f62b78526e11 100644 --- a/rfcs/0000-error-mitigation.md +++ b/rfcs/0000-error-mitigation.md @@ -11,37 +11,74 @@ RFC markdown filename should be of the form `####-rfc-title.md`. Where #### will be set as `max(rfc_####) + 1` after the acceptance of the RFC, but before its merger. If the RFC requires supporting files, a folder may be created with the same name as the RFC, `####-rfc-title`, in which the RFC should reside. ## Summary -One paragraph explanation of the feature. +Error mitigation can greatly improve results on noisy quantum hardware. +This is done by running a given quantum circuit several times. +In run i of the circuit the duration of all the gates is stretched by a factor c_i to increase the noise in the gates. +The ideal result is then obtained by extrapolating to the zero-order noise limit. +The purpose of this RFC is to discuss implementations of error mitigation usable in applications. ## Motivation -- Why are we doing this? -- What will this enable? -- What will be the outcome? -- Who will benefit? +Error mitigation allows users to significantly improve their results. +It is expected that partners and members of the IBM Q network will benefit from this by being able to easily improve the quality of their results. ## User Benefit -- Who are the target users of this work? -- How will users or contributors benefit from the work proposed? +The target users of this work are those who run quantum circuits for applications of quantum computing. ## Design Proposal -This is the focus of the document. Explain the proposal from the perspective of -educating another user on the proposed features. +There are several ways to implement error mitigation. -This generally means: -- Introducing new concepts and nomenclature -- Using examples to introduce new features -- Implementation and Migration path with associated concerns -- Communication of features and changes to users +### Simple error mitigation +The simplest way to implement error mitigation is to run the quantum circuit several times. +In each run the entangling two-qubit gate is replaced several entangling gates to have the same effect. +For instance, quantum circuits in which each CNOT is replaced by an odd number of CNOT gates has the same effect. +This has, for example, been implemented in https://arxiv.org/abs/1905.02666. +This approach is also valid for other types of two-qubit gates such as the CZ gate. -Focus on giving an overview of impact of the proposed changes to the target audience. +See https://github.com/Qiskit/qiskit-aqua/pull/683 which aims to implement this error mitigation method. -Factors to consider: -- Performance -- Dependencies -- Maintenance -- Compatibility +The advantages of this method are: +- Simplicity, it is easy to implement and understand. + +This method has several limitations: +- Quantum circuits that are already very deep may not see any gain since replacing each CNOT with three CNOTs may produce in ciquits that result in only noise. +- It does not include single qubit gates. +- The effect stretch factors to chose from are very limited. + +### Backend constrained error mitigation +When implementing error mitigation using stretch factors, as is done in https://arxiv.org/abs/1805.04492, new pulses must be defined and calibrated for the different stretch factors c_i. +The backend could have a set of pre-defined calibrated pulses with different stretch factors. +For instance, following Kandala et al., the backend could store calibrated pulses for c=1 (i.e. the pulses used in regular operations), c=1.1, c=1.25, and c=1.5. +At execute time, the user would specify that he wants to run a quantum circuit using error mitigation. +The pulse scheduler would then create four copies of the quantum circuit, each with a different stretch factor supported by the backend. +Alternatively, the user could elect to use only a subset of the calibrate stretch factors. + +This method has several advantages: +- The user does not need to know much about error mitigation, a simple flag at execute time would most likely suffice. +- This allows error mitigation to be applied on single and two-qubit gates. +- Circuits that have many gates may still benefit from error mitigation as stetch factors such as c=1.1, c=1.25, and c=1.5 do not emphasis the noise as much as replacing each two-qubit gate by three two-qubit gates. +- It is fast in that the user does not need to run many quantum circuits. + +This method has the following disadvantages: +- The user cannot specify his own stretch factors. +- Increases the amount of gates that the backend needs to calibrate. + +### User specified error mitigation +The user specifies which stretch factors to use. +This will require calibration procedures to calibrate the gates for each individual stretch factor before the intended quantum circuit can be run. +This solution may be overly complex as the user has to calibrate himself the stretched gates. +The calibration of stretched gates, could be automated, however this would increase the run time. +Qiskit-ignis would most likely need to be involved ontop of qiskit-aqua and qiskit-terra. + +This methods has the following advantage: +- It is very flexible. + +This method has several disadvantages: +- It requires a lot of knowledge from the user. +- It requires that the user run many jobs. ## Detailed Design +Here we focus on the Backend constrained error mitigation. + Technical reference level design. Elaborate on details such as: - Implementation procedure - If spans multiple projects cover these parts individually From c9c2f68b681d2a881d02d65f8d80bfe5fe973bdb Mon Sep 17 00:00:00 2001 From: eggerdj <38065505+eggerdj@users.noreply.github.com> Date: Thu, 9 Jan 2020 13:22:13 +0100 Subject: [PATCH 03/28] Updated simple error mitigation. --- rfcs/0000-error-mitigation.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/rfcs/0000-error-mitigation.md b/rfcs/0000-error-mitigation.md index f62b78526e11..f1ed05521dab 100644 --- a/rfcs/0000-error-mitigation.md +++ b/rfcs/0000-error-mitigation.md @@ -3,7 +3,7 @@ | **Status** | **Proposed/Accepted/Deprecated** | |:------------------|:---------------------------------------------| | **RFC #** | #### | -| **Authors** | First Author (first.author@ibm.com), ... | +| **Authors** | Daniel Egger (deg@zurich.ibm.com) | | **Deprecates** | RFC that this RFC deprecates | | **Submitted** | YYYY-MM-DD | | **Updated** | YYYY-MM-DD | @@ -14,8 +14,8 @@ RFC markdown filename should be of the form `####-rfc-title.md`. Where #### will Error mitigation can greatly improve results on noisy quantum hardware. This is done by running a given quantum circuit several times. In run i of the circuit the duration of all the gates is stretched by a factor c_i to increase the noise in the gates. -The ideal result is then obtained by extrapolating to the zero-order noise limit. -The purpose of this RFC is to discuss implementations of error mitigation usable in applications. +An improved result is then obtained by extrapolating to the zero-order noise limit c->0. +The purpose of this RFC is to discuss how to implement error mitigation in Qiskit such that it is usable in applications. ## Motivation Error mitigation allows users to significantly improve their results. @@ -29,8 +29,8 @@ There are several ways to implement error mitigation. ### Simple error mitigation The simplest way to implement error mitigation is to run the quantum circuit several times. -In each run the entangling two-qubit gate is replaced several entangling gates to have the same effect. -For instance, quantum circuits in which each CNOT is replaced by an odd number of CNOT gates has the same effect. +In each run the entangling two-qubit gate is replaced several entangling two-qubit gates such that the additional gates have no effect. +For instance, replacing each CNOT gate in a quantum circuit by an odd number of CNOT gates results in the same quantum circuit in the ideal case. This has, for example, been implemented in https://arxiv.org/abs/1905.02666. This approach is also valid for other types of two-qubit gates such as the CZ gate. @@ -40,9 +40,10 @@ The advantages of this method are: - Simplicity, it is easy to implement and understand. This method has several limitations: -- Quantum circuits that are already very deep may not see any gain since replacing each CNOT with three CNOTs may produce in ciquits that result in only noise. -- It does not include single qubit gates. -- The effect stretch factors to chose from are very limited. +- Quantum circuits that are already very deep may not see any gain since replacing each CNOT gate with three CNOT gates may produce circuits which, when executed, result in noise only. +- It does not include single-qubit gates. +- The effective stretch factors to chose from are very limited. +- Some two-qubit gates, such as root-SWAP, need to be applied more than twice to compose to the identity. ### Backend constrained error mitigation When implementing error mitigation using stretch factors, as is done in https://arxiv.org/abs/1805.04492, new pulses must be defined and calibrated for the different stretch factors c_i. From 9686cbf493e65b743d7ab17962725357e4b858db Mon Sep 17 00:00:00 2001 From: eggerdj <38065505+eggerdj@users.noreply.github.com> Date: Thu, 9 Jan 2020 13:30:01 +0100 Subject: [PATCH 04/28] Updated text of more complex schemes --- rfcs/0000-error-mitigation.md | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/rfcs/0000-error-mitigation.md b/rfcs/0000-error-mitigation.md index f1ed05521dab..136cae97fab1 100644 --- a/rfcs/0000-error-mitigation.md +++ b/rfcs/0000-error-mitigation.md @@ -36,10 +36,10 @@ This approach is also valid for other types of two-qubit gates such as the CZ ga See https://github.com/Qiskit/qiskit-aqua/pull/683 which aims to implement this error mitigation method. -The advantages of this method are: +**The advantage of this method is:** - Simplicity, it is easy to implement and understand. -This method has several limitations: +**The limitations of this method are**: - Quantum circuits that are already very deep may not see any gain since replacing each CNOT gate with three CNOT gates may produce circuits which, when executed, result in noise only. - It does not include single-qubit gates. - The effective stretch factors to chose from are very limited. @@ -47,35 +47,37 @@ This method has several limitations: ### Backend constrained error mitigation When implementing error mitigation using stretch factors, as is done in https://arxiv.org/abs/1805.04492, new pulses must be defined and calibrated for the different stretch factors c_i. -The backend could have a set of pre-defined calibrated pulses with different stretch factors. +To implement error mitigation in the manner the backend could have a set of pre-defined calibrated pulses with different stretch factors. For instance, following Kandala et al., the backend could store calibrated pulses for c=1 (i.e. the pulses used in regular operations), c=1.1, c=1.25, and c=1.5. At execute time, the user would specify that he wants to run a quantum circuit using error mitigation. The pulse scheduler would then create four copies of the quantum circuit, each with a different stretch factor supported by the backend. Alternatively, the user could elect to use only a subset of the calibrate stretch factors. -This method has several advantages: +**The advantages of this method are:** - The user does not need to know much about error mitigation, a simple flag at execute time would most likely suffice. -- This allows error mitigation to be applied on single and two-qubit gates. +- This allows error mitigation to be applied on single-qubit and two-qubit gates. - Circuits that have many gates may still benefit from error mitigation as stetch factors such as c=1.1, c=1.25, and c=1.5 do not emphasis the noise as much as replacing each two-qubit gate by three two-qubit gates. - It is fast in that the user does not need to run many quantum circuits. -This method has the following disadvantages: +**The limitations of this method are**: - The user cannot specify his own stretch factors. -- Increases the amount of gates that the backend needs to calibrate. +- It increases the amount of gates that the backend needs to calibrate. ### User specified error mitigation -The user specifies which stretch factors to use. -This will require calibration procedures to calibrate the gates for each individual stretch factor before the intended quantum circuit can be run. +In a more complex implementation the user specifies which stretch factors to use. +This will, thereofre, require the user to run calibration procedures to calibrate the gates for each individual stretch factor before the intended quantum circuit can be run with error mitigation. This solution may be overly complex as the user has to calibrate himself the stretched gates. -The calibration of stretched gates, could be automated, however this would increase the run time. +The calibration of stretched gates, could be automated to simplify the task for the user, but this would not decrease the run time. Qiskit-ignis would most likely need to be involved ontop of qiskit-aqua and qiskit-terra. -This methods has the following advantage: +**The advantages of this method are:** - It is very flexible. +- This allows error mitigation to be applied on single-qubit and two-qubit gates. +- The stretch factors may be chosen as a function of the depth of the quantum circuit. -This method has several disadvantages: +**The limitations of this method are**: - It requires a lot of knowledge from the user. -- It requires that the user run many jobs. +- It requires that the user run many calibration jobs in addition to his quantum circuit. ## Detailed Design Here we focus on the Backend constrained error mitigation. From 33ab14ae5e8f15f1490c78da0bdfa1b48b2a3ac7 Mon Sep 17 00:00:00 2001 From: eggerdj <38065505+eggerdj@users.noreply.github.com> Date: Thu, 9 Jan 2020 13:50:54 +0100 Subject: [PATCH 05/28] First draft of implementation details --- rfcs/0000-error-mitigation.md | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/rfcs/0000-error-mitigation.md b/rfcs/0000-error-mitigation.md index 136cae97fab1..6cd3783362fc 100644 --- a/rfcs/0000-error-mitigation.md +++ b/rfcs/0000-error-mitigation.md @@ -80,7 +80,26 @@ Qiskit-ignis would most likely need to be involved ontop of qiskit-aqua and qisk - It requires that the user run many calibration jobs in addition to his quantum circuit. ## Detailed Design -Here we focus on the Backend constrained error mitigation. +Here we focus on the implementation details of the Backend constrained error mitigation. +The backend will have a set of calibrated gates with different stretch factors that will be made available to Qiskit through the config file. + +``` + in: config = backend.configuration().to_dict() + in: print(config['stretch_factors']) +out: [1.0, 1.1, 1.25, 1.5] +``` + +To execute a quantum circuit, the user would do +``` + in: execute(cirq, backend, ..., error_mitigation=True) +``` +to use all the stretch factors or +``` + in: execute(cirq, backend, ..., error_mitigation=True, stretch_factors=[1.0, 1.25, 1.5]) +``` +to use only a subset of the stretch factors. +The changes needed in Qiskit to implement error mitigation would require a pre-prossessing step in assemble to convert the quantum circuit (or list of quantum circuits) into a list of schedules, using the scheduler, that include the stretched pulses. +For instance Technical reference level design. Elaborate on details such as: - Implementation procedure From 471091df8c56e8906c1554fc5a5c0909381cc640 Mon Sep 17 00:00:00 2001 From: eggerdj <38065505+eggerdj@users.noreply.github.com> Date: Thu, 9 Jan 2020 13:59:38 +0100 Subject: [PATCH 06/28] More implementation details --- rfcs/0000-error-mitigation.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/rfcs/0000-error-mitigation.md b/rfcs/0000-error-mitigation.md index 6cd3783362fc..36988b0073ae 100644 --- a/rfcs/0000-error-mitigation.md +++ b/rfcs/0000-error-mitigation.md @@ -99,7 +99,16 @@ to use all the stretch factors or ``` to use only a subset of the stretch factors. The changes needed in Qiskit to implement error mitigation would require a pre-prossessing step in assemble to convert the quantum circuit (or list of quantum circuits) into a list of schedules, using the scheduler, that include the stretched pulses. -For instance +This also implies that error mitigation will only be a meaningful option for quantum circuits and not for schedules. +For instance, following code would be required in `assemble` +``` +if error_mitigation and all(isinstance(exp, QuantumCircuit) for exp in experiments): + error_mitigation_schedules = schedule_circuit_error_mitigation(experiments, schedul_config, method) + + return assemble_schedules(schedules=error_mitigation_schedules, qobj_id=qobj_id, + qobj_header=qobj_header, run_config=run_config) +``` +The parameters needed for the error mitigation would then be included in the `schedule_config`. Technical reference level design. Elaborate on details such as: - Implementation procedure From 0d247ff5148d807475d4541faa86b6f9bec002b8 Mon Sep 17 00:00:00 2001 From: eggerdj <38065505+eggerdj@users.noreply.github.com> Date: Thu, 9 Jan 2020 14:59:37 +0100 Subject: [PATCH 07/28] Tying in command def and scheduling --- rfcs/0000-error-mitigation.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/rfcs/0000-error-mitigation.md b/rfcs/0000-error-mitigation.md index 36988b0073ae..7044d630eb74 100644 --- a/rfcs/0000-error-mitigation.md +++ b/rfcs/0000-error-mitigation.md @@ -108,7 +108,20 @@ if error_mitigation and all(isinstance(exp, QuantumCircuit) for exp in experimen return assemble_schedules(schedules=error_mitigation_schedules, qobj_id=qobj_id, qobj_header=qobj_header, run_config=run_config) ``` -The parameters needed for the error mitigation would then be included in the `schedule_config`. +The parameters needed for the error mitigation are included in the `schedule_config`. +The function `schedule_circuit_error_mitigation` creates, for each quantum circuit in `experiments`, several schedules corresponding to different stretch factors. +The function +``` +translate_gates_to_pulse_defs(circuit: QuantumCircuit, + schedule_config: ScheduleConfig) -> List[CircuitPulseDef] +``` +in `scheduler.methods.basic.py` would be sensitive to a parameter in `schedule_config` which defines the stretch factor to use. +This method currently uses the `CmdDef` to relate gates to pulses. +Therefore, the pulses in the `CmdDef` should contain information on the stretch factor they correspond to. +Consider, for example, a CNOT gate +``` +Command(name='cx', qubits=[0, 1], sequence=[PulseQobjInstruction(ch='d0', name='fc', phase=1.5707963267948966, t0=0), PulseQobjInstruction(ch='u1', name='fc', phase=1.5707963267948966, t0=0), PulseQobjInstruction(ch='d0', name='Ym_d0_4b7a', t0=0), PulseQobjInstruction(ch='d1', name='X90p_d1_cfee', t0=0), PulseQobjInstruction(ch='d1', name='CR90p_d1_4334', t0=160), PulseQobjInstruction(ch='u0', name='CR90p_u0_0e7b', t0=160), PulseQobjInstruction(ch='d0', name='Xp_d0_e1b0', t0=672), PulseQobjInstruction(ch='d1', name='CR90m_d1_f19b', t0=832), PulseQobjInstruction(ch='u0', name='CR90m_u0_0cdb', t0=832)]) +``` Technical reference level design. Elaborate on details such as: - Implementation procedure From b2e391292d616a048fa0128d3a2b498c00ab56f8 Mon Sep 17 00:00:00 2001 From: eggerdj <38065505+eggerdj@users.noreply.github.com> Date: Thu, 9 Jan 2020 15:17:01 +0100 Subject: [PATCH 08/28] Implementation details. --- rfcs/0000-error-mitigation.md | 45 ++++++++++++++++++++++++++++------- 1 file changed, 37 insertions(+), 8 deletions(-) diff --git a/rfcs/0000-error-mitigation.md b/rfcs/0000-error-mitigation.md index 7044d630eb74..d25e99c04e45 100644 --- a/rfcs/0000-error-mitigation.md +++ b/rfcs/0000-error-mitigation.md @@ -91,37 +91,66 @@ out: [1.0, 1.1, 1.25, 1.5] To execute a quantum circuit, the user would do ``` - in: execute(cirq, backend, ..., error_mitigation=True) +execute(cirq, backend, ..., error_mitigation=True) ``` to use all the stretch factors or ``` - in: execute(cirq, backend, ..., error_mitigation=True, stretch_factors=[1.0, 1.25, 1.5]) +execute(cirq, backend, ..., error_mitigation=True, stretch_factors=[1.0, 1.25, 1.5]) ``` to use only a subset of the stretch factors. The changes needed in Qiskit to implement error mitigation would require a pre-prossessing step in assemble to convert the quantum circuit (or list of quantum circuits) into a list of schedules, using the scheduler, that include the stretched pulses. This also implies that error mitigation will only be a meaningful option for quantum circuits and not for schedules. -For instance, following code would be required in `assemble` +For instance, code like the following would be required in `assemble` ``` if error_mitigation and all(isinstance(exp, QuantumCircuit) for exp in experiments): + schedule_config['stretch_factors'] = stretch_factors error_mitigation_schedules = schedule_circuit_error_mitigation(experiments, schedul_config, method) return assemble_schedules(schedules=error_mitigation_schedules, qobj_id=qobj_id, qobj_header=qobj_header, run_config=run_config) ``` -The parameters needed for the error mitigation are included in the `schedule_config`. -The function `schedule_circuit_error_mitigation` creates, for each quantum circuit in `experiments`, several schedules corresponding to different stretch factors. -The function +The parameters needed for the error mitigation, such as the stretch factors, are included in the `schedule_config`. +The function `schedule_circuit_error_mitigation` creates, for each quantum circuit in `experiments`, several schedules corresponding to different stretch factors in `schedule_config`. +For example +``` +schedules = [] +stretch_factors = schedule_config['stretch_factors'] + +for circuit in experiments: + for c in stretch_factors: + schedule_config['stretch_factor'] = c + schedules.append(schedule_circuit(circuit, schedule_config, method)) +``` +In `schedule_circuit` the translation between gates and pulses is done by the function ``` translate_gates_to_pulse_defs(circuit: QuantumCircuit, schedule_config: ScheduleConfig) -> List[CircuitPulseDef] ``` -in `scheduler.methods.basic.py` would be sensitive to a parameter in `schedule_config` which defines the stretch factor to use. +in `scheduler.methods.basic.py`. This method currently uses the `CmdDef` to relate gates to pulses. Therefore, the pulses in the `CmdDef` should contain information on the stretch factor they correspond to. Consider, for example, a CNOT gate ``` -Command(name='cx', qubits=[0, 1], sequence=[PulseQobjInstruction(ch='d0', name='fc', phase=1.5707963267948966, t0=0), PulseQobjInstruction(ch='u1', name='fc', phase=1.5707963267948966, t0=0), PulseQobjInstruction(ch='d0', name='Ym_d0_4b7a', t0=0), PulseQobjInstruction(ch='d1', name='X90p_d1_cfee', t0=0), PulseQobjInstruction(ch='d1', name='CR90p_d1_4334', t0=160), PulseQobjInstruction(ch='u0', name='CR90p_u0_0e7b', t0=160), PulseQobjInstruction(ch='d0', name='Xp_d0_e1b0', t0=672), PulseQobjInstruction(ch='d1', name='CR90m_d1_f19b', t0=832), PulseQobjInstruction(ch='u0', name='CR90m_u0_0cdb', t0=832)]) +Command(name='cx', qubits=[0, 1], sequence=[ + PulseQobjInstruction(ch='d0', name='fc', phase=1.5707963267948966, t0=0), + PulseQobjInstruction(ch='u1', name='fc', phase=1.5707963267948966, t0=0), + PulseQobjInstruction(ch='d0', name='Ym_d0_4b7a', t0=0), + PulseQobjInstruction(ch='d1', name='X90p_d1_cfee', t0=0), + PulseQobjInstruction(ch='d1', name='CR90p_d1_4334', t0=160), + PulseQobjInstruction(ch='u0', name='CR90p_u0_0e7b', t0=160), + PulseQobjInstruction(ch='d0', name='Xp_d0_e1b0', t0=672), + PulseQobjInstruction(ch='d1', name='CR90m_d1_f19b', t0=832), + PulseQobjInstruction(ch='u0', name='CR90m_u0_0cdb', t0=832) +]) +``` +The definition of this gate could be extended to +``` +Command(name='cx', qubits=[0, 1], stretch_factor=1.1, sequence=[ + PulseQobjInstruction(ch='d0', name='fc', phase=1.5707963267948966, t0=0), + ... +]) ``` +to include information on the stretch factor which can be used by `translate_gates_to_pulse_defs` to select the gates with a stretch factor corresponding to `schedule_config['stretch_factor']` (this is a float and not a list). Technical reference level design. Elaborate on details such as: - Implementation procedure From 63f5ccef2a3549e4ced4fe6b47df0dbf60b16c7a Mon Sep 17 00:00:00 2001 From: eggerdj <38065505+eggerdj@users.noreply.github.com> Date: Thu, 9 Jan 2020 15:27:53 +0100 Subject: [PATCH 09/28] First draft complete. --- rfcs/0000-error-mitigation.md | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/rfcs/0000-error-mitigation.md b/rfcs/0000-error-mitigation.md index d25e99c04e45..521fcd94a15e 100644 --- a/rfcs/0000-error-mitigation.md +++ b/rfcs/0000-error-mitigation.md @@ -126,7 +126,7 @@ In `schedule_circuit` the translation between gates and pulses is done by the fu translate_gates_to_pulse_defs(circuit: QuantumCircuit, schedule_config: ScheduleConfig) -> List[CircuitPulseDef] ``` -in `scheduler.methods.basic.py`. +located in `scheduler.methods.basic.py`. This method currently uses the `CmdDef` to relate gates to pulses. Therefore, the pulses in the `CmdDef` should contain information on the stretch factor they correspond to. Consider, for example, a CNOT gate @@ -151,21 +151,16 @@ Command(name='cx', qubits=[0, 1], stretch_factor=1.1, sequence=[ ]) ``` to include information on the stretch factor which can be used by `translate_gates_to_pulse_defs` to select the gates with a stretch factor corresponding to `schedule_config['stretch_factor']` (this is a float and not a list). +This would then allow the creation of schedules for error mitigation that can be assembled using `assemble_schedule` and run on the backend. -Technical reference level design. Elaborate on details such as: -- Implementation procedure - - If spans multiple projects cover these parts individually -- Interaction with other features -- Dissecting corner cases -- Reference definition, eg., formal definitions. +Here are some additional considerations: +- Currently, the name of a scheduled circuit is the same as the circuit. We will also need to distinguish the schedules with different stretch factors, for instance, by including the stretch factor in the name of the circuit. E.g. `sched = Schedule(name=circuit.name + 'c=%d'.format(schedule_config['stretch_factor']))`. ## Alternative Approaches -Discuss other approaches to solving this problem and why these were not selected. +See section Simple error mitigation and section User specified error mitigation. ## Questions -Open questions for discussion and an opening for feedback. +- The Backend constrained error mitigation requires extra effort from the backend to calibrate gates with different stretch factors. We need to check that the resulting overhead is acceptable. ## Future Extensions -Consider what extensions might spawn from this RFC. Discuss the roadmap of related projects and how these might interact. This section is also an opening for discussions and a great place to dump ideas. - -If you do not have any future extensions in mind, state that you cannot think of anything. This section should not be left blank. +See section User specified error mitigation. From cd0275dc5031ed6e783e736ce15187a74b77dfd7 Mon Sep 17 00:00:00 2001 From: eggerdj <38065505+eggerdj@users.noreply.github.com> Date: Thu, 9 Jan 2020 15:34:24 +0100 Subject: [PATCH 10/28] Fixed typo --- rfcs/0000-error-mitigation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/0000-error-mitigation.md b/rfcs/0000-error-mitigation.md index 521fcd94a15e..07c8eada0cb0 100644 --- a/rfcs/0000-error-mitigation.md +++ b/rfcs/0000-error-mitigation.md @@ -65,7 +65,7 @@ Alternatively, the user could elect to use only a subset of the calibrate stretc ### User specified error mitigation In a more complex implementation the user specifies which stretch factors to use. -This will, thereofre, require the user to run calibration procedures to calibrate the gates for each individual stretch factor before the intended quantum circuit can be run with error mitigation. +This will, therefore, require the user to run calibration procedures to calibrate the gates for each individual stretch factor before the intended quantum circuit can be run with error mitigation. This solution may be overly complex as the user has to calibrate himself the stretched gates. The calibration of stretched gates, could be automated to simplify the task for the user, but this would not decrease the run time. Qiskit-ignis would most likely need to be involved ontop of qiskit-aqua and qiskit-terra. From d027319b8bab433959f7b851ae5a81c66252dfe7 Mon Sep 17 00:00:00 2001 From: eggerdj <38065505+eggerdj@users.noreply.github.com> Date: Fri, 10 Jan 2020 10:14:31 +0100 Subject: [PATCH 11/28] Apply suggestions from code review printing config --- rfcs/0000-error-mitigation.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rfcs/0000-error-mitigation.md b/rfcs/0000-error-mitigation.md index 07c8eada0cb0..fe42f3b09ea6 100644 --- a/rfcs/0000-error-mitigation.md +++ b/rfcs/0000-error-mitigation.md @@ -84,8 +84,8 @@ Here we focus on the implementation details of the Backend constrained error mit The backend will have a set of calibrated gates with different stretch factors that will be made available to Qiskit through the config file. ``` - in: config = backend.configuration().to_dict() - in: print(config['stretch_factors']) + in: config = backend.configuration() + in: print(config.stretch_factors) out: [1.0, 1.1, 1.25, 1.5] ``` From cfa059f8fcce6edc5b9e05abe2f4a78f0712490f Mon Sep 17 00:00:00 2001 From: eggerdj <38065505+eggerdj@users.noreply.github.com> Date: Fri, 10 Jan 2020 10:24:03 +0100 Subject: [PATCH 12/28] Update rfcs/0000-error-mitigation.md Schedule has a method arg. Co-Authored-By: Lauren Capelluto --- rfcs/0000-error-mitigation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/0000-error-mitigation.md b/rfcs/0000-error-mitigation.md index fe42f3b09ea6..15a41241bd6d 100644 --- a/rfcs/0000-error-mitigation.md +++ b/rfcs/0000-error-mitigation.md @@ -104,7 +104,7 @@ For instance, code like the following would be required in `assemble` ``` if error_mitigation and all(isinstance(exp, QuantumCircuit) for exp in experiments): schedule_config['stretch_factors'] = stretch_factors - error_mitigation_schedules = schedule_circuit_error_mitigation(experiments, schedul_config, method) + error_mitigation_schedules = schedule(experiments, schedule_config, method='stretch_factor_error_mitigation') return assemble_schedules(schedules=error_mitigation_schedules, qobj_id=qobj_id, qobj_header=qobj_header, run_config=run_config) From 3b3b0bef692bd7f701964413af29cf5af2d4441d Mon Sep 17 00:00:00 2001 From: eggerdj <38065505+eggerdj@users.noreply.github.com> Date: Fri, 10 Jan 2020 11:08:42 +0100 Subject: [PATCH 13/28] Apply suggestions from code review Made `error_mitigation` in execute a string. --- rfcs/0000-error-mitigation.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/rfcs/0000-error-mitigation.md b/rfcs/0000-error-mitigation.md index 15a41241bd6d..cf98e7205e0e 100644 --- a/rfcs/0000-error-mitigation.md +++ b/rfcs/0000-error-mitigation.md @@ -91,13 +91,15 @@ out: [1.0, 1.1, 1.25, 1.5] To execute a quantum circuit, the user would do ``` -execute(cirq, backend, ..., error_mitigation=True) +execute(cirq, backend, ..., error_mitigation='richardson') ``` to use all the stretch factors or ``` -execute(cirq, backend, ..., error_mitigation=True, stretch_factors=[1.0, 1.25, 1.5]) +execute(cirq, backend, ..., error_mitigation='richardson', stretch_factors=[1.0, 1.25, 1.5]) ``` to use only a subset of the stretch factors. +Here, `error_mitigation` specifies the error mitigation method to use. +This value would be default be `None` when error mitigation is not used. The changes needed in Qiskit to implement error mitigation would require a pre-prossessing step in assemble to convert the quantum circuit (or list of quantum circuits) into a list of schedules, using the scheduler, that include the stretched pulses. This also implies that error mitigation will only be a meaningful option for quantum circuits and not for schedules. For instance, code like the following would be required in `assemble` From f22f36380bbd3b4eb62f9a4ebc75e65afda3ced2 Mon Sep 17 00:00:00 2001 From: eggerdj <38065505+eggerdj@users.noreply.github.com> Date: Mon, 13 Jan 2020 14:03:27 +0100 Subject: [PATCH 14/28] Apply suggestions from code review Adding changes based on Ali's comments. --- rfcs/0000-error-mitigation.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/rfcs/0000-error-mitigation.md b/rfcs/0000-error-mitigation.md index cf98e7205e0e..f201fe060071 100644 --- a/rfcs/0000-error-mitigation.md +++ b/rfcs/0000-error-mitigation.md @@ -82,12 +82,16 @@ Qiskit-ignis would most likely need to be involved ontop of qiskit-aqua and qisk ## Detailed Design Here we focus on the implementation details of the Backend constrained error mitigation. The backend will have a set of calibrated gates with different stretch factors that will be made available to Qiskit through the config file. +For example, a backend that calibrated its default set of gates with four different stretch factors would have ``` in: config = backend.configuration() in: print(config.stretch_factors) out: [1.0, 1.1, 1.25, 1.5] ``` +A backend may implement as many stretch factors as is deemed reasonable by those who maintain the backend. +A backend may also have the choice to not implement error mitigation at all. +The `gateconfig` schema (see `qiskit/schemas/backend_configuration_schema.json`) will be updated to support the stretch factor as follows To execute a quantum circuit, the user would do ``` From d7c707601645094e5cb6b36b00daa7931047ac33 Mon Sep 17 00:00:00 2001 From: Daniel Egger Date: Mon, 13 Jan 2020 14:10:30 +0100 Subject: [PATCH 15/28] * Added example of how to extend the gateconfig schema. --- rfcs/0000-error-mitigation.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/rfcs/0000-error-mitigation.md b/rfcs/0000-error-mitigation.md index f201fe060071..3f9e18447457 100644 --- a/rfcs/0000-error-mitigation.md +++ b/rfcs/0000-error-mitigation.md @@ -92,6 +92,19 @@ out: [1.0, 1.1, 1.25, 1.5] A backend may implement as many stretch factors as is deemed reasonable by those who maintain the backend. A backend may also have the choice to not implement error mitigation at all. The `gateconfig` schema (see `qiskit/schemas/backend_configuration_schema.json`) will be updated to support the stretch factor as follows +``` +"gateconfig": { + "type": "object", + "required": ["name", "parameters", "qasm_def"], + "properties": { + ... + "stretch_factor": { + "type": "string" + "description": "The stretch factor of the gate for error mitigation (if supported)." + } + } +} +``` To execute a quantum circuit, the user would do ``` From dcb24f6035a8ae08708da9086efa42c414c38858 Mon Sep 17 00:00:00 2001 From: eggerdj <38065505+eggerdj@users.noreply.github.com> Date: Tue, 21 Jan 2020 17:36:06 +0100 Subject: [PATCH 16/28] Update rfcs/0000-error-mitigation.md Co-Authored-By: Ali Javadi-Abhari --- rfcs/0000-error-mitigation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/0000-error-mitigation.md b/rfcs/0000-error-mitigation.md index 3f9e18447457..da36235c5f1d 100644 --- a/rfcs/0000-error-mitigation.md +++ b/rfcs/0000-error-mitigation.md @@ -112,7 +112,7 @@ execute(cirq, backend, ..., error_mitigation='richardson') ``` to use all the stretch factors or ``` -execute(cirq, backend, ..., error_mitigation='richardson', stretch_factors=[1.0, 1.25, 1.5]) +execute(circ, backend, ..., error_mitigation='richardson', stretch_factors=[1.0, 1.25, 1.5]) ``` to use only a subset of the stretch factors. Here, `error_mitigation` specifies the error mitigation method to use. From 855a3c070a8dea3654d226738d10a2caf2e96d05 Mon Sep 17 00:00:00 2001 From: eggerdj <38065505+eggerdj@users.noreply.github.com> Date: Tue, 21 Jan 2020 17:36:18 +0100 Subject: [PATCH 17/28] Update rfcs/0000-error-mitigation.md Co-Authored-By: Ali Javadi-Abhari --- rfcs/0000-error-mitigation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/0000-error-mitigation.md b/rfcs/0000-error-mitigation.md index da36235c5f1d..742fdb595d47 100644 --- a/rfcs/0000-error-mitigation.md +++ b/rfcs/0000-error-mitigation.md @@ -108,7 +108,7 @@ The `gateconfig` schema (see `qiskit/schemas/backend_configuration_schema.json`) To execute a quantum circuit, the user would do ``` -execute(cirq, backend, ..., error_mitigation='richardson') +execute(circ, backend, ..., error_mitigation='richardson') ``` to use all the stretch factors or ``` From a2b3dd2f00e737e7da4abb86c9b206c7b5cfe817 Mon Sep 17 00:00:00 2001 From: eggerdj <38065505+eggerdj@users.noreply.github.com> Date: Tue, 21 Jan 2020 17:54:59 +0100 Subject: [PATCH 18/28] Started to describe the qobj --- rfcs/0000-error-mitigation.md | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/rfcs/0000-error-mitigation.md b/rfcs/0000-error-mitigation.md index 742fdb595d47..4f06d5f898ad 100644 --- a/rfcs/0000-error-mitigation.md +++ b/rfcs/0000-error-mitigation.md @@ -117,16 +117,33 @@ execute(circ, backend, ..., error_mitigation='richardson', stretch_factors=[1.0, to use only a subset of the stretch factors. Here, `error_mitigation` specifies the error mitigation method to use. This value would be default be `None` when error mitigation is not used. -The changes needed in Qiskit to implement error mitigation would require a pre-prossessing step in assemble to convert the quantum circuit (or list of quantum circuits) into a list of schedules, using the scheduler, that include the stretched pulses. +The changes needed in Qiskit to implement error mitigation would require changes in the `assemble` function. +`assemble` would detect that the user requires error mitigation and replace each circuit by several circuits, one for each stretch factor. +The `experiments` in the resulting `qobj` would have an entry in the header that specifies the stretch factor +``` +print(qobj.experiments[0]) +{ + 'config': {...}, + 'header': {'name': 'circuitA_ef01a', 'stretch_factor': 1.0, ...}, + 'instructions': {...} +} + +print(qobj.experiments[1]) +{ + 'config': {...}, + 'header': {'name': 'circuitA_ef01b', 'stretch_factor': 1.1, ...}, + 'instructions': {...} +} +``` + +to replace each quantum circuit into a list of quantum circuits. This also implies that error mitigation will only be a meaningful option for quantum circuits and not for schedules. For instance, code like the following would be required in `assemble` ``` if error_mitigation and all(isinstance(exp, QuantumCircuit) for exp in experiments): schedule_config['stretch_factors'] = stretch_factors - error_mitigation_schedules = schedule(experiments, schedule_config, method='stretch_factor_error_mitigation') - - return assemble_schedules(schedules=error_mitigation_schedules, qobj_id=qobj_id, - qobj_header=qobj_header, run_config=run_config) + + TODO ``` The parameters needed for the error mitigation, such as the stretch factors, are included in the `schedule_config`. The function `schedule_circuit_error_mitigation` creates, for each quantum circuit in `experiments`, several schedules corresponding to different stretch factors in `schedule_config`. From ab9e93607c141f8adf3f0046ea1663538bb73f8a Mon Sep 17 00:00:00 2001 From: eggerdj <38065505+eggerdj@users.noreply.github.com> Date: Tue, 21 Jan 2020 17:59:19 +0100 Subject: [PATCH 19/28] Qobj and removed scheduler --- rfcs/0000-error-mitigation.md | 66 ++++++++++------------------------- 1 file changed, 18 insertions(+), 48 deletions(-) diff --git a/rfcs/0000-error-mitigation.md b/rfcs/0000-error-mitigation.md index 4f06d5f898ad..b468df5fb076 100644 --- a/rfcs/0000-error-mitigation.md +++ b/rfcs/0000-error-mitigation.md @@ -119,26 +119,38 @@ Here, `error_mitigation` specifies the error mitigation method to use. This value would be default be `None` when error mitigation is not used. The changes needed in Qiskit to implement error mitigation would require changes in the `assemble` function. `assemble` would detect that the user requires error mitigation and replace each circuit by several circuits, one for each stretch factor. -The `experiments` in the resulting `qobj` would have an entry in the header that specifies the stretch factor +The `experiments` in the resulting `qobj` would have an entry in the header that specifies the stretch factor. +For example, the `qobj` for two circuits (`circA` and `circB`) to be run with error mitigation with three stretch factors would look like ``` print(qobj.experiments[0]) { 'config': {...}, - 'header': {'name': 'circuitA_ef01a', 'stretch_factor': 1.0, ...}, + 'header': {'name': 'circA_ef01a', 'stretch_factor': 1.0, ...}, 'instructions': {...} } print(qobj.experiments[1]) { 'config': {...}, - 'header': {'name': 'circuitA_ef01b', 'stretch_factor': 1.1, ...}, + 'header': {'name': 'circA_ef01b', 'stretch_factor': 1.1, ...}, + 'instructions': {...} +} +print(qobj.experiments[3]) +{ + 'config': {...}, + 'header': {'name': 'circB_ec01a', 'stretch_factor': 1.0, ...}, 'instructions': {...} } -``` -to replace each quantum circuit into a list of quantum circuits. +print(qobj.experiments[4]) +{ + 'config': {...}, + 'header': {'name': 'circB_ec01b', 'stretch_factor': 1.1, ...}, + 'instructions': {...} +} +``` This also implies that error mitigation will only be a meaningful option for quantum circuits and not for schedules. -For instance, code like the following would be required in `assemble` +Therefore, code like the following would be required in `assemble` ``` if error_mitigation and all(isinstance(exp, QuantumCircuit) for exp in experiments): schedule_config['stretch_factors'] = stretch_factors @@ -146,48 +158,6 @@ if error_mitigation and all(isinstance(exp, QuantumCircuit) for exp in experimen TODO ``` The parameters needed for the error mitigation, such as the stretch factors, are included in the `schedule_config`. -The function `schedule_circuit_error_mitigation` creates, for each quantum circuit in `experiments`, several schedules corresponding to different stretch factors in `schedule_config`. -For example -``` -schedules = [] -stretch_factors = schedule_config['stretch_factors'] - -for circuit in experiments: - for c in stretch_factors: - schedule_config['stretch_factor'] = c - schedules.append(schedule_circuit(circuit, schedule_config, method)) -``` -In `schedule_circuit` the translation between gates and pulses is done by the function -``` -translate_gates_to_pulse_defs(circuit: QuantumCircuit, - schedule_config: ScheduleConfig) -> List[CircuitPulseDef] -``` -located in `scheduler.methods.basic.py`. -This method currently uses the `CmdDef` to relate gates to pulses. -Therefore, the pulses in the `CmdDef` should contain information on the stretch factor they correspond to. -Consider, for example, a CNOT gate -``` -Command(name='cx', qubits=[0, 1], sequence=[ - PulseQobjInstruction(ch='d0', name='fc', phase=1.5707963267948966, t0=0), - PulseQobjInstruction(ch='u1', name='fc', phase=1.5707963267948966, t0=0), - PulseQobjInstruction(ch='d0', name='Ym_d0_4b7a', t0=0), - PulseQobjInstruction(ch='d1', name='X90p_d1_cfee', t0=0), - PulseQobjInstruction(ch='d1', name='CR90p_d1_4334', t0=160), - PulseQobjInstruction(ch='u0', name='CR90p_u0_0e7b', t0=160), - PulseQobjInstruction(ch='d0', name='Xp_d0_e1b0', t0=672), - PulseQobjInstruction(ch='d1', name='CR90m_d1_f19b', t0=832), - PulseQobjInstruction(ch='u0', name='CR90m_u0_0cdb', t0=832) -]) -``` -The definition of this gate could be extended to -``` -Command(name='cx', qubits=[0, 1], stretch_factor=1.1, sequence=[ - PulseQobjInstruction(ch='d0', name='fc', phase=1.5707963267948966, t0=0), - ... -]) -``` -to include information on the stretch factor which can be used by `translate_gates_to_pulse_defs` to select the gates with a stretch factor corresponding to `schedule_config['stretch_factor']` (this is a float and not a list). -This would then allow the creation of schedules for error mitigation that can be assembled using `assemble_schedule` and run on the backend. Here are some additional considerations: - Currently, the name of a scheduled circuit is the same as the circuit. We will also need to distinguish the schedules with different stretch factors, for instance, by including the stretch factor in the name of the circuit. E.g. `sched = Schedule(name=circuit.name + 'c=%d'.format(schedule_config['stretch_factor']))`. From 743ea2e7bd4a0a2befefce9c6958aca633722760 Mon Sep 17 00:00:00 2001 From: eggerdj <38065505+eggerdj@users.noreply.github.com> Date: Tue, 21 Jan 2020 18:28:13 +0100 Subject: [PATCH 20/28] Outlined changes needed in assemble_circuits --- rfcs/0000-error-mitigation.md | 43 +++++++++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/rfcs/0000-error-mitigation.md b/rfcs/0000-error-mitigation.md index b468df5fb076..7dbf86f9c61d 100644 --- a/rfcs/0000-error-mitigation.md +++ b/rfcs/0000-error-mitigation.md @@ -125,42 +125,65 @@ For example, the `qobj` for two circuits (`circA` and `circB`) to be run with er print(qobj.experiments[0]) { 'config': {...}, - 'header': {'name': 'circA_ef01a', 'stretch_factor': 1.0, ...}, + 'header': {'name': 'circA_ef01a', 'stretch_factor': '1.0', ...}, 'instructions': {...} } print(qobj.experiments[1]) { 'config': {...}, - 'header': {'name': 'circA_ef01b', 'stretch_factor': 1.1, ...}, + 'header': {'name': 'circA_ef01b', 'stretch_factor': '1.1', ...}, 'instructions': {...} } print(qobj.experiments[3]) { 'config': {...}, - 'header': {'name': 'circB_ec01a', 'stretch_factor': 1.0, ...}, + 'header': {'name': 'circB_ec01a', 'stretch_factor': '1.0', ...}, 'instructions': {...} } print(qobj.experiments[4]) { 'config': {...}, - 'header': {'name': 'circB_ec01b', 'stretch_factor': 1.1, ...}, + 'header': {'name': 'circB_ec01b', 'stretch_factor': '1.1', ...}, 'instructions': {...} } ``` -This also implies that error mitigation will only be a meaningful option for quantum circuits and not for schedules. -Therefore, code like the following would be required in `assemble` +Here, the instructions for experiments 0, 1, and 2 are identical since they correspond to `circA`. +The instructions for experiments 3, 4, and 5, are also identical since they correspond to `circB`. +Therefore, the function `assemble_circuits`, called by assemble, will be modified. +Currently, `assemble_circuits` contains a loop over the provided circuits: ``` -if error_mitigation and all(isinstance(exp, QuantumCircuit) for exp in experiments): - schedule_config['stretch_factors'] = stretch_factors - - TODO +for circuit in circuits: + ... + + experiments.append(QasmQobjExperiment(instructions=instructions, header=header, + config=config)) +``` +We could modify this loop to be sensitive to error mitigation +``` +for circuit in circuits: + ... + + if error_mitigation == 'richardson': + for c in stretch_factors: + header = create_error_mitigation_header(stretch_factor=c, ...) + + experiments.append(QasmQobjExperiment(instructions=instructions, header=header, + config=config)) + else: + experiments.append(QasmQobjExperiment(instructions=instructions, header=header, + config=config)) ``` + The parameters needed for the error mitigation, such as the stretch factors, are included in the `schedule_config`. +### Result returned by the backend +TODO + Here are some additional considerations: - Currently, the name of a scheduled circuit is the same as the circuit. We will also need to distinguish the schedules with different stretch factors, for instance, by including the stretch factor in the name of the circuit. E.g. `sched = Schedule(name=circuit.name + 'c=%d'.format(schedule_config['stretch_factor']))`. +- This implementation of error mitigation is only a meaningful option for quantum circuits and not for schedules. ## Alternative Approaches See section Simple error mitigation and section User specified error mitigation. From 1a66f60db140a731fcb4ee410d2b4f24d5486215 Mon Sep 17 00:00:00 2001 From: eggerdj <38065505+eggerdj@users.noreply.github.com> Date: Tue, 21 Jan 2020 18:30:45 +0100 Subject: [PATCH 21/28] Added QobjExperimentHeader --- rfcs/0000-error-mitigation.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/rfcs/0000-error-mitigation.md b/rfcs/0000-error-mitigation.md index 7dbf86f9c61d..4726099bb31a 100644 --- a/rfcs/0000-error-mitigation.md +++ b/rfcs/0000-error-mitigation.md @@ -167,15 +167,16 @@ for circuit in circuits: if error_mitigation == 'richardson': for c in stretch_factors: - header = create_error_mitigation_header(stretch_factor=c, ...) + header = QobjExperimentHeader(..., stretch_factor=c) experiments.append(QasmQobjExperiment(instructions=instructions, header=header, config=config)) else: + header = QobjExperimentHeader(..., stretch_factor=None) experiments.append(QasmQobjExperiment(instructions=instructions, header=header, config=config)) ``` - +This implies, ... The parameters needed for the error mitigation, such as the stretch factors, are included in the `schedule_config`. ### Result returned by the backend From b72efa84f3d2ffc0d6f283142587286b7af8986e Mon Sep 17 00:00:00 2001 From: eggerdj <38065505+eggerdj@users.noreply.github.com> Date: Tue, 21 Jan 2020 20:52:45 +0100 Subject: [PATCH 22/28] Added details on qobj.experiments and backend --- rfcs/0000-error-mitigation.md | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/rfcs/0000-error-mitigation.md b/rfcs/0000-error-mitigation.md index 4726099bb31a..49219695b378 100644 --- a/rfcs/0000-error-mitigation.md +++ b/rfcs/0000-error-mitigation.md @@ -166,18 +166,26 @@ for circuit in circuits: ... if error_mitigation == 'richardson': + config = QasmQobjExperimentConfig(...) + + instructions = [] + # code to create the instructions is unchanged + for c in stretch_factors: header = QobjExperimentHeader(..., stretch_factor=c) experiments.append(QasmQobjExperiment(instructions=instructions, header=header, - config=config)) + config=config)) else: header = QobjExperimentHeader(..., stretch_factor=None) experiments.append(QasmQobjExperiment(instructions=instructions, header=header, config=config)) ``` -This implies, ... -The parameters needed for the error mitigation, such as the stretch factors, are included in the `schedule_config`. +This implies that the header of the `QasmQobjExperiment` will need to be modified to include an attribute, namely the `stretch_factor`. + +### Backend execution +The backend will have to be able to detect that stretch factors are present in the header of the `qobj.experiments`. +This will then signal to the backend what type of gates to use to execute each circuit. ### Result returned by the backend TODO From 50bc38bd29240b6d1e9155a6511756d4659a16c9 Mon Sep 17 00:00:00 2001 From: eggerdj <38065505+eggerdj@users.noreply.github.com> Date: Tue, 21 Jan 2020 21:03:03 +0100 Subject: [PATCH 23/28] Added space for figure --- rfcs/0000-error-mitigation.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/rfcs/0000-error-mitigation.md b/rfcs/0000-error-mitigation.md index 49219695b378..398dce63a300 100644 --- a/rfcs/0000-error-mitigation.md +++ b/rfcs/0000-error-mitigation.md @@ -81,6 +81,10 @@ Qiskit-ignis would most likely need to be involved ontop of qiskit-aqua and qisk ## Detailed Design Here we focus on the implementation details of the Backend constrained error mitigation. +An overview of this method is shown in the figure below. + +![](202001_ErrorMitigation_summary.png) + The backend will have a set of calibrated gates with different stretch factors that will be made available to Qiskit through the config file. For example, a backend that calibrated its default set of gates with four different stretch factors would have From c55fbeac354bf509a480ee9a59e764c387c7aaaf Mon Sep 17 00:00:00 2001 From: Daniel Egger Date: Tue, 21 Jan 2020 21:05:18 +0100 Subject: [PATCH 24/28] Added summary figure. --- rfcs/202001_ErrorMitigation_summary.png | Bin 0 -> 164529 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 rfcs/202001_ErrorMitigation_summary.png diff --git a/rfcs/202001_ErrorMitigation_summary.png b/rfcs/202001_ErrorMitigation_summary.png new file mode 100644 index 0000000000000000000000000000000000000000..44104da51f99fe7b38f4e6d75bd4e8f6307d5744 GIT binary patch literal 164529 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 z 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 Date: Tue, 21 Jan 2020 21:10:39 +0100 Subject: [PATCH 25/28] Qiskit ignis --- rfcs/0000-error-mitigation.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/rfcs/0000-error-mitigation.md b/rfcs/0000-error-mitigation.md index 398dce63a300..0eab467a0dae 100644 --- a/rfcs/0000-error-mitigation.md +++ b/rfcs/0000-error-mitigation.md @@ -192,10 +192,11 @@ The backend will have to be able to detect that stretch factors are present in t This will then signal to the backend what type of gates to use to execute each circuit. ### Result returned by the backend -TODO +The result returned by the backend would contain the results for the circuits executed with different stretch factors. +This result object could then be given to a Richardson error mitigation module in Qiskit Ignis that would perform the extrapolation to the zero-noise limit. +Ideally, this module will give the user some freedom in how this extrapolation is done. Here are some additional considerations: -- Currently, the name of a scheduled circuit is the same as the circuit. We will also need to distinguish the schedules with different stretch factors, for instance, by including the stretch factor in the name of the circuit. E.g. `sched = Schedule(name=circuit.name + 'c=%d'.format(schedule_config['stretch_factor']))`. - This implementation of error mitigation is only a meaningful option for quantum circuits and not for schedules. ## Alternative Approaches From f08999db87a0856cbba05bb0a716a073d2720fbc Mon Sep 17 00:00:00 2001 From: eggerdj <38065505+eggerdj@users.noreply.github.com> Date: Wed, 22 Jan 2020 17:46:13 +0100 Subject: [PATCH 26/28] Changed behaviour of config --- rfcs/0000-error-mitigation.md | 44 ++++++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/rfcs/0000-error-mitigation.md b/rfcs/0000-error-mitigation.md index 0eab467a0dae..df85564d94df 100644 --- a/rfcs/0000-error-mitigation.md +++ b/rfcs/0000-error-mitigation.md @@ -86,16 +86,12 @@ An overview of this method is shown in the figure below. ![](202001_ErrorMitigation_summary.png) The backend will have a set of calibrated gates with different stretch factors that will be made available to Qiskit through the config file. -For example, a backend that calibrated its default set of gates with four different stretch factors would have - -``` - in: config = backend.configuration() - in: print(config.stretch_factors) -out: [1.0, 1.1, 1.25, 1.5] -``` A backend may implement as many stretch factors as is deemed reasonable by those who maintain the backend. A backend may also have the choice to not implement error mitigation at all. -The `gateconfig` schema (see `qiskit/schemas/backend_configuration_schema.json`) will be updated to support the stretch factor as follows +Ideally, each gate on the backend will be available with the same set of stretch factors. +However, this may not always be the case. +For example, a 20 qubit device may only have stretched gates calibrated for qubits zero to four. +Therefore, the stretch factors will be specified in the `gateconfig` schema (see `qiskit/schemas/backend_configuration_schema.json`) which will be updated as follows ``` "gateconfig": { "type": "object", @@ -109,8 +105,38 @@ The `gateconfig` schema (see `qiskit/schemas/backend_configuration_schema.json`) } } ``` +To facilitate the user experience, helper functions that show the available stretch factors, will be created. +First, we define that a given qubit has stretch factor `c` available if all gates that involve this qubit are available with this stretch factor. +The user will thus be able to query the backend to find out which stretch factors are available on a given list of qubits: +``` +def available_stretch_factors(self, qubits: List) -> List: + """Returns a list of stretch factors available for the given qubits.""" +``` +For example to find the stretch factors available to qubits 0, 1, and 3, the user would do `backend.available_stretch_factors([0, 1, 3])`. +Similarly, the user may query the backend to find out which qubits support a given list of stretch factors. +``` +def available_qubits(self, stretch_factors: List) -> List: + """Returns a list of qubits for which the given stretch factors are available.""" +``` +The user may also query the backend to find out how the error mitigation is configured. +``` +def richardson_error_mitigation_config(self) -> List: + """Returns a List of dict showing the available configuration of the richardson error mitigation.""" +``` +The returned list would contain dictionaries of the form +``` +{'stretch_factors': list, 'qubits': list}. +``` +For example, the list +``` +[ + {'stretch_factors': ['1.0', '1.1', '1.25'], 'qubits': [0, 1, 2, 3]}, + {'stretch_factors': ['1.0', '1.1'], 'qubits': [0, 1, 2, 3, 4]} +] +``` +would imply that qubit 4 does not have stretch factor 1.25 available. -To execute a quantum circuit, the user would do +To execute a quantum circuit with error mitigation, the user would do ``` execute(circ, backend, ..., error_mitigation='richardson') ``` From 2d09e1823ff4275b67b90eb95b446441451f0b16 Mon Sep 17 00:00:00 2001 From: eggerdj <38065505+eggerdj@users.noreply.github.com> Date: Wed, 22 Jan 2020 17:53:39 +0100 Subject: [PATCH 27/28] Added validation of stretch factors. --- rfcs/0000-error-mitigation.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/rfcs/0000-error-mitigation.md b/rfcs/0000-error-mitigation.md index df85564d94df..f8185f3a7742 100644 --- a/rfcs/0000-error-mitigation.md +++ b/rfcs/0000-error-mitigation.md @@ -140,11 +140,13 @@ To execute a quantum circuit with error mitigation, the user would do ``` execute(circ, backend, ..., error_mitigation='richardson') ``` -to use all the stretch factors or +to use all the stretch factors available to the qubits in the quantum register of `circ`. +Additionally, the user may specify a subset of stretch factors to use by doing ``` -execute(circ, backend, ..., error_mitigation='richardson', stretch_factors=[1.0, 1.25, 1.5]) +execute(circ, backend, ..., error_mitigation='richardson', stretch_factors=[1.0, 1.25, 1.5]). ``` -to use only a subset of the stretch factors. +This will require a validation step, done in Qiskit Terra and based on the `config`, to check that the specified stretch factors are available for all of the qubits in the quantum register of `circ`. +If this is not the case, an error will be raised. Here, `error_mitigation` specifies the error mitigation method to use. This value would be default be `None` when error mitigation is not used. The changes needed in Qiskit to implement error mitigation would require changes in the `assemble` function. From e761bd3cd6d16166c8e96d747dcc760e1a0b56b1 Mon Sep 17 00:00:00 2001 From: eggerdj <38065505+eggerdj@users.noreply.github.com> Date: Wed, 22 Jan 2020 17:55:05 +0100 Subject: [PATCH 28/28] Typo --- rfcs/0000-error-mitigation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/0000-error-mitigation.md b/rfcs/0000-error-mitigation.md index f8185f3a7742..7ff488f9f1cd 100644 --- a/rfcs/0000-error-mitigation.md +++ b/rfcs/0000-error-mitigation.md @@ -148,7 +148,7 @@ execute(circ, backend, ..., error_mitigation='richardson', stretch_factors=[1.0, This will require a validation step, done in Qiskit Terra and based on the `config`, to check that the specified stretch factors are available for all of the qubits in the quantum register of `circ`. If this is not the case, an error will be raised. Here, `error_mitigation` specifies the error mitigation method to use. -This value would be default be `None` when error mitigation is not used. +This value would by default be `None` when error mitigation is not used. The changes needed in Qiskit to implement error mitigation would require changes in the `assemble` function. `assemble` would detect that the user requires error mitigation and replace each circuit by several circuits, one for each stretch factor. The `experiments` in the resulting `qobj` would have an entry in the header that specifies the stretch factor.