Entwicklungsworkflow
Der Begriff Qiskit Pattern beschreibt den Entwicklungsworkflow für das Aufschlüsseln domänenspezifischer Probleme und die Kontextualisierung erforderlicher Fähigkeiten in Phasen. Dies ermöglicht die nahtlose Zusammensetzbarkeit neuer Fähigkeiten, die von IBM Quantum®-Forschern (und anderen) entwickelt wurden, und ermöglicht eine Zukunft, in der Quantencomputing-Aufgaben von leistungsstarker heterogener (CPU/GPU/QPU) Computerinfrastruktur ausgeführt werden. Blöcke oder Gruppen von Blöcken führen die Schritte eines Patterns aus, wobei das Qiskit SDK eine wichtige grundlegende Schicht bereitstellt, die von anderen Tools oder Diensten unterstützt wird, die von IBM Quantum oder der Quantum-Open-Source-Community entwickelt wurden. Qiskit Patterns ermöglichen es Domänenexperten, ein Problem zu spezifizieren und die Tools (Blöcke) zusammenzustellen, die ein Qiskit Pattern erreichen. Dieses Pattern kannst du dann lokal oder über Cloud-Dienste ausführen oder mit Qiskit Serverless bereitstellen.
Die vier Schritte eines Qiskit Patterns sind wie folgt:
-
Abbilden des Problems auf Quantenschaltungen und Operatoren
-
Optimieren für Zielhardware
-
Ausführen auf Zielhardware
-
Nachbearbeiten der Ergebnisse
Jeder Schritt wird in den folgenden Abschnitten detailliert beschrieben.
Abbilden des Problems auf Quantenschaltungen und Operatoren
Dieser Schritt beschreibt, wie ein Benutzer mit einem klassischen Problem beginnt und herausfindet, wie er es auf einen Quantencomputer abbildet. Beispielsweise umfasst dieser Schritt in Anwendungen wie Chemie und Quantensimulation im Allgemeinen die Konstruktion einer Quantenschaltung, die den Hamilton-Operator darstellt, den du zu lösen versuchst. Während dieses Schritts kann es für bestimmte Probleme auch wünschenswert sein, die Abbildung des Problems auf Qubits im Heavy-Hex- (oder Gross-)Gitter der IBM®-Hardware von Anfang an festzulegen, wenn die Struktur des Problems sich zur frühzeitigen Optimierung eignet. Es lohnt sich, an dieser Stelle auch zu überlegen, was das Ergebnis des jeweiligen Algorithmus sein wird, in Vorbereitung auf den späteren Ausführungsschritt - zum Beispiel, wenn das gewünschte Ergebnis das Ableiten von Korrelationsfunktionen unter Verwendung von Hadamard-Tests umfasst, könntest du dich darauf vorbereiten, Sampler zu verwenden, während du beim Angeben von Observables Estimator verwenden würdest, der viele Fehlerminderungsoptionen bieten könnte.
Die Ausgabe dieses Schritts ist normalerweise eine Sammlung von Schaltungen oder Quantenoperatoren, die im nächsten Schritt für Hardware optimiert werden können.
Optimieren für Zielhardware
In diesem Schritt nimmst du die abstrakten Schaltungen (oder Operatoren), die aus dem Abbildungsschritt erstellt wurden, und führst eine Reihe von Optimierungen an ihnen durch. Dies kann das Abbilden der Route und des Layouts der Schaltung auf physische Qubit-Hardware, das Konvertieren in Basis-Gates der Hardware und die Reduzierung der Anzahl der Operationen umfassen, alles darauf ausgelegt, die Erfolgswahrscheinlichkeit im späteren Ausführungsschritt zu optimieren. An diesem Punkt möchtest du möglicherweise auch deine Schaltungen mit einem Simulator testen, bevor du im nächsten Schritt auf echter Hardware ausführst.
Während dieses Schritts müssen abstrakte Schaltungen in Instruction Set Architecture (ISA)-Schaltungen transpiliert werden. Eine ISA-Schaltung ist eine, die nur aus Gates besteht, die von der Zielhardware verstanden werden (Basis-Gates), und bei der alle Multi-Qubit-Gates die Konnektivitätsbeschränkungen (Coupling Map) einhalten. Nur ISA-Schaltungen können mit IBM Quantum Compute Service auf IBM-Hardware ausgeführt werden.
Ausführen auf Zielhardware
Dieser Schritt umfasst die Ausführung deiner Schaltungen auf Hardware und erzeugt die Ausgaben der Quantenberechnung. Die im vorherigen Schritt erstellten ISA-Schaltungen können entweder mit einem Sampler- oder Estimator-Primitiv aus dem Paket qiskit-ibm-runtime ausgeführt werden, das du lokal auf deinem Computer oder aus einem Cluster bzw. einer anderen heterogenen Rechenumgebung heraus initialisierst. Diese können in einem Batch ausgeführt werden, der parallele Transpilierung für klassische Recheneffizienz ermöglicht - oder in einer Session, die es ermöglicht, iterative Aufgaben effizient ohne Warteschlangenverzögerungen zu implementieren. Während dieses Schritts gibt es auch die Option, bestimmte Techniken zur Fehlerunterdrückung und -minderung zu konfigurieren, die von qiskit-ibm-runtime bereitgestellt werden.
Je nachdem, ob du das Sampler- oder Estimator-Primitiv verwendest, fällt das Ergebnis dieses Schritts unterschiedlich aus. Mit Sampler erhältst du Messergebnisse pro Shot in Form von Bitstrings. Mit Estimator erhältst du Erwartungswerte von Observables, die physikalischen Größen oder Kostenfunktionen entsprechen.
Nachbearbeiten der Ergebnisse
Dieser letzte Schritt umfasst das Zusammenfügen der Ausgaben aus dem vorherigen Schritt, um das gewünschte Ergebnis zu erhalten. Dies kann eine Reihe klassischer Datenverarbeitungsschritte umfassen, wie z.B. das Visualisieren von Ergebnissen, Readout-Fehlerminderungstechniken, das Marginalisieren von Quasi-Wahrscheinlichkeitsverteilungen zur Ermittlung von Ergebnissen auf kleineren Qubit-Sätzen oder Postselektion anhand inhärenter Eigenschaften des Problems, wie Gesamtspin, Parität oder Teilchenerhaltung durch Entfernen unphysikalischer Observables.
Da sich das Feld von maßgeschneiderter Schaltungskonstruktion zu Utility-Scale-Workflows bewegt, eröffnen die Flexibilität und Einfachheit, mit der Qiskit Patterns es Benutzern ermöglichen, die verschiedenen Schritte des Patterns zusammenzustellen, dem Quantencomputing eine Vielzahl von Anwendungen und Techniken, die Forschende im Quantencomputing einfach nutzen können.