Zum Hauptinhalt springen
Dieses Projekt befindet sich in der Beta-Phase. Einen Fehler gefunden? GitHub Issue erstellen. Frage oder Idee? In Discussions fragen — wir freuen uns über dein Feedback!
Wie ist die Übersetzungsqualität auf dieser Seite?

Den richtigen Ausführungsmodus wählen

Utility-Scale-Workloads können viele Stunden zur Fertigstellung benötigen, daher ist es wichtig, dass sowohl die klassischen als auch die Quanten-Ressourcen effizient geplant werden, um die Ausführung zu optimieren. Ausführungsmodi bieten Flexibilität beim Ausgleich des Kosten- und Zeit-Trade-offs, um Ressourcen optimal für deine Workloads zu nutzen. Es gibt mehrere Aspekte zu berücksichtigen, wenn du wählst, welchen Ausführungsmodus du verwenden möchtest, wie z. B. die Gesamtausführungszeit (maximale Lebensdauer oder TTL) und die Zeit zwischen Jobs (interaktive TTL).

Die Vorteile jedes Modus sind unten zusammengefasst:

  • Batch

    • Der gesamte Batch von Jobs wird zusammen geplant, und es gibt keine zusätzliche Warteschlangenzeit für jeden einzelnen.

    • Die klassische Berechnung der Jobs, wie z. B. die Kompilierung, wird parallel ausgeführt. Daher ist das Ausführen mehrerer Jobs in einem Batch erheblich schneller als das serielle Ausführen.

    • Zwischen den Jobs gibt es meist nur eine minimale Verzögerung, was helfen kann, Drift zu vermeiden.

    • Wenn du deine Workload in mehrere Jobs aufteilst und sie im batch mode ausführst, kannst du Ergebnisse von einzelnen Jobs erhalten, was sie flexibler in der Handhabung macht. Wenn zum Beispiel die Ergebnisse eines Jobs deine Erwartungen nicht erfüllen, kannst du die verbleibenden Jobs abbrechen. Auch wenn ein Job fehlschlägt, kannst du ihn erneut einreichen, anstatt die gesamte Workload erneut auszuführen.

    • Ist im Allgemeinen weniger teuer als Sessions.

  • Session

    • Alle Funktionalitäten aus dem batch mode (jedoch mit erhöhter Nutzung; siehe Workload-Nutzung für weitere Details, wie die Nutzung berechnet wird).

    • Dedizierter und exklusiver Zugriff auf die QPU während des aktiven Session-Fensters.

    • Nützlich für Workloads, die nicht alle Eingaben zu Beginn bereit haben, für iterative Workloads, die klassische Nachbearbeitung erfordern, bevor der nächste ausgeführt werden kann, und für Experimente, die so eng wie möglich zusammen laufen müssen.

  • Job

    • Am einfachsten zu verwenden, wenn du ein kleines Experiment durchführst.

    • Könnte früher als batch mode laufen.

Empfehlungen und Best Practices​

Verwende im Allgemeinen batch mode, es sei denn, du hast Workloads, die nicht alle Eingaben zu Beginn bereit haben.

  • Verwende den Batch-Modus, um mehrere Primitive-Jobs gleichzeitig einzureichen, um die Verarbeitungszeit zu verkürzen.

  • Verwende den Session-Modus für iterative Workloads oder wenn du dedizierten Zugriff auf die QPU benötigst.

  • Verwende immer den Job-Modus, um eine einzelne Primitive-Anfrage einzureichen.

  • Da Sessions im Allgemeinen teurer sind, wird empfohlen, dass du Batch verwendest, wann immer du die zusätzlichen Vorteile von Sessions nicht benötigst.

  • Open-Plan-Benutzer können keine Session-Jobs einreichen.

Um die effizienteste Nutzung der Ausführungsmodi sicherzustellen, werden die folgenden Praktiken empfohlen:

  • Es gibt einen festen Overhead, der mit dem Ausführen eines Jobs verbunden ist. Im Allgemeinen gilt: Wenn jeder deiner Jobs weniger als eine Minute QPU-Zeit verwendet, erwäge, mehrere zu einem größeren Job zu kombinieren (dies gilt für alle Ausführungsmodi). "QPU-Zeit" bezieht sich auf die Zeit, die der QPU-Komplex zur Verarbeitung deines Jobs aufwendet.

  • Wenn jeder deiner Jobs mehr als eine Minute QPU-Zeit verbraucht, oder wenn das Kombinieren von Jobs nicht praktikabel ist, kannst du dennoch mehrere Jobs parallel ausführen. Jeder Job durchläuft sowohl klassische als auch Quantenverarbeitung. Während eine QPU jeweils nur einen Job verarbeiten kann, können bis zu fünf klassische Jobs parallel verarbeitet werden. Du kannst dies nutzen, indem du mehrere Jobs im Batch- oder Session-Ausführungsmodus einreichst.

Die oben genannten sind allgemeine Richtlinien, und du solltest deine Workload anpassen, um das optimale Verhältnis zu finden, insbesondere bei Verwendung von Sessions. Wenn du beispielsweise eine Session verwendest, um exklusiven Zugriff auf ein Backend zu erhalten, erwäge, große Jobs in kleinere aufzuteilen und sie parallel auszuführen. Dies könnte kostengünstiger sein, da es die Wall-Clock-Zeit reduzieren kann.

Beispiele​

Einen variationellen Quantenalgorithmus ausführen​

Das Ausführen eines variationellen Quantenalgorithmus folgt typischerweise diesem Ablauf:

  1. Bereite den Ansatz vor.

  2. Werte die Kostenfunktion auf einer QPU aus.

  3. Nimm das Ergebnis aus dem vorherigen Schritt und übergib es an einen klassischen Optimierer.

  4. Passe die Parameter gemäß der Ausgabe von (3) an und gehe dann zurück zu Schritt (2).

In diesem Fall muss jeder Job, der durch Schritt (2) generiert wird, bei Verwendung von job mode oder batch mode erneut durch die Warteschlange gehen. Dies verlängert die Experimentdauer (Wall-Clock-Zeit) drastisch aufgrund der Warteschlangenzeit. Es könnte auch länger dauern, bis eine Konvergenz aufgrund von Geräte-Drift erreicht wird. Das heißt, jede Iteration soll dir ein besseres Ergebnis liefern, aber Geräte-Drift könnte nachfolgende Ergebnisse schlechter machen.

Wenn du außerdem PEA oder PEC verwendest, kannst du das Rauschmodell einmal lernen und es auf nachfolgende Jobs anwenden, wenn du in einer dedizierten Session läufst. Dies funktioniert normalerweise nicht mit batch mode oder job mode, da das Rauschmodell veraltet sein könnte, bis der nächste Job aus der Warteschlange ist.

Vergleich von Fehlerminderungs-Einstellungen​

Um die Auswirkungen der verfügbaren Fehlerminderungsmethoden zu vergleichen, könntest du diesem Ablauf folgen:

  1. Konstruiere einen Schaltkreis und eine Observable.

  2. Reiche Primitive-Jobs ein, die verschiedene Kombinationen von Fehlerminderungs-Einstellungen verwenden.

  3. Stelle die Ergebnisse dar, um die Auswirkungen der verschiedenen Einstellungen zu beobachten.

In diesem Fall sind alle Jobs (die verwandt, aber unabhängig sind) zu Beginn verfügbar. Wenn du batch mode verwendest, werden sie kollektiv geplant, sodass du nur darauf warten musst, dass sie einmal durch die Warteschlange gehen. Da das Ziel außerdem darin besteht, die Auswirkungen verschiedener Fehlerminderungsmethoden zu vergleichen, ist es vorteilhaft, dass sie so eng wie möglich zusammen laufen. Daher wäre Batch eine gute Wahl. Du könntest diese Jobs in einer Session ausführen, aber da Sessions im Allgemeinen teurer sind, wird empfohlen, dass du Batch verwendest, wann immer du die zusätzliche Funktionalität, die Sessions bieten, nicht benötigst.

Nächste Schritte​