Directed Execution Model (Beta)
Alle Komponenten im Directed Execution Model befinden sich derzeit in der Beta-Phase und sind möglicherweise nicht stabil. Du bist eingeladen, sie zu testen und Feedback zu geben, indem du ein Issue im Samplomatic- oder Qiskit Runtime-GitHub-Repository öffnest.
Die Schnittstellen der Sampler- und Estimator-Primitiven bieten eine höhere Abstraktionsebene, damit sich Algorithmen-Entwickler mehr auf Innovation und weniger auf Datenkonvertierung konzentrieren können. Sie sind jedoch weniger geeignet für Quanteninformationswissenschaftler, die mehr Kontrolle und Flexibilität für ihre Utility-Scale-Experimente benötigen. Das Directed Execution Model, das sich derzeit in der Beta-Version befindet, geht auf diesen Bedarf ein. Dieses Ausführungsmodell bietet die Bausteine, um Designabsichten auf der Client-Seite zu erfassen, und verlagert die kostspielige Generierung von Schaltungsvarianten auf die Server-Seite, sodass du Fehlerminderung und andere Techniken feinabstimmen kannst, ohne die Leistung zu beeinträchtigen. Dieses explizite und komponierbare Modell erleichtert es, mit neuen Techniken zu experimentieren, Ergebnisse zu reproduzieren und Methoden zu teilen.
In seiner Beta-Version konzentriert sich das Directed Execution Model darauf, dir die Kontrolle über Techniken zu geben, die in die bestehenden Sampler und Estimator integriert sind, einschließlich Pauli Twirling, Noise Model Learning und Injection sowie Basis Changes. Unterstützung für andere Fähigkeiten wird im Laufe der Zeit schrittweise hinzugefügt.
Workflow
Ein Hauptziel des Directed Execution Models besteht darin, eine modulare Möglichkeit zur Anwendung von Fehlerminderungsmethoden bereitzustellen. Du kannst beispielsweise definieren, welche Schichten in der Schaltung korrigiert werden sollen, oder die in die Schaltung injizierten Rauschpegel anpassen.
Um Fehlerminderung auf eine Schaltung im Rahmen dieses Frameworks anzuwenden, umfasst dein Workflow typischerweise die folgenden Schritte (die hier erwähnten Tools werden im nächsten Abschnitt ausführlicher beschrieben):
-
Gruppiere Anweisungen in Boxen und wende Annotationen auf sie an. Die Annotationen erfassen die beabsichtigte Transformation, ohne tatsächlich die Schaltungsvarianten zu generieren.
-
Lerne bei Bedarf die Rauschmodelle der eindeutigen Schichten mit dem neuen NoiseLearnerV3.
-
Erstelle die Template-Schaltung und Samplex aus der geboxten Schaltung.
-
Führe die Template-Schaltung und Samplex mit dem Executor-Primitiv aus, das die Schaltungsvarianten wie angewiesen generiert und ausführt.
-
Nachbearbeitung der Ausführungsergebnisse. Du kannst beispielsweise Post-Selection anwenden oder korrigierte Erwartungswerte aus den Ausführungsergebnissen extrapolieren.
Tools für das Directed Execution Model
Die folgenden Tools können zusammen verwendet werden, um eine Fehlerminderungs-Technik im Directed Execution Model zu implementieren.
Samplomatic
Samplomatic ist eine neue Open-Source-Bibliothek, die angepasste Sampling-Randomisierungen unterstützt. Sie verwendet das Box-Konstrukt, um über Sammlungen von Schaltungsoperationen zu argumentieren, die als stabile Rauschkontexte behandelt werden sollten, und verwendet Annotationen auf Boxen, um dir die Deklaration und Konfiguration von Absichten zu ermöglichen. Du kannst beispielsweise deine Schaltung in Boxen stratifizieren, eine Twirling-Annotation zu jeder Box hinzufügen und angeben, welche Twirling-Gruppe verwendet werden soll, wie in der folgenden Abbildung dargestellt:

Eine Schaltung mit annotierten Boxen kann dann verwendet werden, um eine Template-Schaltung und einen Samplex zu generieren. Die ausgegebene Template-Schaltung ist eine parametrisierte Schaltung, die ohne weitere Änderung ausgeführt wird (außer dass ihr unterschiedliche Parameterwerte zugewiesen werden). Der Samplex, der der Kerntyp der Samplomatic-Bibliothek ist, repräsentiert eine parametrische Wahrscheinlichkeitsverteilung über die Parameter der Template-Schaltung und andere Array-wertige Felder. Diese Felder können verwendet werden, um Daten nachzubearbeiten, die durch Ausführung der gebundenen Template-Schaltung gesammelt wurden. Mit anderen Worten, das Template-Schaltung- und Samplex-Paar teilt dem Executor-Primitiv (unten beschrieben) genau mit, welche Parameter generiert und welche gebundenen Schaltungen ausgeführt werden sollen. Da diese beiden Konstrukte auf der Client-Seite erstellt werden, kannst du lokale Inspektion und Sampling durchführen, um die Ausgaben vor dem Senden zur Hardware-Ausführung zu überprüfen.
Um den Prozess der Generierung annotierter Boxen zu vereinfachen, bietet die Samplomatic-Bibliothek auch Transpiler-Passes, die Schaltungsanweisungen automatisch basierend auf den von dir bereitgestellten Strategien in annotierte Boxen gruppieren.
Um mehr über Samplomatic zu erfahren, besuche die Guides und die API-Referenz-Dokumentation. Sende gerne Feedback und melde Fehler in seinem GitHub-Repository.
Executor-Primitiv
Executor ist ein neues Qiskit Runtime-Primitiv, das das Template-Schaltung- und Samplex-Paar als Eingabe nimmt, Parameterwerte gemäß dem Samplex generiert und bindet, die gebundenen Schaltungen auf der Hardware ausführt und die Ausführungsergebnisse und Metadaten zurückgibt. Es folgt den Anweisungen des Eingabepaars und trifft keine impliziten Entscheidungen für dich, sodass der Prozess transparent und dennoch leistungsfähig ist.
Um auf Executor zuzugreifen, installiere den executor_preview-Branch von qiskit-ibm-runtime:
pip install -U git+https://github.com/Qiskit/qiskit-ibm-runtime.git@executor_preview
Die Ein- und Ausgaben des Executor-Primitivs unterscheiden sich stark von denen von Sampler und Estimator. Weitere Informationen findest du in der Executor-API-Referenz. Darüber hinaus bietet der Executor-Quickstart-Guide einen Überblick und Codebeispiele.
NoiseLearnerV3
Ähnlich wie der aktuelle NoiseLearner gibt dieses Qiskit Runtime-Hilfsprogramm das sparse Pauli-Lindblad-Rauschmodell zurück, das in vielen Fehlerminderungsmethoden verwendet wird, einschließlich PEC, PEA und PNA. Im ursprünglichen NoiseLearner übergibst du eine Liste von Schaltungen, und das Programm stratifiziert die Schaltungen in Schichten und gibt das Rauschmodell für jede eindeutige Schicht zurück. NoiseLearnerV3 hingegen gibt dir Kontrolle darüber, wie du deine Schaltungen stratifizierst, und das Programm nimmt einfach eine Liste von geboxten Schaltungsanweisungen (z. B. eindeutige Schichten) als Eingaben.
NoiseLearnerV3 unterstützt auch das Lernen von Messrauschen. Für jeden Anweisungssatz in der Eingabeliste führt es das Pauli-Lindblad-Lernprotokoll aus, wenn der Satz Ein- und Zwei-Qubit-Gates enthält, und das TREX-Protokoll, wenn der Satz Messungen enthält.
Um auf NoiseLearnerV3 zuzugreifen, installiere den executor_preview-Branch von qiskit-ibm-runtime:
pip install -U git+https://github.com/Qiskit/qiskit-ibm-runtime.git@executor_preview
Um mehr über NoiseLearnerV3 zu erfahren, lies die API-Referenz-Dokumentation.
Nächste Schritte
- Sieh dir zwei Qiskit-Addons an, Shaded lightcones und Propagated noise absorption, die auf diesem Ausführungsmodell aufbauen.