Journalisation avancée avec Amazon Braket - 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.

Journalisation avancée avec Amazon Braket

Vous pouvez enregistrer l'ensemble du processus de traitement des tâches à l'aide d'un enregistreur. Ces techniques de journalisation avancées vous permettent de voir le sondage en arrière-plan et de créer un enregistrement pour un débogage ultérieur.

Pour utiliser l'enregistreur, nous vous recommandons de modifier les poll_interval_seconds paramètres poll_timeout_seconds et afin qu'une tâche quantique puisse être longue et que l'état de la tâche quantique soit enregistré en permanence, les résultats étant enregistrés dans un fichier. Vous pouvez transférer ce code vers un script Python plutôt que vers un bloc-notes Jupyter, afin que le script puisse s'exécuter en tant que processus en arrière-plan.

Configuration de l'enregistreur

Tout d'abord, configurez l'enregistreur de manière à ce que tous les journaux soient automatiquement écrits dans un fichier texte, comme indiqué dans les exemples de lignes suivants.

# import the module import logging from datetime import datetime # set filename for logs log_file = 'device_logs-'+datetime.strftime(datetime.now(), '%Y%m%d%H%M%S')+'.txt' print('Task info will be logged in:', log_file) # create new logger object logger = logging.getLogger("newLogger") # configure to log to file device_logs.txt in the appending mode logger.addHandler(logging.FileHandler(filename=log_file, mode='a')) # add to file all log messages with level DEBUG or above logger.setLevel(logging.DEBUG)
Task info will be logged in: device_logs-20200803203309.txt

Créez et exécutez le circuit

Vous pouvez maintenant créer un circuit, le soumettre à un appareil pour qu'il fonctionne et voir ce qui se passe, comme indiqué dans cet exemple.

# define circuit circ_log = Circuit().rx(0, 0.15).ry(1, 0.2).rz(2, 0.25).h(3).cnot(control=0, target=2).zz(1, 3, 0.15).x(4) print(circ_log) # define backend device = AwsDevice("arn:aws:braket:::device/quantum-simulator/amazon/sv1") # define what info to log logger.info( device.run(circ_log, s3_location, poll_timeout_seconds=1200, poll_interval_seconds=0.25, logger=logger, shots=1000) .result().measurement_counts )

Vérifiez le fichier journal

Vous pouvez vérifier ce qui est écrit dans le fichier en saisissant la commande suivante.

# print logs ! cat {log_file}
Task arn:aws:braket:us-west-2:123412341234:quantum-task/5088ec6c-89cf-4338-9750-9f5bb12a0dc4: start polling for completion Task arn:aws:braket:us-west-2:123412341234:quantum-task/5088ec6c-89cf-4338-9750-9f5bb12a0dc4: task status CREATED Task arn:aws:braket:us-west-2:123412341234:quantum-task/5088ec6c-89cf-4338-9750-9f5bb12a0dc4: task status CREATED Task arn:aws:braket:us-west-2:123412341234:quantum-task/5088ec6c-89cf-4338-9750-9f5bb12a0dc4: task status QUEUED Task arn:aws:braket:us-west-2:123412341234:quantum-task/5088ec6c-89cf-4338-9750-9f5bb12a0dc4: task status RUNNING Task arn:aws:braket:us-west-2:123412341234:quantum-task/5088ec6c-89cf-4338-9750-9f5bb12a0dc4: task status RUNNING Task arn:aws:braket:us-west-2:123412341234:quantum-task/5088ec6c-89cf-4338-9750-9f5bb12a0dc4: task status COMPLETED Counter({'00001': 493, '00011': 493, '01001': 5, '10111': 4, '01011': 3, '10101': 2})

Récupérez le ARN depuis le fichier journal

À partir de la sortie du fichier journal renvoyée, comme indiqué dans l'exemple précédent, vous pouvez obtenir les ARN informations. Avec l'ARNID, vous pouvez récupérer le résultat de la tâche quantique terminée.

# parse log file for arn with open(log_file) as openfile: for line in openfile: for part in line.split(): if "arn:" in part: arn = part break # remove final semicolon in logs arn = arn[:-1] # with this arn you can restore again task from unique arn task_load = AwsQuantumTask(arn=arn, aws_session=AwsSession()) # get results of task result = task_load.result()