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 un ARN de réservation valide auprès de Create a reservation, vous pouvez créer des tâches quantiques à exécuter pendant la réservation. Les tâches quantiques et hybrides soumises avec un ARN de réservation n'apparaîtront pas dans une file d'attente d'appareils. Les tâches soumises avant l'heure de début de la réservation resteront QUEUED inchangées jusqu'au 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 ARN de réservation.
Lors d'une réservation, il est possible de créer à la fois des tâches de réservation et des tâches régulières. Pour vérifier qu'une tâche quantique Braket créée est associée à une réservation, vérifiez le champ « Reservation ARN » sur la page de la tâche quantique dans la console Braket, ou interrogez le même champ dans les métadonnées de la tâche à l'aide du SDK. Le reste de cette page explique comment spécifier les tâches associées à la réservation.
Vous pouvez créer des tâches quantiques en Python SDKs utilisant Braket,,, CUDA-QPennyLaneQiskit
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 ARN de réservation, 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. Assurez-vous que l'intégralité de votre charge de travail est gérée à l'intérieur du with bloc ; tout ce qui se trouve en dehors du with bloc ne sera pas associé à votre réservation !
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.ForteEnterprise1) # 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 à l'aide de Qiskit plugins CUDA-QPennyLane, et, à condition que le DirectReservation contexte soit 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) qpu = BraketProvider().get_backend("Forte Enterprise 1") # run the circuit in a reservation with DirectReservation(Devices.IonQ.ForteEnterprise1, reservation_arn="<my_reservation_arn>"): qpu_task = qpu.run(qc, shots=10)
De même, le code suivant exécute un circuit lors d'une réservation à l'aide du Braket-PennyLane plugin.
from braket.devices import Devices from braket.aws import DirectReservation import pennylane as qml dev = qml.device("braket.aws.qubit", device_arn=Devices.IonQ.ForteEnterprise1.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.ForteEnterprise1, 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_context = 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_context.stop() # unset reservation context
Note
Les réservations ont une heure de début et de fin prédéterminées (voir Création d'une réservation). Les reservation_context.stop() méthodes reservation_context.start() et ne commencent ni ne terminent une réservation. Au lieu de cela, lorsque le contexte est actif, toutes les tâches quantiques que vous créez seront associées à votre réservation et ne seront exécutées que pendant votre réservation planifiée. Le contexte de réservation n'a aucun effet sur l'heure de réservation prévue.
Transmettez explicitement l'ARN de réservation lors de la création de la tâche
Une autre méthode pour créer des tâches lors d'une réservation consiste à transmettre explicitement l'ARN de la réservation 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 à l'ARN de réservation, garantissant ainsi son exécution pendant la période réservée. Pour cette option, ajoutez l'ARN de réservation à chaque tâche que vous prévoyez d'exécuter lors d'une réservation. Notez toutefois que lorsque vous utilisez des bibliothèques tierces telles que Qiskit ouPennyLane, il peut être difficile de s'assurer que les tâches soumises utilisent le bon ARN de réservation. C'est pourquoi il est recommandé d'utiliser le gestionnaire de DirectReservation contexte.
Lorsque vous utilisez directement boto3, transmettez l'ARN de réservation sous forme d'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)