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 sonURL.

Les instances du bloc-notes Amazon Braket sont préinstallées avec Amazon Braket SDK 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 SDK modules 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)

Exécutez votre circuit sur le simulateur local

Ensuite, choisissez le dispositif quantique sur lequel exécuter le circuit. L'Amazon Braket SDK est livré avec un simulateur local pour le prototypage et les tests rapides. Nous recommandons d'utiliser le simulateur local pour les circuits plus petits, qui peuvent atteindre 25 qubits (en fonction de 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 un état à peu près égal (jusqu'à shot (bruit), distribution 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 demande, SV1, pour faire fonctionner des circuits plus grands. SV1 est un simulateur vectoriel d'état à la demande qui permet de simuler des circuits quantiques allant jusqu'à 34 qubits. Vous pouvez trouver plus d'informations sur SV1 dans la section Appareils pris en charge et dans le AWS console. Lorsque vous exécutez des tâches quantiques sur SV1 (et ainsi de suite) TN1 ou n'importe lequelQPU), 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 Braket SDK 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 example-bucket comme nom de compartiment. Noms des compartiments pour Amazon Le crochet commence toujours par amazon-braket- suivi des 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 = "example-bucket" # the name of the folder in the bucket my_prefix = "simulation-output" s3_folder = (my_bucket, my_prefix)

Pour exécuter un circuit sur SV1, vous devez indiquer 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.

Courir 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 donne accès à QPU appareils de IonQ, IQM, QuEra, 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 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 à chaque appareil sur la page Appareils du Amazon 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) '2' # returns the number of hybrid jobs queued on the device

Lorsque vous exécutez votre tâche, Amazon Braket SDK 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 le délai d'expiration de votre sondage est trop court, les résultats risquent de ne pas être renvoyés dans le délai imparti, par exemple en cas d'QPUindisponibilité et en cas d'erreur de délai d'expiration locale. 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'