Batching von Quantenaufgaben - Amazon Braket

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Batching von Quantenaufgaben

Quantum Task Batching ist auf jedem Amazon Braket-Gerät verfügbar, mit Ausnahme des lokalen Simulators. Batching ist besonders nützlich für Quantenaufgaben, die Sie auf den On-Demand-Simulatoren ausführen (TN1 or SV1), weil sie mehrere Quantenaufgaben parallel bearbeiten können. Um Ihnen bei der Einrichtung verschiedener Quantenaufgaben zu helfen, bietet Amazon Braket Beispielnotizbücher.

Durch Batching können Sie Quantenaufgaben parallel starten. Wenn Sie beispielsweise eine Berechnung durchführen möchten, für die 10 Quantenaufgaben erforderlich sind und die Schaltkreise in diesen Quantenaufgaben unabhängig voneinander sind, empfiehlt es sich, Batching zu verwenden. Auf diese Weise müssen Sie nicht warten, bis eine Quantenaufgabe abgeschlossen ist, bevor eine andere Aufgabe beginnt.

Das folgende Beispiel zeigt, wie ein Stapel von Quantenaufgaben ausgeführt wird:

circuits = [bell for _ in range(5)] batch = device.run_batch(circuits, s3_folder, shots=100) print(batch.results()[0].measurement_counts) # The result of the first quantum task in the batch

Weitere Informationen finden Sie in den Amazon Braket-Beispielen zu GitHub Quantum Task Batching, die genauere Informationen zum Batching enthalten.

Informationen zur Batchverarbeitung und zu den Kosten von Quantenaufgaben

Einige Vorbehalte, die Sie in Bezug auf die Batch- und Abrechnungskosten für Quantenaufgaben beachten sollten:

  • Standardmäßig wiederholt die Batchverarbeitung bei Quantenaufgaben die Zeitüberschreitung oder schlägt dreimal fehl.

  • Eine Reihe lang andauernder Quantenaufgaben, wie zum Beispiel 34 qubits for SV1, kann hohe Kosten verursachen. Achten Sie darauf, die run_batch Zuweisungswerte sorgfältig zu überprüfen, bevor Sie mit einer Reihe von Quantenaufgaben beginnen. Wir empfehlen nicht zu verwenden TN1 mitrun_batch.

  • TN1 kann Kosten für fehlgeschlagene Aufgaben in der Probenphase anfallen (weitere Informationen finden Sie in der TN1 Beschreibung). Automatische Wiederholungsversuche können die Kosten in die Höhe treiben. Wir empfehlen daher, die Anzahl der 'max_retries' beim Batching auf 0 zu setzen, wenn TN1 (siehe Quantum Task Batching, Zeile 186).

Batching von Quantenaufgaben und PennyLane

Nutzen Sie die Batching-Funktion, wenn Sie PennyLane Amazon Braket verwenden, indem Sie festlegen, parallel = True wann Sie ein Amazon Braket-Gerät instanziieren, wie im folgenden Beispiel gezeigt.

device = qml.device("braket.aws.qubit",device_arn="arn:aws:braket:::device/quantum-simulator/amazon/sv1",wires=wires,s3_destination_folder=s3_folder,parallel=True,)

Weitere Informationen zur Stapelverarbeitung mit finden Sie unter Parallelisierte Optimierung von PennyLane Quantenschaltkreisen.

Batching von Aufgaben und parametrisierte Schaltungen

Wenn Sie einen Quanten-Task-Batch einreichen, der parametrisierte Schaltungen enthält, können Sie entweder ein inputs Wörterbuch bereitstellen, das für alle Quantenaufgaben im Stapel verwendet wird, oder ein list Eingabewörterbuch, in welchem Fall i das -te Wörterbuch mit i der -ten Aufgabe verknüpft wird, wie im folgenden Beispiel gezeigt.

from braket.circuits import Circuit, FreeParameter, Observable from braket.aws import AwsQuantumTaskBatch # create the free parameters alpha = FreeParameter('alpha') beta = FreeParameter('beta') # create two circuits circ_a = Circuit().rx(0, alpha).ry(1, alpha).cnot(0,2).xx(0, 2, beta) circ_a.variance(observable=Observable.Z(), target=0) circ_b = Circuit().rx(0, alpha).rz(1, alpha).cnot(0,2).zz(0, 2, beta) circ_b.expectation(observable=Observable.Z(), target=2) # use the same inputs for both circuits in one batch tasks = device.run_batch([circ_a, circ_b], inputs={'alpha': 0.1, 'beta':0.2}) # or provide each task its own set of inputs inputs_list = [{'alpha': 0.3,'beta':0.1}, {'alpha': 0.1,'beta':0.4}] tasks = device.run_batch([circ_a, circ_b], inputs=inputs_list)

Sie können auch eine Liste von Eingabewörterbüchern für einen einzelnen parametrischen Schaltkreis erstellen und diese als Quanten-Task-Batch einreichen. Wenn die Liste N Eingabewörterbücher enthält, enthält der Stapel N Quantenaufgaben. Die i -te Quantenaufgabe entspricht der Schaltung, die mit dem i -th Eingabewörterbuch ausgeführt wird.

from braket.circuits import Circuit, FreeParameter # create a parametric circuit circ = Circuit().rx(0, FreeParameter('alpha')) # provide a list of inputs to execute with the circuit inputs_list = [{'alpha': 0.1}, {'alpha': 0.2}, {'alpha': 0.3}] tasks = device.run_batch(circ, inputs=inputs_list)