Construisez votre premier circuit - 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.

Construisez votre premier circuit

Une fois votre instance de bloc-notes lancée, ouvrez-la avec une interface Jupyter standard en choisissant le bloc-notes que vous venez de créer.

Interface de blocs-notes affichant une instance de bloc-notes existante nommée amazon-braket-test avec son statut InService et son URL.

Les instances du bloc-notes Amazon Braket sont préinstallées avec le SDK Amazon Braket et toutes ses dépendances. Commencez par créer un nouveau bloc-notes avec conda_braket le noyau.

Interface de lancement pour les ordinateurs portables, la console et d'autres outils tels que le terminal, le fichier texte, le fichier Markdown, le fichier Python, avec l'environnement Python conda_braket mis en évidence.

Vous pouvez commencer par un simple « Bonjour tout le monde ! » exemple. Construisez d'abord un circuit qui prépare un état de Bell, puis exécutez ce circuit sur différents appareils pour obtenir les résultats.

Commencez par importer les modules du SDK Amazon Braket et définissez un circuit Bell State simple.

import boto3 from braket.aws import AwsDevice from braket.devices import LocalSimulator from braket.circuits import Circuit # Create the circuit bell = Circuit().h(0).cnot(0, 1)

Vous pouvez visualiser le circuit avec cette commande :

print(bell)
T : │ 0 │ 1 │ ┌───┐ q0 : ─┤ H ├───●─── └───┘ │ ┌─┴─┐ q1 : ───────┤ X ├─ └───┘ T : │ 0 │ 1 │

Exécutez votre circuit sur le simulateur local

Ensuite, choisissez le dispositif quantique sur lequel exécuter le circuit. Le SDK Amazon Braket est fourni avec un simulateur local pour le prototypage et les tests rapides. Nous vous recommandons d'utiliser le simulateur local pour les circuits plus petits, qui peuvent atteindre 25 qubits (selon votre matériel local).

Voici comment instancier le simulateur local :

# Instantiate the local simulator local_sim = LocalSimulator()

et lancez le circuit :

# Run the circuit result = local_sim.run(bell, shots=1000).result() counts = result.measurement_counts print(counts)

Vous devriez voir un résultat semblable à celui-ci :

Counter({'11': 503, '00': 497})

L'état de Bell spécifique que vous avez préparé est une superposition égale de |00⟩ et |11⟩, et vous trouverez une distribution à peu près égale (jusqu'au shot bruit) de 00 et 11 comme résultats de mesure, comme prévu.

Exécutez votre circuit sur un simulateur à la demande

Amazon Braket donne également accès à un simulateur haute performance à la demandeSV1, pour exécuter de plus grands circuits. SV1est un simulateur vectoriel d'état à la demande qui permet de simuler des circuits quantiques allant jusqu'à 34qubits. Vous trouverez plus d'informations SV1 dans la section Appareils pris en charge et dans la AWS console. Lorsque vous exécutez des tâches quantiques sur SV1 (et sur TN1 ou sur n'importe quel QPU), les résultats de votre tâche quantique sont stockés dans un compartiment S3 de votre compte. Si vous ne spécifiez aucun compartiment, le SDK Braket crée un compartiment par défaut amazon-braket-{region}-{accountID} pour vous. Pour en savoir plus, consultez Gérer l'accès à Amazon Braket.

Note

Entrez le nom de votre bucket actuel, là où l'exemple suivant l'indique amazon-braket-s3-demo-bucket comme nom de compartiment. Les noms des compartiments pour Amazon Braket commencent amazon-braket- toujours par les autres caractères d'identification que vous ajoutez. Si vous avez besoin d'informations sur la configuration d'un compartiment S3, consultez Getting started with Amazon S3.

# Get the account ID aws_account_id = boto3.client("sts").get_caller_identity()["Account"] # The name of the bucket my_bucket = "amazon-braket-s3-demo-bucket" # The name of the folder in the bucket my_prefix = "simulation-output" s3_folder = (my_bucket, my_prefix)

Pour exécuter un circuitSV1, vous devez fournir l'emplacement du compartiment S3 que vous avez précédemment sélectionné comme argument positionnel dans l'.run()appel.

# Choose the cloud-based on-demand simulator to run your circuit device = AwsDevice("arn:aws:braket:::device/quantum-simulator/amazon/sv1") # Run the circuit task = device.run(bell, s3_folder, shots=100) # Display the results print(task.result().measurement_counts)

La console Amazon Braket fournit des informations supplémentaires sur votre tâche quantique. Accédez à l'onglet Quantum Tasks de la console et votre tâche quantique devrait figurer en haut de la liste. Vous pouvez également rechercher votre tâche quantique à l'aide de l'identifiant unique de la tâche quantique ou d'autres critères.

Note

Au bout de 90 jours, Amazon Braket supprime automatiquement toutes les tâches quantiques IDs et autres métadonnées associées à vos tâches quantiques. Pour plus d'informations, consultez la section Conservation des données.

Exécution sur un QPU

Avec Amazon Braket, vous pouvez exécuter l'exemple de circuit quantique précédent sur un ordinateur quantique physique en modifiant simplement une seule ligne de code. Amazon Braket permet d'accéder aux QPU appareils depuisIonQ, IQMQuEra, et. Rigetti Vous trouverez des informations sur les différents appareils et les fenêtres de disponibilité dans la section Appareils pris en charge et dans la AWS console sous l'onglet Appareils. L'exemple suivant montre comment instancier un IQM appareil.

# Choose the IQM hardware to run your circuit device = AwsDevice("arn:aws:braket:eu-north-1::device/qpu/iqm/Garnet")

Ou choisissez un IonQ appareil avec ce code :

# Choose the Ionq device to run your circuit device = AwsDevice("arn:aws:braket:us-east-1::device/qpu/ionq/Aria-1")

Après avoir sélectionné un appareil et avant d'exécuter votre charge de travail, vous pouvez demander la profondeur de la file d'attente des appareils à l'aide du code suivant pour déterminer le nombre de tâches quantiques ou de tâches hybrides. En outre, les clients peuvent consulter la profondeur des files d'attente spécifiques aux appareils sur la page Appareils duAmazon Braket Management Console.

# Print your queue depth print(device.queue_depth().quantum_tasks) # Returns the number of quantum tasks queued on the device # {<QueueType.NORMAL: 'Normal'>: '0', <QueueType.PRIORITY: 'Priority'>: '0'} print(device.queue_depth().jobs) # Returns the number of hybrid jobs queued on the device # '2'

Lorsque vous exécutez votre tâche, le SDK Amazon Braket interroge pour obtenir un résultat (avec un délai d'expiration par défaut de 5 jours). Vous pouvez modifier cette valeur par défaut en modifiant le poll_timeout_seconds paramètre dans la .run() commande, comme indiqué dans l'exemple suivant. N'oubliez pas que si votre délai d'interrogation est trop court, les résultats risquent de ne pas être renvoyés dans le délai imparti, par exemple lorsqu'un QPU n'est pas disponible et qu'une erreur de temporisation locale est renvoyée. Vous pouvez relancer le sondage en appelant la task.result() fonction.

# Define quantum task with 1 day polling timeout task = device.run(bell, s3_folder, poll_timeout_seconds=24*60*60) print(task.result().measurement_counts)

De plus, après avoir soumis votre tâche quantique ou votre tâche hybride, vous pouvez appeler la queue_position() fonction pour vérifier votre position dans la file d'attente.

print(task.queue_position().queue_position) # Return the number of quantum tasks queued ahead of you # '2'