BSI Lab Day: Quantum Computing

Anna Archinger
HR Manager, BSI
#karriere

Quantencomputer – das klingt eigentlich wie Science Fiction, aber scheint doch immer näher zu rücken. Man liest immer wieder in den Nachrichten, dass ein noch grösserer Quantencomputer gebaut wurde. Aber wie weit sind wir wirklich? Ist das Programmieren auf Quantencomputern nur Theorie? Oder kann man schon selber Quantencomputer benutzen?

In diesem Beitrag erhältst du einen Einblick in die BSI Lab Forschung von David Wlazlo. BSI Lab gibt Mitarbeitenden die Gelegenheit im Rahmen eines Weiterbildungsbudgets an innovativen Themen zu arbeiten, die den BSI-lern wichtig sind und sie persönlich weiterbringen. BSI Lab fordert explizit dazu auf, sich mit Fragen und Technologien auseinanderzusetzen, die sich von den täglichen Aufgaben abheben und damit neue Einblicke ermöglichen.

Was sind Quantencomputer eigentlich?

Bei klassischen Computern wird grundlegend mit Bits gearbeitet. Ein Bit kann genau zwei Werte annehmen: 1 oder 0. Quantencomputer nutzen die Eigenschaften von kleinsten Teilchen (wie z.B. einzelnen Atomen oder Elektronen) aus, um Qubits zu erstellen. Im Gegensatz zum klassischen Bit kann ein Qubit nicht nur den Wert 1 oder 0 annehmen, sondern auch in einer Superposition von beiden Zuständen sein. Zum Beispiel kann ein Qubit in dem Zustand sein, dass man bei der Messung des Qubits zu 50% den Wert 1 und zu 50% den Wert 0 erhält. Außerdem kann man verschiedene Effekte, wie zum Beispiel die Quantenverschränkung, ausnutzen, um Qubits miteinander zu verbinden.

Mit Hilfe von Quantencomputer kann man Algorithmen schreiben, welche Probleme, die mit klassischen Computern nicht in realistischer Zeit lösbar sind, doch in akzeptabler Zeit lösen können. Die wohl bekanntesten sind:

Wie weit sind wir?

quantum-computers-grafik.png

Bildquelle: CBInsights

Vor dem Lab Day hatte ich im Kopf, dass es Quantencomputer gibt, die vielleicht eine Handvoll von Qubits haben. Aber vor allem in den letzten Jahren wurden doch große Fortschritte gemacht. Wie man oben in der Grafik sehen kann, hat Google vor ein paar Jahren einen Rekord mit 72 Qubits aufgestellt. Dieses Jahr hat IBM einen Quantencomputer vorgestellt, welcher 127 Qubits hat. Im Jahr 2019 hat Google behauptet, mit einem Quantencomputer zum ersten Mal Quantenüberlegenheit erreicht zu haben*. Das heißt, dass ein Quantencomputer eine Aufgabe in akzeptabler Zeit gelöst hat, die ein klassischer Computer in keiner realistischen Zeit lösen könnte. (200 Sekunden vs 10.000 Jahre)

*IBM bezweifelt die Aussage jedoch

Kann ich so einen Quantencomputer programmieren?

Ja, kannst du!

Mittlerweile gibt es einige Anbieter, welche ihre Quantencomputer der Öffentlichkeit zur Verfügung stellen. Dabei handelt es sich um Services wie beim Cloud Computing. Man lädt seinen Programmcode hoch, dieser wird auf echter Quantum Hardware ausgeführt, und dann bekommt man das Ergebnis zurück. Eine solche Platform ist Azure Quantum. Hier kann man Programme, die in der Programmiersprache Q# geschrieben wurden, hochladen, gegen die Zielplatform kompilieren und ausführen lassen. Dabei kann man zwischen verschiedenen Providern auswählen, welche unterschiedlich starke Quantencomputer haben.

quantum-development-kit.png

Bildquelle: Microsoft

Und da die ersten $500 kostenlos sind, habe ich das direkt Mal ausprobiert!

Quantum Programmcode

Und wie programmiert man jetzt mit solchen Qubits? Beim klassischen Programmieren werden auf tiefster Ebene Logikgatter (aus Transistoren gebaut) auf Bits angewendet. NOT, AND, OR, XOR, etc… Ebenso werden beim Quantum Computing auf tiefster Ebene sogenannte Quantengatter auf Qubits angewendet.

In Q# sieht das dann wie folgt aus:

q-programmcode.png

Die Funktion «H(q)» ist das Hadamard-Gatter, was ich oben beschrieben habe. Es versetzt das Qubit in eine Superposition. Die Funktion «M(q)» misst das Qubit und liefert das Ergebnis – 1 oder 0 – zurück.

Ab in die Quantum Cloud!

Nachdem man sich einen Azure Quantum Workspace eingerichtet hat (nur ein paar Klicks), kann man über die Command Line seinen Code hochladen. Anschließend habe ich den Zufallsgenerator etwas ausgeweitet, sodass mein Generator 4 Qubits verwendet, und ihn dann hochgeladen:

quantum-cloud.png

Als Provider habe ich mir IonQ ausgesucht. Hier hat man zur Zeit 11 Qubits zur Verfügung. Der Job wird dann auf die Warteliste beim Provider gesetzt und nach einigen Sekunden stand das Ergebnis bereit. Dieses kann man sich auch wieder per Command Line ausgeben lassen:

q-code.png

Und wieso gibt es jetzt 16 Ausgaben und nicht nur eine? Mein Program gibt doch nur einen Wert zurück? Das liegt daran, dass das Quantum-Programm mehrmals ausgeführt wird – in diesem Fall 500 Mal. Die Ergebnisse werden dann gesammelt und in einem Histogram dargestellt. Da Quantencomputer mit Wahrscheinlichkeiten arbeiten, kann es je nach Programm sein, dass nicht immer das gleiche Ergebnis zurückgeliefert wird.

Um die Teiler einer Zahl zu finden, kann man z.B. mit Hilfe von Grovers Suchalgorithmus ein Programm schreiben, welches mit hoher Wahrscheinlichkeit einen Teiler als Ergebnis zurückgibt. Ich habe das für die Zahl «21» gemacht und mein Quantenprogramm 100 mal laufen lassen. Folgende Verteilung kam als Ergebnis zurück:

output-grover.png

Die Zahlen 1, 3, 7, und 21 wurden am häufigsten zurückgegeben – und das sind auch genau die Teiler der Zahl 21.

Ab in die Quantum Cloud!

Quantum Computing ist da – und zwar für jeden. Ich war überrascht, wie einfach es ist, seinen Programmcode auf echter Quantum Hardware laufen zu lassen. Typische Anwendungsgebiete für Quantencomputer sind unter anderem AI, Chemie, Biologie, Pharma, Cyber Security, Wettervorhersagen, etc, auch wenn die Hardware noch nicht so stark ist, dass man damit real-world Probleme lösen kann. Aber die Hardware wird immer besser, und es wird immer realistischer, damit auch komplexe Probleme lösen zu können.

IonQ plant in den nächsten 5-10 Jahren Hardware mit 1024 Qubits anbieten zu können:

ionq.png

Bildquelle: Venture Beat

Es ist auf jeden Fall ein sehr spannendes Thema und es hat sehr viel Spaß gemacht, Programme auf Quantum Hardware zu schreiben. Wer es selber mal ausprobieren will, findet die Ressourcen hier.

Next Best Action: BSI.

Der beste nächste Schritt: Ihre Ziele mit BSI vernetzen.

BSI Customer Suite

Bieten Sie eine wirklich überzeugende Customer Experience mit sieben Produkten aus einem Guss.

bsi.engage
bsi.cx
bsi.crm
bsi.insight
bsi.ai
bsi.cdp
bsi.eip