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. Quantenaufgaben und Hybrid-Jobs, die mit einem Reservierungs-ARN eingereicht wurden, werden nicht in einer Gerätewarteschlange angezeigt. Aufgaben, die vor Beginn der Reservierung eingereicht wurden, bleiben so lange QUEUED erhalten, 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.
Während einer Reservierung können sowohl Reservierungen als auch reguläre Aufgaben erstellt werden. Um zu überprüfen, ob eine erstellte Braket-Quantenaufgabe mit einer Reservierung verknüpft ist, überprüfen Sie das Feld „Reservierungs-ARN“ auf der Seite der Quantenaufgabe in der Braket-Konsole oder fragen Sie dasselbe Feld in den Aufgabenmetadaten mithilfe des SDK ab. Im Rest dieser Seite wird beschrieben, wie Sie angeben, welche Aufgaben mit der Reservierung verknüpft sind.
Sie können Quantenaufgaben Python SDKs beispielsweise mit Braket,, CUDA-QPennyLaneQiskit
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. Stellen Sie sicher, dass Ihre gesamte Arbeitslast innerhalb des with Blocks ausgeführt wird. Alles, was außerhalb des Bereichs des with Blocks ausgeführt wird, wird nicht mit Ihrer Reservierung verknüpft!
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 der Qiskit Plug-ins CUDA-QPennyLane, und 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_context = 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_context.stop() # unset reservation context
Anmerkung
Reservierungen haben eine vorab festgelegte Start- und Endzeit (siehe Reservierung erstellen). Die reservation_context.stop() Methoden reservation_context.start() und bedeuten weder den Beginn noch das Ende einer Reservierung. Stattdessen werden alle Quantenaufgaben, die Sie erstellen, Ihrer Reservierung zugeordnet und nur während Ihrer geplanten Reservierung ausgeführt, solange der Kontext aktiv ist. Der Reservierungskontext hat 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. Beachten Sie jedoch, dass es bei der Verwendung von Bibliotheken von Drittanbietern wie Qiskit oder schwierig sein kannPennyLane, sicherzustellen, dass eingereichte Aufgaben den richtigen Reservierungs-ARN verwenden. Aus diesem Grund wird die Verwendung des DirectReservation Kontext-Managers 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)