Cómo construir modelos de ruido para simulaciones de dispositivos de átomos neutros en QDK

El Microsoft Quantum Development Kit (QDK) incluye un conjunto de APIs de simulación de dispositivos de átomos neutros que puede utilizar para modelar cómo se ejecuta su programa en un ordenador cuántico de átomos neutros. Estas API modelan los tipos de ruido que se producen específicamente en hardware de átomos neutros. El QDKPython paquete permite modelos de ruido para simulaciones con la NoiseConfig clase .

Para obtener más información sobre los modelos de ruido en QDK simulaciones, vea Cómo crear modelos de ruido para simulaciones cuánticas en QDK.

Para obtener instrucciones sobre cómo instalar y usar los QDK simuladores, consulte Instalación y ejecución de QDK los simuladores cuánticos.

Las API de simulación de dispositivos de átomos neutros

QDK incluye dos API de simulación de dispositivos de átomos neutros, NeutralAtomDevice y NeutralAtomBackend. Estas API modelarán el ruido que se produce específicamente en equipos cuánticos de átomos neutros. Para obtener más información, consulte Simular programas cuánticos en hardware de dispositivos de átomos neutros.

Tipos de ruido en simuladores de dispositivos de átomos neutros

En dispositivos atom neutros, los láseres mueven físicamente los cúbits entre diferentes zonas del dispositivo. El ruido puede producirse en dispositivos de átomos neutros en las siguientes situaciones:

  • Movimientos de cúbits entre zonas
  • Operaciones de puerta cuántica en cúbits en la zona de interacción
  • Mediciones de cúbits en la zona de medición

Los dispositivos de átomos neutros tienen un conjunto limitado de compuertas cuánticas. Las simulaciones de dispositivos de átomos neutros en QDK admiten ruido de las siguientes fuentes.

Origen del ruido Parámetro del modelo de ruido Descripción del origen
$S_X$ puerta cuántica sx Puerta de un solo qubit, inversión de medio bit
$R_Z$ puerta cuántica rz Puerta de un solo cúbit, rotación de fase general
$CZ$ puerta cuántica cz Puerta de dos qubits: inversión de fase $Z$ controlada
Medición y restablecimiento de cúbits mresetz Medición de un solo cúbit y restablecimiento a 0 estado
Movimiento de cúbits mov Movimiento de cúbits entre zonas de dispositivo

Para estos orígenes de ruido, puede configurar todos los tipos de ruido que admiten los QDK simuladores.

Tu programa cuántico puede contener cualquier tipo de puerta que admita el perfil de destino de QIR. Las API de simulación de átomos neutros compilan el QIR de entrada y descomponen las compuertas de su programa en el conjunto de compuertas disponibles en los dispositivos de átomos neutros: $S_X$, $R_Z$ y $CZ$. Cuando use NeutralAtomDevice y NeutralAtomBackend para las simulaciones, no configure ruido en otras puertas porque ese ruido no afecta a la simulación. Por ejemplo, si tu programa contiene puertas Hadamard y configuras ruido para las puertas Hadamard, ese ruido no aparece en la simulación porque las puertas Hadamard se descomponen en puertas del dispositivo de átomos neutros.

Las API de simulación de átomo neutro convierten todas las medidas del programa en instrucciones de medición y restablecimiento. Para incluir el ruido de medición, configure el ruido en mresetz. No se incluye el ruido de mz en la simulación.

Crear un modelo de ruido para una simulación de un dispositivo de átomos neutros

Para construir un modelo de ruido para una simulación de un dispositivo de átomos neutros, siga estos pasos.

  1. En VS Code, abra el menú Ver y elija Paleta de comandos.

  2. Escriba Crear: Nuevo Jupyter Notebook. Se abre un archivo vacío Jupyter Notebook en una nueva pestaña.

  3. En la primera celda del cuaderno, importe los objetos necesarios Python .

    from qdk import init, TargetProfile
    from qdk.openqasm import compile
    from qdk.simulation import NeutralAtomDevice, NoiseConfig
    from qdk.widgets import Histogram
    
  4. En una nueva celda, establezca el perfil de destino qiR del dispositivo y compile un programa OpenQASM en QIR.

    init(target_profile=TargetProfile.Base)
    
    qasm_src = """
    include "stdgates.inc";
    qubit[2] qs;
    bit[2] r;
    
    h qs[0];
    cx qs[0], qs[1];
    r = measure qs;
    """
    
    qir = compile(qasm_src)
    
  5. Cree un objeto NoiseConfig y construya su modelo de ruido. Por ejemplo, ejecute el código siguiente en una nueva celda.

    noise = NoiseConfig()
    
    noise.sx.x = 0.01
    noise.rz.z = 0.01
    noise.cz.iy = 0.02
    noise.mov.loss = 0.005
    

    Este código genera el siguiente modelo de ruido, donde la tasa de ruido es la probabilidad de que el origen cause el tipo de ruido correspondiente.

    Origen del ruido Tipo de ruido Tasa de ruido
    puerta $S_X$ Volteo de bits 1 %
    puerta $R_Z$ Cambio de fase 1 %
    Puerta $CZ$ Inversión de bits y cambio de fase en el qubit de destino 2%
    Movimiento de cúbits Pérdida de cúbits 0.5%
  6. Ejecute el simulador con el modelo de ruido y vea un histograma de resultados de medición. Por ejemplo, ejecute el código siguiente en una nueva celda para ejecutar 1000 tomas del programa en el simulador de Clifford.

    device = NeutralAtomDevice()
    
    results = device.simulate(qir, shots=1000, noise=noise, type="clifford")
    Histogram(results, labels="kets")