Blog

Quanten-Benchmarking für Quantencomputer

2
November
,
2023
Anastasia Marchenkova

Die Quanteninformatik verspricht, einige Branchen wie die Werkstoffindustrie, die Medizin und das Finanzwesen zu revolutionieren. Doch die Frage bleibt: Wann werden diese Quantencomputer gut genug sein, um tatsächlich ein reales Problem zu lösen? 

Diese hypegesteuerten Pressemitteilungen, in denen es heißt: "Wir haben ein neues Quantensystem mit einer Million Qubits entwickelt", sagen nicht alles. Eine Million Qubits mit sehr hohen Fehlern und geringer Kohärenz (die Zeitspanne, in der Quantenzustände gespeichert werden) sind nicht so nützlich wie 100 ideale Qubits - letztere wären uns allen jederzeit lieber. 

Aber wie können wir die Effizienz und Leistung dieser Quantencomputer bestimmen? Das ist nicht so einfach wie bei klassischen Computern. Die weithin anerkannten SPEC-Benchmarks messen verschiedene Aspekte der Computerleistung, darunter CPU-Aufgaben wie Ganzzahl- und Fließkomma-Arithmetik, Speicher und Speicherkapazitäten, Operationen auf Systemebene wie Multithreading und anwendungsspezifische Aufgaben wie Datenbankabfragen und Webserver-Durchsatz. Diese Benchmarks bieten eine standardisierte Möglichkeit, verschiedene Hardware- und Softwarekonfigurationen zu vergleichen.

Einige neue aggregierte Einzelnummern-Metriken, wie das von IBM geführte Quantum Volume, berücksichtigen Faktoren wie Gate- und Messfehler, Übersprechen und Konnektivität. Aber es fehlen immer noch einige Parameter. Sogar die Gatterbetriebszeiten fehlen oft in den technischen Unterlagen. So wie herkömmliche Computer Leistungs- und Stresstests unterzogen werden, um ihre Fähigkeiten zu zeigen, ist Benchmarking für Quantencomputer von entscheidender Bedeutung, um ihre Wirkung zu zeigen. 

Was ist Benchmarking?

Benchmarking ist, vereinfacht ausgedrückt, der Vergleich der Leistung eines Systems mit einem Standard oder der Leistung ähnlicher Systeme. Bei Quantencomputern misst das technische Benchmarking die Wiedergabetreue, den Berechnungserfolg, die Statistik oder andere Rauschmaße für bestimmte Sätze von Gattern (die Bausteine von Quantenschaltungen) und Qubits.

Beim Benchmarking eines Geräts verstehen wir seine Stärken, Schwächen und verbesserungswürdigen Bereiche sowie die Fähigkeiten des Systems. Vergleicht man beispielsweise eine CPU mit einem Grafikprozessor, so zeigt sich, dass die CPU bei Systemoperationen und typischer Computernutzung gewinnt, aber das Trainieren eines Deep-Learning-Modells oder das Schürfen von Bitcoin auf einem Grafikprozessor wird die CPU in den Schatten stellen. 

Was sollte Quantum Benchmarking leisten?

Das Quanten-Benchmarking sollte uns ein detailliertes Verständnis der Fähigkeiten des Systems vermitteln: 

  • Sicherstellung der Genauigkeit: Im Gegensatz zu klassischen Bits können Quantenbits (Qubits) in einer Überlagerung von Zuständen existieren, was sie von Natur aus probabilistisch macht. Dies bedeutet, dass die mehrfache Ausführung desselben Quantenalgorithmus unterschiedliche Ergebnisse liefern kann. Benchmarking hilft dabei, die Zuverlässigkeit eines Quantencomputers zu bestimmen, indem getestet wird, wie oft er die richtige Antwort liefert.
  • Leistungsmetriken messen: Von Quantencomputern wird erwartet, dass sie Probleme lösen, die für klassische Computer zu komplex sind. Durch Benchmarking kann ermittelt werden, wie viel schneller oder sogar energieeffizienter ein Quantencomputer ein Problem im Vergleich zu einem klassischen Supercomputer lösen kann. 
  • Feststellen der Fehlerraten: Quantensysteme reagieren empfindlich auf äußere Einflüsse, was zu wesentlich höheren Fehlern bei Toroperationen und Kohärenz führt. Benchmarking hilft bei der Ermittlung der Fehlerquoten, einer wichtigen Statistik für das Verständnis der Zuverlässigkeit eines Systems. Der springende Punkt ist jedoch, dass sich die Fehlerraten im Laufe der Zeit verändern können und Quantencomputer häufig neu kalibriert werden. Die Benchmarking-Raten sind dann möglicherweise nicht mehr lange genau. 
  • Validierung der Quanten-Supremität: Quantenüberlegenheit bedeutet, dass Quantencomputer Probleme lösen können, die klassische Computer nicht lösen können.

Arten des Quanten-Benchmarking

Angesichts des frühen Stadiums der Technologie ist die Bestimmung der Leistungsfähigkeit eines Quantencomputers nicht so einfach wie die Messung der Geschwindigkeit eines klassischen Computers und auch nicht standardisiert. Das Quanten-Benchmarking ist in verschiedene Arten unterteilt, die jeweils einen bestimmten Zweck bei der Messung der Leistungsmerkmale eines Quantengeräts erfüllen. 

Im Folgenden werden einige der wichtigsten Arten des Quanten-Benchmarking vorgestellt:

Randomisiertes Benchmarking

Eine der gebräuchlichsten Baseline-Techniken ist das randomisierte Benchmarking. Mit dieser Methode lassen sich die durchschnittlichen Fehlerraten von Quantengattern in einem Quantenprozessor messen. Durch die Anwendung einer Reihe von zufälligen Quantengattern und die anschließende Messung der Ergebnisse wird beim randomisierten Benchmarking eine Fehlerratenschätzung erstellt, die im Allgemeinen unempfindlich gegenüber Zustandsvorbereitungs- und Messfehlern ist.  

Gate Set Tomographie

Die Gate-Set-Tomografie kam etwa 2012 auf und wurde seitdem verfeinert und in einer Vielzahl von Experimenten eingesetzt, um Probleme beim randomisierten Benchmarking zu lösen. Die Gate-Set-Tomografie liefert eine vollständige Charakterisierung der logischen Operationen, die ein Quantenprozessor durchführen kann, einschließlich systematischer Fehler. Die Methode erfordert deutlich mehr Ressourcen als randomisiertes Benchmarking, liefert aber ein detailliertes Fehlermodell des Quantengattersatzes.

Quantenprozess-Tomographie

Die Quantenprozess-Tomografie dient dazu, das Verhalten eines Quantenprozesses oder eines Gatters zu rekonstruieren, indem verschiedene Eingangszustände vorbereitet, der Quantenprozess angewendet und dann die Ausgangszustände gemessen werden. Während diese Technik bei einer kleinen Anzahl von Qubits sehr genau sein kann, wird sie bei Systemen mit mehreren Qubits zu schwierig und ressourcenintensiv. 

Quantenzustands-Tomographie

Die Quantenzustands-Tomographie ähnelt der Quantenprozess-Tomographie, konzentriert sich aber auf die Charakterisierung von Quantenzuständen und nicht von Prozessen. Auch sie ist ressourcenintensiv und wird mit zunehmender Anzahl von Qubits immer schwieriger.

Crosstalk-Benchmarking

Crosstalk ist ein Problem in größeren Quantensystemen, bei denen Gatteroperationen an einem Qubit das andere beeinflussen. Ein zufälliges Benchmarking kann diese Informationen nicht erfassen, daher misst das Crosstalk-Benchmarking diese unerwünschten Wechselwirkungen. Diese Messung ist wichtig für Algorithmen, die Quantengatter parallelisieren müssen. 

Zyklus-Benchmarking

Das Zyklus-Benchmarking ist eine neuere Technik zur Messung des Fehlers eines gesamten Zyklus (oder einer Schicht) von Quantengattern, im Gegensatz zu einzelnen Gattern, und erfasst Fehler, die sich aus dem Übersprechen zwischen Qubits und anderen lokalen und globalen Fehlern in Multi-Qubit-Prozessoren ergeben.

Entropie-übergreifendes Benchmarking

Das Cross-Entropy-Benchmarking (XEB) wird zur Bewertung der Leistung von Quantenprozessoren verwendet, indem die Ausgangsverteilung eines Quantenschaltkreises mit einer idealen oder Zielverteilung verglichen wird. Die Ausgabemetrik berechnet die Genauigkeit von Quantengattern und die Genauigkeit von Quantenberechnungen und vergleicht, wie nahe ein Quantenprozessor an idealen Quantenoperationen liegt. Der Sycamore-Prozessor von Google nutzte XEB, um seine Ansprüche auf Quantenüberlegenheit zu demonstrieren

Jede dieser Arten von Benchmarking hat ihre eigenen Vorteile und Schwächen, und sie werden oft kombiniert, um ein vollständiges Bild der Fähigkeiten eines Quantenprozessors zu erhalten. In dem Maße, wie die Arten von Quantenhardware und die Fähigkeiten dieser Systeme zunehmen, werden wahrscheinlich neue Methoden des Quanten-Benchmarking vorgeschlagen werden. 

Vertrauen, aber überprüfen: Ihre Benchmarking-Herausforderung 

Nehmen wir an, ein neuer Quantenchip kommt auf den Markt und es werden außergewöhnliche Ansprüche an die Leistung des Geräts gestellt. Selbst wenn keine Benchmarking-Statistiken veröffentlicht werden oder die Kalibrierungsstatistiken veraltet sind, können Sie den Benchmarking-Code unabhängig ausführen. Classiq bietet eine Plattform aus einer Hand, auf der Sie selbst Benchmarking-Tests durchführen können, und zwar auf einer großen Anzahl echter Quanten-Hardware-Systeme verschiedener Hersteller und Simulatoren für idealisierte Vergleiche. 

Ihre Aufgabe ist es, die Classiq-Plattform zu nutzen, um ein randomisiertes Benchmarking-Experiment auf verschiedener Quanten-Hardware durchzuführen und es mit einem Simulator zu vergleichen. Um mit dem Classiq Python SDK zu beginnen, folgen Sie den Anweisungen hier

Der angegebene Code ist ein Python-Beispiel, das die Classiq-Bibliothek verwendet, um ein randomisiertes Benchmarking durchzuführen und die Zwei-Qubit-Clifford-Treue auf dem "Nairobi"-Gerät von IBM und dem "idealen" Quantensimulator von IBM Aer zu vergleichen.

Der vollständige Code ist hier zu finden. 

Bibliotheken importieren 

Dieser Block importiert verschiedene Bibliotheken und Module, die für das Programm benötigt werden. Bibliotheken wie asyncio und itertools sind Standard-Python-Bibliotheken, während die classiq-Bibliothek die Funktionen und Klassen für Quantencomputer-Erweiterungen bereitstellt.


from typing import Dict
importieren asyncio
von itertools importieren Produkt

von classiq importieren (
    Modell,
    Präferenzen,
    synthesize_async,
    execute_async,
    set_quantum_program_execution_preferences,
    GeneratedCircuit,
)
from classiq.builtin_functions import RandomizedBenchmarking
from classiq.execution import (
    AusführungsDetails,
    ExecutionPreferences,
    IBMBackendPreferences,
)
from classiq.analyzer.rb import RBAnalysis, order_executor_data_by_hardware

Asynchrone Hauptfunktion

Hier legen wir fest, welches Quantencomputer-Backend verwendet werden soll (IBM Quantum und seine Nairobi-Maschine).

Es wird eine Liste von Modellobjekten erstellt, jedes mit den angegebenen Einstellungen.

Für jedes Modell wenden wir Randomized Benchmarking mit den entsprechenden Parametern an und testen den resultierenden Quantenzustand.


async def main():
    num_of_qubits = 2
    anzahl_der_kliffords = [5, 10, 15, 20, 25]
    params_list = [
        RandomizedBenchmarking(
            num_of_qubits=num_of_qubits,
            num_of_cliffords=num_of_cliffords,
        )
        for num_of_cliffords in numbers_of_cliffords
    ]
    preferences = Preferences(
        backend_service_provider="IBM Quantum",
        backend_name="nairobi",
        transpilation_option="decompose",
    )
    models = [Model(preferences=preferences) for _ in numbers_of_cliffords]
    for model, params in zip(models, params_list):
        model.RandomizedBenchmarking(params)
        model.sample()

Programm-Synthese

Dieser asynchrone Aufruf wandelt unsere übergeordneten Modelle in ausführbaren Quantencode um. Stellen Sie sicher, dass Sie hier Ihren IBM ACCESS_TOKEN hinzufügen. 


    # Synthetisiert alle Quantenprogramme asynchron
    quantum_programs = await asyncio.gather(
        *[synthesize_async(model.get_model()) for model in models]
    )

    # Jedes Programm mit den jeweiligen Backend-Präferenzen erstellen
    backend_names = ("ibm_nairobi", "aer_simulator")
    backend_prefs = IBMBackendPreferences.batch_preferences(
        backend_names=backend_names,
        access_token=ACCESS_TOKEN,
    )
    qprogs_mit_Voreinstellungen = list()
    for qprog, backend_pref in product(quantum_programs, backend_prefs):
        preferences = ExecutionPreferences(backend_preferences=backend_pref)
        qprogs_mit_Vorgaben.append(
            set_quantum_program_execution_preferences(qprog, preferences)
        )

Ausführung


    # Alle Quantenprogramme asynchron ausführen
    results = await asyncio.gather(
        *[execute_async(qprog) for qprog in qprogs_with_preferences]
    )

Parsen und Analysieren der Ergebnisse

Der verbleibende Code befasst sich mit dem Parsen und Analysieren der Ergebnisse der Quantenprogramme und schließlich mit dem Plotten dieser Ergebnisse. Sie können hier zusätzliche Darstellungen und Analysen hinzufügen.


    parsed_results = [ExecutionDetails.parse_obj(res[0].value) for res in results]

    parsed_programs = [
        GeneratedCircuit.parse_raw(qprog).to_program() for qprog in quantum_programs
    ]

    clifford_number_mapping: Dict[str, int] = {
        program.code: num_clifford
        for program, num_clifford in zip(parsed_programs, numbers_of_cliffords)
    }
    mixed_data = tuple(
        zip(
            backend_prefs * len(parsed_programs),
            parsed_programs * len(backend_names),
            parsed_results,
        )
    )
    rb_analysis_params = order_executor_data_by_hardware(
        mixed_data=mixed_data, clifford_numbers_per_program=clifford_number_mapping
    )
    multiple_hardware_data = RBAnalysis(experiments_data=rb_analysis_params)

    total_data = await multiple_hardware_data.show_multiple_hardware_data_async()
    fig = multiple_hardware_data.plot_multiple_hardware_results()
    fig.show()

asyncio.run(main())

Werten Sie nach der Durchführung des Experiments die folgenden Fragen aus:

  • Welche Messwerte hat uns diese Benchmarking-Technik geliefert? 
  • Welche anderen Benchmarking-Techniken sollten Sie anwenden, um ein umfassendes Bild vom Verhalten dieses Quantengeräts zu erhalten? 
  • Wie verändert sich diese Metrik bei größeren Quantenchips oder bei unterschiedlichen Hardwaretypen (z. B. supraleitende oder gefangene Ionen)? 
  • Ersetzen Sie die Variable backend_names durch die Hardware Ihrer Wahl und testen Sie Ihre Hypothese!

Je außergewöhnlicher die Behauptungen über Quantencomputer werden, desto größer wird der Bedarf an Benchmarking, um außergewöhnliche Beweise zu liefern. Genauso wie wir kein Auto kaufen würden, das nicht einen Spießrutenlauf von Leistungstests durchlaufen hat, sollten wir uns nicht auf Quantencomputer verlassen, die nicht auf ihre Fähigkeiten hin geprüft wurden.

Und denken Sie daran, dass die Unternehmen Anreize haben, die Benchmarking-Techniken zu wählen, die ihnen die besten Zahlen liefern. Vertrauen Sie, aber überprüfen Sie. Jetzt können Sie Ihr eigenes Benchmarking mit Classiq durchführen! 

Die Quanteninformatik verspricht, einige Branchen wie die Werkstoffindustrie, die Medizin und das Finanzwesen zu revolutionieren. Doch die Frage bleibt: Wann werden diese Quantencomputer gut genug sein, um tatsächlich ein reales Problem zu lösen? 

Diese hypegesteuerten Pressemitteilungen, in denen es heißt: "Wir haben ein neues Quantensystem mit einer Million Qubits entwickelt", sagen nicht alles. Eine Million Qubits mit sehr hohen Fehlern und geringer Kohärenz (die Zeitspanne, in der Quantenzustände gespeichert werden) sind nicht so nützlich wie 100 ideale Qubits - letztere wären uns allen jederzeit lieber. 

Aber wie können wir die Effizienz und Leistung dieser Quantencomputer bestimmen? Das ist nicht so einfach wie bei klassischen Computern. Die weithin anerkannten SPEC-Benchmarks messen verschiedene Aspekte der Computerleistung, darunter CPU-Aufgaben wie Ganzzahl- und Fließkomma-Arithmetik, Speicher und Speicherkapazitäten, Operationen auf Systemebene wie Multithreading und anwendungsspezifische Aufgaben wie Datenbankabfragen und Webserver-Durchsatz. Diese Benchmarks bieten eine standardisierte Möglichkeit, verschiedene Hardware- und Softwarekonfigurationen zu vergleichen.

Einige neue aggregierte Einzelnummern-Metriken, wie das von IBM geführte Quantum Volume, berücksichtigen Faktoren wie Gate- und Messfehler, Übersprechen und Konnektivität. Aber es fehlen immer noch einige Parameter. Sogar die Gatterbetriebszeiten fehlen oft in den technischen Unterlagen. So wie herkömmliche Computer Leistungs- und Stresstests unterzogen werden, um ihre Fähigkeiten zu zeigen, ist Benchmarking für Quantencomputer von entscheidender Bedeutung, um ihre Wirkung zu zeigen. 

Was ist Benchmarking?

Benchmarking ist, vereinfacht ausgedrückt, der Vergleich der Leistung eines Systems mit einem Standard oder der Leistung ähnlicher Systeme. Bei Quantencomputern misst das technische Benchmarking die Wiedergabetreue, den Berechnungserfolg, die Statistik oder andere Rauschmaße für bestimmte Sätze von Gattern (die Bausteine von Quantenschaltungen) und Qubits.

Beim Benchmarking eines Geräts verstehen wir seine Stärken, Schwächen und verbesserungswürdigen Bereiche sowie die Fähigkeiten des Systems. Vergleicht man beispielsweise eine CPU mit einem Grafikprozessor, so zeigt sich, dass die CPU bei Systemoperationen und typischer Computernutzung gewinnt, aber das Trainieren eines Deep-Learning-Modells oder das Schürfen von Bitcoin auf einem Grafikprozessor wird die CPU in den Schatten stellen. 

Was sollte Quantum Benchmarking leisten?

Das Quanten-Benchmarking sollte uns ein detailliertes Verständnis der Fähigkeiten des Systems vermitteln: 

  • Sicherstellung der Genauigkeit: Im Gegensatz zu klassischen Bits können Quantenbits (Qubits) in einer Überlagerung von Zuständen existieren, was sie von Natur aus probabilistisch macht. Dies bedeutet, dass die mehrfache Ausführung desselben Quantenalgorithmus unterschiedliche Ergebnisse liefern kann. Benchmarking hilft dabei, die Zuverlässigkeit eines Quantencomputers zu bestimmen, indem getestet wird, wie oft er die richtige Antwort liefert.
  • Leistungsmetriken messen: Von Quantencomputern wird erwartet, dass sie Probleme lösen, die für klassische Computer zu komplex sind. Durch Benchmarking kann ermittelt werden, wie viel schneller oder sogar energieeffizienter ein Quantencomputer ein Problem im Vergleich zu einem klassischen Supercomputer lösen kann. 
  • Feststellen der Fehlerraten: Quantensysteme reagieren empfindlich auf äußere Einflüsse, was zu wesentlich höheren Fehlern bei Toroperationen und Kohärenz führt. Benchmarking hilft bei der Ermittlung der Fehlerquoten, einer wichtigen Statistik für das Verständnis der Zuverlässigkeit eines Systems. Der springende Punkt ist jedoch, dass sich die Fehlerraten im Laufe der Zeit verändern können und Quantencomputer häufig neu kalibriert werden. Die Benchmarking-Raten sind dann möglicherweise nicht mehr lange genau. 
  • Validierung der Quanten-Supremität: Quantenüberlegenheit bedeutet, dass Quantencomputer Probleme lösen können, die klassische Computer nicht lösen können.

Arten des Quanten-Benchmarking

Angesichts des frühen Stadiums der Technologie ist die Bestimmung der Leistungsfähigkeit eines Quantencomputers nicht so einfach wie die Messung der Geschwindigkeit eines klassischen Computers und auch nicht standardisiert. Das Quanten-Benchmarking ist in verschiedene Arten unterteilt, die jeweils einen bestimmten Zweck bei der Messung der Leistungsmerkmale eines Quantengeräts erfüllen. 

Im Folgenden werden einige der wichtigsten Arten des Quanten-Benchmarking vorgestellt:

Randomisiertes Benchmarking

Eine der gebräuchlichsten Baseline-Techniken ist das randomisierte Benchmarking. Mit dieser Methode lassen sich die durchschnittlichen Fehlerraten von Quantengattern in einem Quantenprozessor messen. Durch die Anwendung einer Reihe von zufälligen Quantengattern und die anschließende Messung der Ergebnisse wird beim randomisierten Benchmarking eine Fehlerratenschätzung erstellt, die im Allgemeinen unempfindlich gegenüber Zustandsvorbereitungs- und Messfehlern ist.  

Gate Set Tomographie

Die Gate-Set-Tomografie kam etwa 2012 auf und wurde seitdem verfeinert und in einer Vielzahl von Experimenten eingesetzt, um Probleme beim randomisierten Benchmarking zu lösen. Die Gate-Set-Tomografie liefert eine vollständige Charakterisierung der logischen Operationen, die ein Quantenprozessor durchführen kann, einschließlich systematischer Fehler. Die Methode erfordert deutlich mehr Ressourcen als randomisiertes Benchmarking, liefert aber ein detailliertes Fehlermodell des Quantengattersatzes.

Quantenprozess-Tomographie

Die Quantenprozess-Tomografie dient dazu, das Verhalten eines Quantenprozesses oder eines Gatters zu rekonstruieren, indem verschiedene Eingangszustände vorbereitet, der Quantenprozess angewendet und dann die Ausgangszustände gemessen werden. Während diese Technik bei einer kleinen Anzahl von Qubits sehr genau sein kann, wird sie bei Systemen mit mehreren Qubits zu schwierig und ressourcenintensiv. 

Quantenzustands-Tomographie

Die Quantenzustands-Tomographie ähnelt der Quantenprozess-Tomographie, konzentriert sich aber auf die Charakterisierung von Quantenzuständen und nicht von Prozessen. Auch sie ist ressourcenintensiv und wird mit zunehmender Anzahl von Qubits immer schwieriger.

Crosstalk-Benchmarking

Crosstalk ist ein Problem in größeren Quantensystemen, bei denen Gatteroperationen an einem Qubit das andere beeinflussen. Ein zufälliges Benchmarking kann diese Informationen nicht erfassen, daher misst das Crosstalk-Benchmarking diese unerwünschten Wechselwirkungen. Diese Messung ist wichtig für Algorithmen, die Quantengatter parallelisieren müssen. 

Zyklus-Benchmarking

Das Zyklus-Benchmarking ist eine neuere Technik zur Messung des Fehlers eines gesamten Zyklus (oder einer Schicht) von Quantengattern, im Gegensatz zu einzelnen Gattern, und erfasst Fehler, die sich aus dem Übersprechen zwischen Qubits und anderen lokalen und globalen Fehlern in Multi-Qubit-Prozessoren ergeben.

Entropie-übergreifendes Benchmarking

Das Cross-Entropy-Benchmarking (XEB) wird zur Bewertung der Leistung von Quantenprozessoren verwendet, indem die Ausgangsverteilung eines Quantenschaltkreises mit einer idealen oder Zielverteilung verglichen wird. Die Ausgabemetrik berechnet die Genauigkeit von Quantengattern und die Genauigkeit von Quantenberechnungen und vergleicht, wie nahe ein Quantenprozessor an idealen Quantenoperationen liegt. Der Sycamore-Prozessor von Google nutzte XEB, um seine Ansprüche auf Quantenüberlegenheit zu demonstrieren

Jede dieser Arten von Benchmarking hat ihre eigenen Vorteile und Schwächen, und sie werden oft kombiniert, um ein vollständiges Bild der Fähigkeiten eines Quantenprozessors zu erhalten. In dem Maße, wie die Arten von Quantenhardware und die Fähigkeiten dieser Systeme zunehmen, werden wahrscheinlich neue Methoden des Quanten-Benchmarking vorgeschlagen werden. 

Vertrauen, aber überprüfen: Ihre Benchmarking-Herausforderung 

Nehmen wir an, ein neuer Quantenchip kommt auf den Markt und es werden außergewöhnliche Ansprüche an die Leistung des Geräts gestellt. Selbst wenn keine Benchmarking-Statistiken veröffentlicht werden oder die Kalibrierungsstatistiken veraltet sind, können Sie den Benchmarking-Code unabhängig ausführen. Classiq bietet eine Plattform aus einer Hand, auf der Sie selbst Benchmarking-Tests durchführen können, und zwar auf einer großen Anzahl echter Quanten-Hardware-Systeme verschiedener Hersteller und Simulatoren für idealisierte Vergleiche. 

Ihre Aufgabe ist es, die Classiq-Plattform zu nutzen, um ein randomisiertes Benchmarking-Experiment auf verschiedener Quanten-Hardware durchzuführen und es mit einem Simulator zu vergleichen. Um mit dem Classiq Python SDK zu beginnen, folgen Sie den Anweisungen hier

Der angegebene Code ist ein Python-Beispiel, das die Classiq-Bibliothek verwendet, um ein randomisiertes Benchmarking durchzuführen und die Zwei-Qubit-Clifford-Treue auf dem "Nairobi"-Gerät von IBM und dem "idealen" Quantensimulator von IBM Aer zu vergleichen.

Der vollständige Code ist hier zu finden. 

Bibliotheken importieren 

Dieser Block importiert verschiedene Bibliotheken und Module, die für das Programm benötigt werden. Bibliotheken wie asyncio und itertools sind Standard-Python-Bibliotheken, während die classiq-Bibliothek die Funktionen und Klassen für Quantencomputer-Erweiterungen bereitstellt.


from typing import Dict
importieren asyncio
von itertools importieren Produkt

von classiq importieren (
    Modell,
    Präferenzen,
    synthesize_async,
    execute_async,
    set_quantum_program_execution_preferences,
    GeneratedCircuit,
)
from classiq.builtin_functions import RandomizedBenchmarking
from classiq.execution import (
    AusführungsDetails,
    ExecutionPreferences,
    IBMBackendPreferences,
)
from classiq.analyzer.rb import RBAnalysis, order_executor_data_by_hardware

Asynchrone Hauptfunktion

Hier legen wir fest, welches Quantencomputer-Backend verwendet werden soll (IBM Quantum und seine Nairobi-Maschine).

Es wird eine Liste von Modellobjekten erstellt, jedes mit den angegebenen Einstellungen.

Für jedes Modell wenden wir Randomized Benchmarking mit den entsprechenden Parametern an und testen den resultierenden Quantenzustand.


async def main():
    num_of_qubits = 2
    anzahl_der_kliffords = [5, 10, 15, 20, 25]
    params_list = [
        RandomizedBenchmarking(
            num_of_qubits=num_of_qubits,
            num_of_cliffords=num_of_cliffords,
        )
        for num_of_cliffords in numbers_of_cliffords
    ]
    preferences = Preferences(
        backend_service_provider="IBM Quantum",
        backend_name="nairobi",
        transpilation_option="decompose",
    )
    models = [Model(preferences=preferences) for _ in numbers_of_cliffords]
    for model, params in zip(models, params_list):
        model.RandomizedBenchmarking(params)
        model.sample()

Programm-Synthese

Dieser asynchrone Aufruf wandelt unsere übergeordneten Modelle in ausführbaren Quantencode um. Stellen Sie sicher, dass Sie hier Ihren IBM ACCESS_TOKEN hinzufügen. 


    # Synthetisiert alle Quantenprogramme asynchron
    quantum_programs = await asyncio.gather(
        *[synthesize_async(model.get_model()) for model in models]
    )

    # Jedes Programm mit den jeweiligen Backend-Präferenzen erstellen
    backend_names = ("ibm_nairobi", "aer_simulator")
    backend_prefs = IBMBackendPreferences.batch_preferences(
        backend_names=backend_names,
        access_token=ACCESS_TOKEN,
    )
    qprogs_mit_Voreinstellungen = list()
    for qprog, backend_pref in product(quantum_programs, backend_prefs):
        preferences = ExecutionPreferences(backend_preferences=backend_pref)
        qprogs_mit_Vorgaben.append(
            set_quantum_program_execution_preferences(qprog, preferences)
        )

Ausführung


    # Alle Quantenprogramme asynchron ausführen
    results = await asyncio.gather(
        *[execute_async(qprog) for qprog in qprogs_with_preferences]
    )

Parsen und Analysieren der Ergebnisse

Der verbleibende Code befasst sich mit dem Parsen und Analysieren der Ergebnisse der Quantenprogramme und schließlich mit dem Plotten dieser Ergebnisse. Sie können hier zusätzliche Darstellungen und Analysen hinzufügen.


    parsed_results = [ExecutionDetails.parse_obj(res[0].value) for res in results]

    parsed_programs = [
        GeneratedCircuit.parse_raw(qprog).to_program() for qprog in quantum_programs
    ]

    clifford_number_mapping: Dict[str, int] = {
        program.code: num_clifford
        for program, num_clifford in zip(parsed_programs, numbers_of_cliffords)
    }
    mixed_data = tuple(
        zip(
            backend_prefs * len(parsed_programs),
            parsed_programs * len(backend_names),
            parsed_results,
        )
    )
    rb_analysis_params = order_executor_data_by_hardware(
        mixed_data=mixed_data, clifford_numbers_per_program=clifford_number_mapping
    )
    multiple_hardware_data = RBAnalysis(experiments_data=rb_analysis_params)

    total_data = await multiple_hardware_data.show_multiple_hardware_data_async()
    fig = multiple_hardware_data.plot_multiple_hardware_results()
    fig.show()

asyncio.run(main())

Werten Sie nach der Durchführung des Experiments die folgenden Fragen aus:

  • Welche Messwerte hat uns diese Benchmarking-Technik geliefert? 
  • Welche anderen Benchmarking-Techniken sollten Sie anwenden, um ein umfassendes Bild vom Verhalten dieses Quantengeräts zu erhalten? 
  • Wie verändert sich diese Metrik bei größeren Quantenchips oder bei unterschiedlichen Hardwaretypen (z. B. supraleitende oder gefangene Ionen)? 
  • Ersetzen Sie die Variable backend_names durch die Hardware Ihrer Wahl und testen Sie Ihre Hypothese!

Je außergewöhnlicher die Behauptungen über Quantencomputer werden, desto größer wird der Bedarf an Benchmarking, um außergewöhnliche Beweise zu liefern. Genauso wie wir kein Auto kaufen würden, das nicht einen Spießrutenlauf von Leistungstests durchlaufen hat, sollten wir uns nicht auf Quantencomputer verlassen, die nicht auf ihre Fähigkeiten hin geprüft wurden.

Und denken Sie daran, dass die Unternehmen Anreize haben, die Benchmarking-Techniken zu wählen, die ihnen die besten Zahlen liefern. Vertrauen Sie, aber überprüfen Sie. Jetzt können Sie Ihr eigenes Benchmarking mit Classiq durchführen! 

Über "Der Podcast des Qubit-Typen"

Der Podcast wird von The Qubit Guy (Yuval Boger, unser Chief Marketing Officer) moderiert. In ihm diskutieren Vordenker der Quanteninformatik über geschäftliche und technische Fragen, die das Ökosystem der Quanteninformatik betreffen. Unsere Gäste geben interessante Einblicke in Quantencomputer-Software und -Algorithmen, Quantencomputer-Hardware, Schlüsselanwendungen für Quantencomputer, Marktstudien der Quantenindustrie und vieles mehr.

Wenn Sie einen Gast für den Podcast vorschlagen möchten, kontaktieren Sie uns bitte .

Erstellen Sie Quantensoftware ohne Grenzen 

Kontakt