View a markdown version of this page

Erweiterte Protokollierung mit Amazon Braket - Amazon Braket

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erweiterte Protokollierung mit Amazon Braket

Sie können den gesamten Prozess der Aufgabenverarbeitung mit einem Logger aufzeichnen. Diese fortgeschrittenen Protokollierungstechniken ermöglichen es Ihnen, die Hintergrundabfrage zu sehen und einen Datensatz für das spätere Debuggen zu erstellen.

Um den Logger zu verwenden, empfehlen wir, die poll_interval_seconds Parameter poll_timeout_seconds und zu ändern, sodass eine Quantenaufgabe lange andauern kann und der Status der Quantenaufgabe kontinuierlich protokolliert und die Ergebnisse in einer Datei gespeichert werden. Sie können diesen Code in ein Python-Skript statt in ein Jupyter-Notebook übertragen, sodass das Skript als Prozess im Hintergrund ausgeführt werden kann.

Konfigurieren Sie den Logger

Konfigurieren Sie zunächst den Logger so, dass alle Protokolle automatisch in eine Textdatei geschrieben werden, wie in den folgenden Beispielzeilen gezeigt.

# 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

Erstellen Sie die Schaltung und führen Sie sie aus

Jetzt können Sie eine Schaltung erstellen, sie zur Ausführung an ein Gerät senden und sehen, was passiert, wie in diesem Beispiel gezeigt.

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

Prüfen Sie die Protokolldatei

Sie können überprüfen, was in die Datei geschrieben wurde, indem Sie den folgenden Befehl eingeben.

# 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})

Holen Sie sich den ARN aus der Protokolldatei

Aus der zurückgegebenen Protokolldateiausgabe können Sie, wie im vorherigen Beispiel gezeigt, die ARN-Informationen abrufen. Mit der ARN-ID können Sie das Ergebnis der abgeschlossenen Quantenaufgabe abrufen.

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