Quantencomputer programmieren: Googles Framework Cirq ist einsatzbereit
Das Python-Framework zum Schreiben von Programmen fĂĽr Quantencomputer erscheint in Version 1.0 und bietet Abstraktion fĂĽr den Einsatz auf aktueller Hardware.
Gut vier Jahre nach der Vorstellung der ersten Alpha hat Google Cirq 1.0 zum Programmieren von Quantencomputern veröffentlicht. Mit dem Python-Framework lassen sich Quantenschaltungen für Systeme der NISQ-Ära (Noisy Intermediate Scale Quantum Computer) erstellen. Parallel gibt Google seine Quantum Virtual Machine frei, die Berechnungen auf Quantenrechner simuliert.
Google hat Cirq Ende 2017 auf GitHub bereitgestellt und im Sommer 2018 öffentlich als Open-Source-Projekt vorgestellt. Seitdem haben sich bis zur Freigabe der Version 1.0 zahlreiche Entwicklerinnen und Entwickler mit insgesamt über 3200 Commits an der Entwicklung beteiligt. Seit vier Jahren findet wöchentlich das Meeting "Cirq Cync" statt, in dem Mitglieder der Community ihre Arbeit am Projekt und das Beheben von Bugs diskutieren und, wie es der Blogbeitrag ausdrückt, "schreckliche, aber amüsante Quantenprogrammierwitze erzählen".
Schaltkreise, Momente und Operationen
Das Programmieren von Quantencomputern funktioniert mit Rechenanweisungen in Form von Quantenschaltkreisen beziehungsweise Quantenschaltungen (Quantum Circuit). Am Anfang initialisiert der Code ein Qubit, das eine Reihe von Gattern enthält, die das Qubit transformieren. Ein "Hello Qubit" aus dem GitHub-Repository von Cirq zeigt eine einfache Umsetzung:
import cirq
# Pick a qubit.
qubit = cirq.GridQubit(0, 0)
# Create a circuit
circuit = cirq.Circuit(
cirq.X(qubit)**0.5, # Square root of NOT.
cirq.measure(qubit, key='m') # Measurement.
)
print("Circuit:")
print(circuit)
# Simulate the circuit several times.
simulator = cirq.Simulator()
result = simulator.run(circuit, repetitions=20)
print("Results:")
print(result)
In Cirq repräsentiert die Klasse circuit
die Quantenschaltkreise. Sie besteht aus einer Collection von Moment
s, die wiederum eine Collection von Operation
s sind. Letztere fĂĽhren die eigentlichen Verarbeitungen auf den Qubits aus, und ein typischer Vertreter ist die GateOperation
.
Die Funktion simulate
im obigen Codebeispiel berechnet schließlich einen Zustandsvektor beziehungsweise die Wahrscheinlichkeit des absoluten Betrags. Das Ergebnis besteht also aus einer 20-stelligen Folge von Einsen und Nullen und könnte folgendermaßen aussehen:
Circuit:
(0, 0): ---X^0.5---M('m')---
Results:
m=11000111111011001000
Eigene Hardware und Forschung
Google nutzt Cirq als Standardsprache für Programme auf der hauseigenen Quantencomputing-Hardware. Die Testprogramme stellt das Unternehmen in dem separaten GitHub-Repository ReCirq bereit. Zu einigen Forschungen existieren zudem Abhandlungen wie "Realizing topologically ordered states on a quantum processor" mit dem zugehörigen Code auf GitHub.
Daneben lässt sich Cirq auf diversen Clouddiensten für Quantencomputing wie AQT, IonQ, Pascal, Rigetti, and IQM nutzen. Eine weitere Zielplattform ist Microsofts Azure Quantum.
Über Quantencomputing in der NISQ-Ära hat John Preskill 2018 eine Abhandlung verfasst. Sie beschreibt Quantencomputer, die zwischen 50 und 100 Qubits haben und zwar klassische Computer überflügeln, aber noch "nicht direkt die Welt verändern werden".
Emulation von Google
Interessierte können Cirq auf der Quantum Virtual Machine (QVM) ausprobieren, die Google parallel zur Veröffentlichung von Cirq 1.0 offiziell gestartet hat. Sie emuliert einen Quantencomputer und lässt sich in ein Colab-Notebook integrieren. Google speist die Messungen der Sycamore-Prozessoren in die Emulation ein, um sie möglichst realistisch zu gestalten. Zu der Simulation der Quantenschaltungen existiert eine Abhandlung auf Arxiv.
Die Vorlage des Colab-Notebooks enthält den Code zum Anlegen einer QVM, zum Erstellen eines Quantenschaltkreises und zum Ausführen des Circuit auf der virtuellen Maschine.
Bibliotheken fĂĽr Cirq
Während der Betaphase von Cirq sind bereits einige Open-Source-Libraries für die Programmiersprache entstanden, darunter die auf Googles Machine-Learning-Framework TensorFlow aufsetzende TensorFlow Quantum. pytket-cirq ist ein Python-Tool zum Optimieren und Anpassen der Quantenschaltkreise, und OpenFermion zielt auf chemische Simulationen.
Das Tutorial Quantum Chess zeigt, wie sich die theoretischen Quantenalgorithmen in Code für NISQ-Geräte umsetzen lässt. Quantenschach ist eine spezielle Variante des Brettspiels, das Schach um die Prinzipien der Quantenmechanik ergänzt. Einen prominenten Auftritt hatte das Spiel in einer Partie zwischen Stephen Hawking und Paul Rudd in einem äußerst amüsanten Video mit Keanu Reeves als Erzähler.
Empfohlener redaktioneller Inhalt
Mit Ihrer Zustimmmung wird hier ein externes YouTube-Video (Google Ireland Limited) geladen.
Ich bin damit einverstanden, dass mir externe Inhalte angezeigt werden. Damit können personenbezogene Daten an Drittplattformen (Google Ireland Limited) übermittelt werden. Mehr dazu in unserer Datenschutzerklärung.
Weitere Details zur Veröffentlichung von Cirq 1.0 lassen sich dem Open-Source-Blog bei Google entnehmen. Die Programmiersprache setzt auf semantische Versionierung. Die folgenden 1.x-Punktreleases werden somit rückwärtskompatibel zur ersten Hauptversion sein. Auf der Projektseite findet sich ein Tutorial zum Einstieg. Der Sourcecode und weitere Dokumentationen sind im GitHub-Repository abgelegt.
(rme)