French
Langues
English
Japanese
German
Korean
Portuguese, Brazilian
French
Shortcuts

Note

Cette page a été générée à partir de tutorials/simulators/2_device_noise_simulation.ipynb.

Exécuter en mode interactif dans le IBM Quantum lab.

Simulations du modèle de bruit du backend réel

Introduction

Ce bloc-notes montre comment utiliser le module Qiskit Aer noise pour générer automatiquement un modèle de bruit basique pour une unité matérielle IBMQ, et utiliser ce modèle pour effectuer des simulations bruitées sur des QuantumCircuits pour étudier les effets des erreurs qui se produisent sur des appareils réels.

Notez que ces modèles automatiques ne sont qu’une approximation des erreurs réelles qui se produisent sur les périphériques réels, en raison du fait qu’ils doivent être construits à partir d’un ensemble limité de paramètres d’entrée liés aux taux d’erreur moyens sur les portes quantiques. L’étude des erreurs quantiques sur les appareils réels est un domaine de recherche actif et nous discutons des outils Qiskit Aer pour configurer des modèles de bruit plus détaillés dans un autre bloc-notes.

[1]:
%matplotlib inline
from qiskit import IBMQ, transpile
from qiskit import QuantumCircuit
from qiskit.providers.aer import AerSimulator
from qiskit.tools.visualization import plot_histogram

Modèle de bruit du backend

Le modèle de bruit de périphérique *Qiskit Aer * génère automatiquement un modèle de bruit simplifié pour un périphérique réel. Ce modèle est généré à l’aide des informations de calibrage rapportées dans BackendProperties d’un système donné et prend en compte

  • La probabilité gate_error de chaque porte de base sur chaque qubit.

  • La valeur gate_length de chaque porte de base sur chaque qubit.

  • Les constantes de temps de relaxation :math:` T_1 , :math: T_2 ` de chaque qubit.

  • The readout error probability of each qubit.

Avatars de backends dans Terra

Nous utiliserons des données de bruit réel pour un appareil Quantum IBM en utilisant les données enregistrées dans Qiskit Terra. Plus précisément, dans ce tutoriel, l’unité est ` ` ibmq_vigo ` `.

[2]:
from qiskit.test.mock import FakeVigo
device_backend = FakeVigo()

Circuit de test pour la comparaison des appareils et des simulations

Now we construct a test circuit to compare the output of the real device with the noisy output simulated on the Qiskit Aer AerSimulator. We will prepare a 3-qubit GHZ state \(\frac{1}{2}(|0,0,0\rangle + |1,1,1\rangle)\) on qubits 0, 1 and 2. Before running with noise or on the device we show the ideal expected output with no noise.

[3]:
# Construct quantum circuit
circ = QuantumCircuit(3, 3)
circ.h(0)
circ.cx(0, 1)
circ.cx(1, 2)
circ.measure([0, 1, 2], [0, 1, 2])

sim_ideal = AerSimulator()

# Execute and get counts
result = sim_ideal.run(transpile(circ, sim_ideal)).result()
counts = result.get_counts(0)
plot_histogram(counts, title='Ideal counts for 3-qubit GHZ state')
[3]:
../../_images/tutorials_simulators_2_device_noise_simulation_6_0.png

Génération d’un simulateur qui imite un ordinateur quantique

Nous utilisons from_backend pour créer un simulateur pour ibmq_vigo:

[4]:
sim_vigo = AerSimulator.from_backend(device_backend)

En stockant les propriétés de l’appareil dans vigo_simulator, nous nous assurons que les portes de base et la carte de couplage correspondantes sont utilisées lors de la compilation des circuits de simulation, de manière à imiter le plus fidèlement les portes qui seront exécutées sur un véritable appareil. De plus, vigo_simulator contient un modèle de bruit approximatif consistant en:

  • ** Erreurs de porte sur un qubit** consistant en une erreur de dépolarisation d’un seul qubit suivie d’une erreur de relaxation thermique du qubit.

  • Les erreurs de portes quantiques à deux bits se composent d’une erreur dépolarisante à deux qubits, suivie d’erreurs de relaxation thermique mono-qubit sur chacun des deux qubits de la porte.

  • Erreurs de lecture sur un qubit sur la valeur du bit classique obtenue pour des qubits individuels.

Pour les erreurs sur les portes quantiques, le paramètre d’erreur lié à la relaxation thermique est dérivé à l’aide de la fonction thermal_relaxation_error du module aer.noise.errors, ainsi que des paramètres individuels \(T_1\) et \(T_2\), et du paramètre gate_time à partir des propriétés du backend. La probabilité de l’erreur de dépolarisation est alors définie de façon à ce que la non fidélité moyenne de la porte combinée à l’erreur de dépolarisation suivie par la relaxation thermique soit égale à la valeur gate_error des propriétés du backend.

Pour les erreurs de lecture, la probabilité que la valeur de bit classique enregistrée soit erronée après une mesure est donnée par readout_errors.

Running a noise simulation

Once we have created a noisy simulator backend based on a real device we can use it to run noisy simulations.

Important: When running noisy simulations it is critical to transpile the circuit for the backend so that the circuit is transpiled to the correct noisy basis gate set for the backend.

[5]:
# Transpile the circuit for the noisy basis gates
tcirc = transpile(circ, sim_vigo)

# Execute noisy simulation and get counts
result_noise = sim_vigo.run(tcirc).result()
counts_noise = result_noise.get_counts(0)
plot_histogram(counts_noise,
               title="Counts for 3-qubit GHZ state with device noise model")
[5]:
../../_images/tutorials_simulators_2_device_noise_simulation_11_0.png

If transpilation is skipped noise from the device noise model will not be applied to gates in the circuit that are supported by the simulator, but not supported by the mimicked backend.

[6]:
import qiskit.tools.jupyter
%qiskit_version_table
%qiskit_copyright

Version Information

Qiskit SoftwareVersion
Qiskit0.25.0
Terra0.17.0
Aer0.8.0
Ignis0.6.0
Aqua0.9.0
IBM Q Provider0.12.2
System information
Python3.7.7 (default, May 6 2020, 04:59:01) [Clang 4.0.1 (tags/RELEASE_401/final)]
OSDarwin
CPUs6
Memory (Gb)32.0
Fri Apr 02 12:01:10 2021 EDT

This code is a part of Qiskit

© Copyright IBM 2017, 2021.

This code is licensed under the Apache License, Version 2.0. You may
obtain a copy of this license in the LICENSE.txt file in the root directory
of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.

Any modifications or derivative works of this code must retain this
copyright notice, and modified files need to carry a notice indicating
that they have been altered from the originals.

[ ]: