Skip to content

Commit

Permalink
Software update docs (#13)
Browse files Browse the repository at this point in the history
* initial changes to helmi-qiskit page

* modified qiskit-iqm docs

* added cirq-iqm, visualize_qm changes

* removed references to url and token

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* added changes to reflect iqm software update

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* removed codespell pre-commit

* fixed version mismatch

* added changes to faq and limitations pages

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* added changes mentioned in MR

* added better documentation

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* removed reference to SWAP

* added pre-commit changes

* Fix note about gate lengths

---------

Co-authored-by: Srivathsan Srinivasan <srivathsan.srinivasan@vtt.fi>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: JMuff22 <jake.muff@vtt.fi>
  • Loading branch information
4 people authored Dec 17, 2024
1 parent 86b3986 commit 81cda2d
Show file tree
Hide file tree
Showing 10 changed files with 217 additions and 251 deletions.
5 changes: 0 additions & 5 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,6 @@ repos:
- id: trailing-whitespace
- id: mixed-line-ending

- repo: https://github.com/codespell-project/codespell
rev: v2.3.0
hooks:
- id: codespell

- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.6.9
hooks:
Expand Down
72 changes: 44 additions & 28 deletions docs/calibration.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,20 @@
Helmi is continuously calibrated to ensure functionality. The calibration process involves a series of experiments, aimed at fine-tuning the parameters, necessary for controlling and measuring the qubits. In addition to calibration, we run benchmarks to obtain the figures of merit reflecting the current state of the quantum computer.

!!! note

Calibration and benchmarking experiments are interleaved with regular user jobs in Helmi's job queue, as detailed in the [Running on Helmi](running.md) section. The calibration might therefore slightly increase the waiting time in the queue of regular user jobs.

### Calibration sequences

To minimize the impact of calibration on user operations, we execute shorter calibration sequences during the day and a longer calibration run throughout the night.

**Short calibration**:
To minimize the impact of calibration on user operations, we schedule the calibration of Helmi at 2AM, by running a specific sequence of experiments in order. Calibration and benchmarking experiments are interleaved with regular user jobs in Helmi's job queue, as detailed in the [Running on Helmi](running.md) section. The calibration might therefore slightly increase the waiting time in the queue of regular user jobs.

- Every 2 hours from 11 am to 11 pm
- Adjusts qubit drive frequency, drive amplitude and readout threshold
- Measures $T_1$, $T_2$, $T_2^*$ and readout accuracy
**Calibration**:

**Extended calibration**:

- Every day at 4 am
- Every day at 2 am
- Adjusts qubit drive frequency, amplitude fine-tuning and readout threshold
- Recalibrates CZ Gate, Virtual Z rotations and performs randomized benchmarking.
- Measures $T_1$, $T_2$, $T_2^*$, readout accuracy, single- and two-qubit gate fidelities

A calibration sequence produces what is called a `calibration_set`. This is a set of device parameters, which the quantum computer is currently using to execute quantum circuits. It is identified via a `calibration_set_id`, a unique identifier for the specific `calibration_set`. Usually, when submitting quantum circuits, the most up-to-date calibration set is used, however, it is possible to use a specific `calibration_set_id`. This can be useful for testing the degradation of the performance of our quantum computers.

The `calibration set` sometimes contains observations with the suffix `par=d2`. This refers to the distance of the qubit pairs that can run in parallel, which is necessary to avoid neighbouring qubit pairs of the same group.

### Quality metrics set

The benchmarks results are summarized in the *quality metric set* representing the figures of merit and reflecting the latest state of the quantum computer. The calibration metrics can be fetched from Helmi's API by sending HTTP `GET` requests to `/calibration/metrics/latest`. An example script is provided [here](https://github.com/FiQCI/helmi-examples/blob/main/scripts/get_calibration_data.py). Each quality metrics set is identified via a unique ID, with a new ID created after each calibration. Note, that not all metrics are updated after each calibration run. We recommend to save the current calibration set ID together with the job ID to facilitate debugging and analysis. Also note that it can happen that there is a delay of up to 10 minutes between calibrating the device and benchmarking the quality metrics set, causing there to be some delay in presenting the quality metrics data.
Expand Down Expand Up @@ -49,21 +42,44 @@ Here is an example response from Helmi's API for the calibration and quality met

```json
{
"calibration_set_id": "03436204-3588-4567-95ec-5a61acfd227d",
"quality_metric_set_id": "ec1298a0-43ce-43f2-b6d1-10c1fe750786",
"metrics": {
"QB1.fidelity_1qb_gates_averaged": {
"value": "0.9971526901996984",
"unit": "",
"uncertainty": "5.622242981254397e-05",
"timestamp": "2024-03-20T05:05:08.109836"
'calibration_set_id': '15c05aaf-e1d4-4020-85b4-c3f234c41b7b',
'calibration_set_dut_label': 'M127_W49_A02_J11',
'calibration_set_number_of_observations': 166,
'calibration_set_created_timestamp': '2024-11-29 02:55:42.607368+00:00',
'calibration_set_end_timestamp': '2024-11-29 02:55:42.771789+00:00',
'calibration_set_is_invalid': False,
'quality_metric_set_id': '8ce54091-78d9-4823-ae67-7a65b407c221',
'quality_metric_set_dut_label': 'M127_W49_A02_J11',
'quality_metric_set_created_timestamp': '2024-11-29 02:55:42.740569+00:00',
'quality_metric_set_end_timestamp': '2024-11-29 02:55:42.797275+00:00',
'quality_metric_set_is_invalid': False,
'metrics':
{
'measure_ssro_fidelity':
{
'QB1':
{
'value': '0.949',
'unit': '',
'uncertainty': 'None',
'timestamp': '2024-11-29 04:55:42.648725+00:00',
'implementation': 'constant'
},
'QB2':
{
'value': '0.9427499999999999',
'unit': '',
'uncertainty': 'None',
'timestamp': '2024-11-29 04:55:42.648725+00:00',
'implementation': 'constant'
},
"TC-3-5.cz_gate_fidelity": {
"value": "0.9848983187049354",
"unit": "",
"uncertainty": "0.002603321013490276",
"timestamp": "2024-03-20T05:05:08.109836"
'QB3':
{
'value': '0.95125',
'unit': '',
'uncertainty': 'None',
'timestamp': '2024-11-29 04:55:42.648725+00:00',
'implementation': 'constant'
}
}
}
...
```
36 changes: 25 additions & 11 deletions docs/examples/intro-to-helmi-cirq.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,9 @@
"This notebook uses the following requirements. \n",
"\n",
"```text\n",
"cirq-iqm==14.0\n",
"iqm-client==17.5\n",
"cirq-iqm==15.1\n",
"iqm-client==20.5\n",
"networkx\n",
"```"
]
},
Expand All @@ -42,7 +43,7 @@
"source": [
"## Using Helmi with Cirq\n",
"\n",
"First we import [cirq-on-iqm](https://github.com/iqm-finland/cirq-on-iqm) which is needed to run on Helmi with cirq. You can read the user guide [here](https://iqm-finland.github.io/cirq-on-iqm/versions/11.9/user_guide.html)."
"First we import [cirq-on-iqm](https://github.com/iqm-finland/cirq-on-iqm) which is needed to run on Helmi with cirq. You can read the user guide [here](https://iqm-finland.github.io/cirq-on-iqm/user_guide.html)."
]
},
{
Expand Down Expand Up @@ -73,7 +74,17 @@
"metadata": {},
"outputs": [],
"source": [
"sampler = IQMSampler(\"https://qc.vtt.fi/helmi/cocos\")\n",
"import os\n",
"\n",
"sampler = IQMSampler(os.environ[\"HELMI_CORTEX_URL\"])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"device = sampler.device"
]
},
Expand All @@ -90,11 +101,14 @@
"metadata": {},
"outputs": [],
"source": [
"from iqm.iqm_client import CircuitCompilationOptions, HeraldingMode\n",
"\n",
"sampler = IQMSampler(\n",
" \"https://qc.vtt.fi/helmi/cocos\",\n",
" calibration_set_id=\"2318283e-3adf-4a88-a936-a33affde4af7\",\n",
" max_circuit_duration_over_t2=1.0,\n",
" heralding_mode=\"zeros\",\n",
" os.environ[\"HELMI_CORTEX_URL\"],\n",
" calibration_set_id=\"e0cf7953-1eb8-4c71-a262-301380baa2c4\",\n",
" compiler_options=CircuitCompilationOptions(\n",
" max_circuit_duration_over_t2=None, heralding_mode=HeraldingMode.ZEROS\n",
" ),\n",
")"
]
},
Expand Down Expand Up @@ -361,14 +375,14 @@
"- [Long-distance transmon coupler with CZ gate fidelity above 99.8%](https://arxiv.org/pdf/2208.09460.pdf). Paper by IQM describing the superconducting technology behind Helmi. \n",
"- [Helmi press release](https://www.vttresearch.com/en/news-and-ideas/finlands-first-5-qubit-quantum-computer-now-operational). \n",
"- [cirq-on-iqm Github page](https://github.com/iqm-finland/cirq-on-iqm).\n",
"- [cirq-on-iqm documentation](https://iqm-finland.github.io/cirq-on-iqm/). We are running `11.13`.\n",
"- [cirq-on-iqm documentation](https://iqm-finland.github.io/cirq-on-iqm/). We are running `15.2`.\n",
"- [CSC documentation on Helmi](https://docs.csc.fi/computing/quantum-computing/overview/)."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "qas2023",
"display_name": "qc-docs",
"language": "python",
"name": "python3"
},
Expand All @@ -382,7 +396,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.10"
"version": "3.11.10"
},
"orig_nbformat": 4
},
Expand Down
Loading

0 comments on commit 81cda2d

Please sign in to comment.