Die Qiskit Elemente

The Qiskit framework.

Terra

Terra, das Element Erde, ist das Fundament auf dem der Rest von Qiskit aufbaut. Terra bietet die Grundlage um Quantenprogramme mit Schaltkreisen und Pulsen zu erstellen, diese für die Anforderungen bestimmter Geräte zu optimieren, und die Ausführung von Experimenten auf externen Geräten zu verwalten. Terra definiert die Schnittstellen für eine freundliche Endnutzer-Erfahrung, sowie eine effiziente Handhabung von Optimierungsebenen, Impulsplanung und Backend Kommunikation.

Qiskit Terra ist in sechs Modulen organisiert:

  1. qiskit.circuit A quantum circuit is a model for quantum computing in which a computation is done by performing a sequence of quantum operations (usually gates) on a register of qubits. A quantum circuit usually starts with the qubits in the \(|0,…,0>\) state and these gates evolve the qubits to states that cannot be efficiently represented on a classical computer. To extract information on the state a quantum circuit must have a measurement which maps the outcomes (possible random due to the fundamental nature of quantum systems) to classical registers which can be efficiently represented.

  2. qiskit.pulse A pulse schedule is set of pulses which are sent to a quantum experiment that are applied to a channel (experimental input line). This is a lower level than circuits and requires each gate in the circuit to be represented as a set of pulses. At this level the experiments can be designed to reduce errors (dynamical decoupling, error mitigation, and optimal pulse shapes).

  3. qiskit.transpiler A major part of research on quantum computing is working out how to run a quantum circuits on real devices. In these devices, experimental errors and decoherence introduce errors during computation. Thus, to obtain a robust implementation it is essential to reduce the number of gates and the overall running time of the quantum circuit. The transpiler introduces the concept of a pass manager to allow users to explore optimization and find better quantum circuits for their given algorithm. We call it a transpiler as the end result is still a circuit.

  4. qiskit.providers Once the user has made the circuits to run on the backend they need to have a convenient way of working with it. In Terra we do this using four parts:

    1. A Provider is an entity that implements the abstract base class BaseProvider and provides access to a group of different backends (for example, backends available through the IBM Quantum Experience). It interacts with those backends to, for example, find out which ones are available, or retrieve an instance of a particular backend.

    2. A Backend is an entity that implements the abstract base class Backend represent either a simulator or a real quantum computer and are responsible for running quantum circuits and returning results. They have a run method which takes in a qobj as input and returns a BaseJob object. This object allows asynchronous running of jobs for retrieving results from a backend when the job is completed.

    3. Job instances are implementations of the abstract base class BaseJob and can be thought of as the “ticket” for a submitted job. They find out the execution’s state at a given point in time (for example, if the job is queued, running, or has failed) and also allow control over the job.

    4. Result Once the job has finished Terra allows the results to be obtained from the remote backends using result = job.result(). This result object holds the quantum data and the most common way of interacting with it is by using result.get_counts(circuit). This method allows the user to get the raw counts from the quantum circuit and use them for more analysis with quantum information tools provided by Terra.

  5. qiskit.quantum_info To perform more advanced algorithms and analysis of the circuits run on the quantum computer, it is important to have tools to implement simple quantum information tasks. These include methods to both estimate metrics and generate quantum states, operations, and channels.

  6. qiskit.visualization In Terra we have many tools to visualize a quantum circuit. This allows a quick inspection of the quantum circuit to make sure it is what the user wanted to implement. There is a text, python and latex version. Once the circuit has run it is important to be able to view the output. There is a simple function (plot_histogram()) to plot the results from a quantum circuit including an interactive version. There is also a function plot_state() and plot_bloch_vector() that allow the plotting of a quantum state.

Aer

Aer, das Element „Luft“, zieht sich durch alle Qiskit Elemente. Um die Entwicklung von Quantencomputern richtig zu beschleunigen, brauchen wir bessere Simulatoren, Emulatoren und Debugger. Aer hilft uns die Grenzen klassischer Prozessoren zu verstehen, indem es uns zeigt inwieweit diese Quantenberechnungen imitieren können. Des Weiteren können wir mit Aer verifizieren, dass derzeitige und künftige Quantencomputer korrekt funktionieren. Das erreichen wir durch die Auslotung der Grenzen einer Simulation und dem Simulieren der Auswirkungen von realistischem Quantenrauschen auf die Berechnungen.

Aer bietet ein hochperformantes Simulations-Framework für Quantenschaltkreise auf Basis des Qiskit Software Stacks. Es enthält optimierte C++ Simulations-Backends, um in Terra kompilierte Schaltkreise auszuführen. Aer stellt außerdem Tools zur Erstellung fein konfigurierbarer Modelle von Quantenrauschen zur Verfügung, um realistische Quantenfehler zu simulieren, welche während der Ausführung auf echten Geräten auftreten.

Qiskit Aer enthält drei hochperformante Simulator-Backends:

  • QasmSimulator

    Allows ideal and noisy multi-shot execution of qiskit circuits and returns counts or memory. There are multiple methods that can be used that simulate different circuits more efficiently. These include:

    1. statevector - Verwendet eine Zustandsvektor-Simulation.

    2. stabilizer - Verwendet eine „Clifford stabilizer“ Zustandssimulator welcher nur für Clifford-Schaltkreise und Rauschmodelle funktioniert.

    3. extended_stabilizer - Verwendet einen approximierenden Simulator, welcher den Schaltkreis in Stabilisator-Zustände zerlegt, welche mit der Anzahl an Nicht-Clifford Gattern anwachsen.

    4. matrix_product_state - Verwendet einen „Matrix Product State“ (MPS) Simulator.

  • StatevectorSimulator

    Erlaubt die ideale, einfache Ausführung eines Qiskit Schaltkreises und gibt den finalen Zustandsvektor nach der Ausführung der Simulation zurück.

  • UnitarySimulator

    Erlaubt die ideale, einfache Ausführung eines Qiskit Schaltkreises und gibt die finale unitäre Matrix des Schaltkreises zurück. Hierbei darf der Schaltkreis keine Messung oder Reset Operation enthalten.

Ignis

Ignis, das Element „Feuer“, ist bestimmt Quanten-rauschen und -fehler zu bekämpfen und einen neuen Pfad zu schmieden. Das beinhaltet die bessere Charakterisierung von Fehlern, das Verbessern von Gattern und Berechnungen unter dem Einfluss von Quantenrauschen. Ignis ist für diejenigen gedacht, welche Codes zur Quantenfehlerkorrektur gestalten wollen, Möglichkeiten zur besseren Charakterisierung von Quantenfehlern entdecken (etwa durch Tomographie) oder sogar einen besseren Weg zur Verwendung von Gattern finden, indem sie dynamische Entkopplung und optimale Kontrolle erforschen.

Ignis stellt Code zur Verfügung, welcher es Nutzern erlaubt, auf einfache Weise Schaltkreise für spezifische Experimente mit einem minimalen Set an Eingabeparametern zu erstellen. Ignis enthält drei grundlegende Bausteine:

Circuits

Das „circuits“ Modul stellt den Code zur Verfügung, um eine Liste von Schaltkreisen für ein bestimmtes Ignis-Experiment basierend auf einem minimalen Set an Eingabeparametern zu erstellen. Diese werden dann auf Terra oder Aer ausgeführt.

Fitters

Das Ergebnis eines Ignis-Experiments wird dann an das Korrektur-Modul („Fitters“) weitergegeben, wo es analysiert und nach dem zugrunde liegenden physikalischen Modell angepasst wird. Fitters können die Daten aufzeichnen und korrigieren und eine Liste von Parametern ausgeben.

Filters

Für bestimmte Ignis-Experimente können Fitter ein Filterobjekt ausgeben. Filter können verwendet werden, um Fehler in anderen Experimenten mit Hilfe der Kalibrierungsergebnisse eines Ignis-Experiments zu korrigieren.

Qiskit Ignis ist in drei Arten von durchführbaren Experimenten aufgeteilt:

  • qiskit.ignis.characterization Characterization experiments are designed to measure parameters in the system such as noise parameters (T1, T2-star, T2), Hamiltonian parameters such as the ZZ interaction rate and control errors in the gates.

  • qiskit.ignis.verification Verification experiments are designed to verify gate and small circuit performance. Verification includes state and process tomography, quantum volume and randomized benchmarking (RB). These experiments provide the information to determine performance metrics such as the gate fidelity.

  • qiskit.ignis.mitigation Mitigation experiments run calibration circuits that are analyzed to generate mitigation routines that can be applied to arbitrary sets of results run on the same backend. Ignis code will generate a list of circuits that run calibration measurements. The results of these measurements will be processed by a Fitter and will output a Filter than can be used to apply mitigation to other results.

Aqua

Aqua, das Element „Wasser“, ist das Element des Lebens. Um den Erwartungen an Quantencomputern gerecht zu werden, müssen wir Anwendungen in der realen Welt finden. In Aqua werden Algorithmen für Quantencomputer gebaut. Diese Algorithmen können verwendet werden, um Anwendungen für Quantencomputer zu bauen. Aqua ist zugänglich für Experten aus den Bereichen Chemie, Optimierung, Finanzwesen und Künstlicher Intelligenz, welche die Vorteile von Quantencomputern zur Beschleunigung von spezifischen, rechenaufwändigen Aufgaben entdecken wollen.

Problemstellungen, welche von dem Potential des Quantencomputing profitieren können, wurden in verschiedenen Bereichen identifiziert, wie beispielsweise Chemie, Künstliche Intelligenz (KI), Optimierung und dem Finanzwesen. Quantencomputing benötigt jedoch sehr spezialisierte Fähigkeiten. Um den Bedürfnissen aller, die Quantencomputing einsetzen und zu ihr auf den verschiedenen Ebenen des Software Stacks beitragen wollen, gerecht zur werden, wurde Qiskit Aqua geschaffen.