Googles Quantum AI Framework Cirq
In Form gebracht
Ursprünglich für die eigenen Quantenprozessoren wie Sycamore hat Google die Python-Library Cirq entwickelt. Inzwischen liefert sie Erweiterungen für die unterschiedlichsten Anwendungen und spezifische Anpassung an Hardware und Simulatoren.
Möglicherweise übertreffen Quantencomputer klassische Rechner bald auch in praxisrelevanten Anwendungen. Derzeit werden erste Durchbrüche für natürliche Quantensysteme erzielt, die sich direkt eins zu eins als Qubits darstellen lassen und keine aufwendigen Basistransformationen benötigen. Die Implementierung von Quantenfehlerkorrektur hingegen, die beliebig lange Gattersequenzen erlaubt, ist voraussichtlich erst in einer Dekade verfügbar (siehe Artikel „Unumgänglich“ auf Seite 32). Aus diesem Grund heißt der aktuelle Entwicklungsstand NISQ-Ära (Noisy Intermediate Scale Quantum Computer). Eingeschränkt wird die Leistungsfähigkeit heutiger Quantenrechner durch das Verhältnis von Gatter- und Kohärenzzeiten sowie durch Read-out- und Ein-Qubit-Fehler. Entscheidendere Limitationen ergeben sich aber aus der Konduktivität zwischen den Qubits und aus Zwei-Qubit-Gatter-Fehlern. Bei beidem kann Googles Sycamore-Chip seine Vorteile ausspielen, weshalb er in der Quantenphysik und -chemie ebenso zum Einsatz kommt wie bei Optimierungsproblemen (siehe Artikel „Kaum verschränkt“ auf Seite 44).
Die Software für Googles Hardware ist Cirq. Der Artikel gibt einen Einblick in die Cirq-Syntaxmechanik und den Funktionsumfang. An einem Beispiel erläutert er die Grundbausteine und die verschiedenen Möglichkeiten, einen Quantenalgorithmus entweder zu simulieren oder für eine bestimmte Hardware kompatibel zu machen und auf dieser laufen zu lassen. Zum Abschluss fließen diese verschiedenen Quantencomputing-Bausteine zusammen und die Implementierung eines variationellen NISQ-Algorithmus vermittelt einen praxisnahen Eindruck von Cirq.
Die Python-Bibliothek Cirq ist unter der Apache-2.0-Lizenz verfügbar und lässt sich mit dem Python-Paketmanager installieren: pip install cirq
. Als Python-Paket profitiert Cirq von der Fülle der Python-Werkzeuge wie numpy
, scipy
oder matplotlib
. Der Code in Listing 1 generiert nach dem Cirq-Import zunächst ein Qubit-Objekt vom Typ cirq.GridQubit
, das sich an der Architektur supraleitender zweidimensionaler Quantenprozessoren orientiert. Als Alternativen stehen cirq.LineQubit
für Ionenfallen-QPUs oder cirq.NamedQubit
für Alice und Bob in der Quanteninformationstheorie zur Verfügung.
Erste Fingerübungen
Im nächsten Schritt bekommt das initialisierte Qubit wie bei digitalen Quantencomputern üblich Rechenanweisungen in Form von Quantenschaltkreisen zugewiesen. In diesem Fall transformiert ein Hadamard-Gatter (H) das Qubit aus dem Basiszustand |0⟩ in die Superposition
Den finalen Zustandsvektor berechnet simulator.simulate(circuit)
. Das Ergebnis hieße dann beispielsweise wf_result: 0.707|0⟩ + 0.707|1⟩
. In der Realität hat man jedoch keinen Zugriff auf den Zustandsvektor, sondern erhält pro QPU-Abfrage, also pro Messung, lediglich eine mögliche Realisierung mit der Wahrscheinlichkeit des absoluten Betrags des Koeffizienten, also entweder |0⟩ oder |1⟩ mit einer Wahrscheinlichkeitsverteilung von 1 : 1. Ersetzt man simulate()
durch run()
, fügt eine Messoperation hinzu und gibt die Zahl der gewünschten Messungen mit 10 an, lautet das Ergebnis etwa sample_result: m:1100110110
.
In diesem Beispiel nehmen die Qubits die Werte |0⟩ und |1⟩ mit der relativen Häufigkeit von 4 : 6 bei 10 Messungen an. Das verdeutlicht, dass es bereits mit fehlerfreien Qubits aufwendig sein kann, die tatsächlichen Wahrscheinlichkeiten und Zustandsvektorkoeffizienten zu erhalten, um beispielsweise damit einen Energieerwartungswert zu berechnen. Für eine bessere Abschätzung sind mehr Messungen und geschicktere statistische Werkzeuge wie der bayessche Ansatz nötig.