Exécution de tâches quantiques lors d'une réservation - Amazon Braket

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exécution de tâches quantiques lors d'une réservation

Après avoir obtenu une réservation valide ARN via Créer une réservation, vous pouvez créer des tâches quantiques à exécuter pendant la réservation. Ces tâches restent inchangées jusqu'QUEUEDau début de votre réservation.

Note

Les réservations sont spécifiques au AWS compte et à l'appareil. Seul le AWS compte qui a créé la réservation peut utiliser votre réservationARN.

Note

Il n'y a aucune visibilité dans la file d'attente pour les tâches et les tâches soumises avec une réservation, ARN car seules vos tâches sont exécutées pendant votre réservation.

Vous pouvez créer des tâches quantiques en utilisant Python SDKs tels que Braket, Qiskit, PennyLane, ou directement avec boto3 (utilisation de Boto3). Pour utiliser les réservations, vous devez disposer de la version v1.79.0 ou supérieure d'Amazon Braket Python SDK. Vous pouvez effectuer la mise à jour vers la dernière version de BraketSDK, Qiskit fournisseur et PennyLane plugin avec le code suivant.

pip install --upgrade amazon-braket-sdk amazon-braket-pennylane-plugin qiskit-braket-provider

Exécuter des tâches avec le gestionnaire de DirectReservation contexte

La méthode recommandée pour exécuter une tâche dans le cadre de votre réservation planifiée consiste à utiliser le gestionnaire de DirectReservation contexte. En spécifiant votre appareil cible et votre réservationARN, le gestionnaire de contexte garantit que toutes les tâches créées dans l'withinstruction Python sont exécutées avec un accès exclusif à l'appareil.

Définissez d'abord un circuit quantique et le dispositif. Utilisez ensuite le contexte de réservation et exécutez la tâche.

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)

Vous pouvez créer des tâches quantiques dans une réservation en utilisant PennyLane and Qiskit plugins, tant que le DirectReservation contexte est actif lors de la création de tâches quantiques. Par exemple, avec le Qiskit-Braket fournisseur, vous pouvez exécuter des tâches comme suit.

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)

De même, le code suivant exécute un circuit lors d'une réservation à l'aide du Braket-PennyLane .

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()

Configuration manuelle du contexte de réservation

Vous pouvez également définir manuellement le contexte de réservation à l'aide du code suivant.

# set reservation context reservation = DirectReservation(device, reservation_arn="<my_reservation_arn>").start() # run circuit during reservation task = device.run(bell, shots=100)

C'est idéal pour les blocs-notes Jupyter où le contexte peut être exécuté dans la première cellule et où toutes les tâches suivantes seront exécutées dans la réservation.

Note

La cellule contenant l'.start()appel ne doit être exécutée qu'une seule fois.

Pour revenir au mode à la demande : redémarrez le bloc-notes Jupyter ou appelez le numéro suivant pour revenir au mode à la demande.

reservation.stop() # unset reservation context
Note

Les réservations ont une heure de début et de fin planifiée (voir Création d'une réservation). Les reservation.stop() méthodes reservation.start() et ne commencent ni ne terminent une réservation. Il s'agit de méthodes permettant de modifier toutes les tâches quantiques ultérieures à exécuter lors de la réservation. Ces méthodes n'ont aucun effet sur l'heure de réservation prévue.

Transmettre explicitement la réservation ARN lors de la création de la tâche

Une autre façon de créer des tâches lors d'une réservation consiste à passer explicitement la réservation ARN lors de l'appeldevice.run().

task = device.run(bell, shots=100, reservation_arn="<my_reservation_arn>")

Cette méthode associe directement la tâche quantique à la réservationARN, garantissant ainsi son exécution pendant la période réservée. Pour cette option, ajoutez la réservation ARN à chaque tâche que vous prévoyez d'exécuter pendant une réservation. Vérifiez également que les tâches créées dans Qiskit or PennyLane utilisent la bonne réservationARN. En raison de ces considérations supplémentaires, les deux méthodes précédentes sont recommandées.

Lorsque vous utilisez directement boto3, transmettez la réservation en ARN tant qu'association lors de la création d'une tâche.

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)