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.

In Pocket speichern vorlesen Druckansicht 3 Kommentare lesen

(Bild: Shutterstock)

Lesezeit: 4 Min.
Von
  • Rainald Menge-Sonnentag
Inhaltsverzeichnis

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".

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 Moments, die wiederum eine Collection von Operations sind. Letztere führen die eigentlichen Verarbeitungen auf den Qubits aus, und ein typischer Vertreter ist die GateOperation.

Die Qubits durchlaufen den Circuit über Momente, die wiederum aus Operationen bestehen.

(Bild: Google)

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

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".

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.

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)