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.
Ausführung von Quantenaufgaben während einer Reservierung
Nachdem Sie einen gültigen Reservierungs-ARN von Create a reservation erhalten haben, können Sie Quantenaufgaben erstellen, die während der Reservierung ausgeführt werden sollen. Diese Aufgaben bleiben so lange bestehenQUEUED
, bis Ihre Reservierung beginnt.
Anmerkung
Reservierungen sind AWS konto- und gerätespezifisch. Nur das AWS Konto, das die Reservierung erstellt hat, kann Ihren Reservierungs-ARN verwenden.
Anmerkung
Für Aufgaben und Jobs, die mit einem Reservierungs-ARN eingereicht wurden, gibt es keine Sichtbarkeit in der Warteschlange, da nur Ihre Aufgaben während Ihrer Reservierung ausgeführt werden.
Sie können Quantenaufgaben Python SDKs beispielsweise mit Braket, QiskitPennyLane
pip install --upgrade amazon-braket-sdk amazon-braket-pennylane-plugin qiskit-braket-provider
Führen Sie Aufgaben mit dem DirectReservation
Kontext-Manager aus
Die empfohlene Methode, eine Aufgabe innerhalb Ihrer geplanten Reservierung auszuführen, ist die Verwendung des DirectReservation
Kontext-Managers. Durch die Angabe Ihres Zielgeräts und des Reservierungs-ARN stellt der Kontext-Manager sicher, dass alle in der with
Python-Anweisung erstellten Aufgaben mit exklusivem Zugriff auf das Gerät ausgeführt werden.
Definieren Sie zunächst einen Quantenschaltkreis und das Gerät. Verwenden Sie dann den Reservierungskontext und führen Sie die Aufgabe aus.
from braket.aws import AwsDevice, DirectReservation from braket.circuits import Circuit from braket.devices import Devices bell = Circuit().h(0).cnot(0, 1) device = AwsDevice(Devices.IonQ.Aria1) # run the circuit in a reservation with DirectReservation(device, reservation_arn="<my_reservation_arn>"): task = device.run(bell, shots=100)
Sie können Quantenaufgaben in einer Reservierung mithilfe von PennyLane Qiskit Plug-ins erstellen, sofern der DirectReservation
Kontext beim Erstellen von Quantenaufgaben aktiv ist. Mit dem Qiskit-Braket Anbieter können Sie Aufgaben beispielsweise wie folgt ausführen.
from braket.devices import Devices from braket.aws import DirectReservation from qiskit import QuantumCircuit from qiskit_braket_provider import BraketProvider qc = QuantumCircuit(2) qc.h(0) qc.cx(0, 1) aria = BraketProvider().get_backend("Aria 1") # run the circuit in a reservation with DirectReservation(Devices.IonQ.Aria1, reservation_arn="<my_reservation_arn>"): aria_task = aria.run(qc, shots=10)
In ähnlicher Weise führt der folgende Code während einer Reservierung mithilfe des Braket-PennyLane Plug-ins eine Verbindung aus.
from braket.devices import Devices from braket.aws import DirectReservation import pennylane as qml dev = qml.device("braket.aws.qubit", device_arn=Devices.IonQ.Aria1.value, wires=2, shots=10) @qml.qnode(dev) def bell_state(): qml.Hadamard(wires=0) qml.CNOT(wires=[0, 1]) return qml.probs(wires=[0, 1]) # run the circuit in a reservation with DirectReservation(Devices.IonQ.Aria1, reservation_arn="<my_reservation_arn>"): probs = bell_state()
Manuelles Einstellen des Reservierungskontextes
Alternativ können Sie den Reservierungskontext mit dem folgenden Code manuell festlegen.
# set reservation context reservation = DirectReservation(device, reservation_arn="<my_reservation_arn>").start() # run circuit during reservation task = device.run(bell, shots=100)
Dies ist ideal für Jupyter-Notebooks, bei denen der Kontext in der ersten Zelle ausgeführt werden kann und alle nachfolgenden Aufgaben in der Reservierung ausgeführt werden.
Anmerkung
Die Zelle, die den .start()
Aufruf enthält, sollte nur einmal ausgeführt werden.
Um zum On-Demand-Modus zurückzukehren: Starten Sie das Jupyter-Notebook neu, oder rufen Sie den folgenden Befehl auf, um den Kontext wieder in den On-Demand-Modus zu ändern.
reservation.stop() # unset reservation context
Anmerkung
Reservierungen haben eine geplante Start- und Endzeit (siehe Reservierung erstellen). Die reservation.stop()
Methoden reservation.start()
und bedeuten weder den Beginn noch das Ende einer Reservierung. Mit diesen Methoden können alle nachfolgenden Quantenaufgaben so geändert werden, dass sie während der Reservierung ausgeführt werden. Diese Methoden haben keine Auswirkung auf die geplante Reservierungszeit.
Übergeben Sie den Reservierungs-ARN beim Erstellen der Aufgabe explizit
Eine andere Möglichkeit, Aufgaben während einer Reservierung zu erstellen, besteht darin, den Reservierungs-ARN beim Anrufen explizit zu übergebendevice.run()
.
task = device.run(bell, shots=100, reservation_arn="<my_reservation_arn>")
Diese Methode verknüpft die Quantenaufgabe direkt mit dem Reservierungs-ARN und stellt so sicher, dass sie während des reservierten Zeitraums ausgeführt wird. Fügen Sie für diese Option den Reservierungs-ARN zu jeder Aufgabe hinzu, die Sie während einer Reservierung ausführen möchten. Überprüfen Sie außerdem, ob Aufgaben, die im richtigen Reservierungs-ARN erstellt wurden Qiskit oder PennyLane diesen verwenden. Aufgrund dieser zusätzlichen Überlegungen werden die beiden vorherigen Methoden empfohlen.
Wenn Sie boto3 direkt verwenden, übergeben Sie den Reservierungs-ARN als Assoziation, wenn Sie eine Aufgabe erstellen.
import boto3 braket_client = boto3.client("braket") kwargs["associations"] = [ { "arn": "<my_reservation_arn>", "type": "RESERVATION_TIME_WINDOW_ARN", } ] response = braket_client.create_quantum_task(**kwargs)