高级日志 - Amazon Braket

通过以下方式学习量子计算的基础 AWS!注册 Amazon Braket 数字学习计划,完成一系列学习课程和数字评估后,即可获得自己的数字徽章。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

高级日志

您可以使用记录器记录整个任务处理过程。这些高级日志记录技术允许您查看后台轮询并创建记录以供日后调试。

要使用记录器,我们建议更改poll_timeout_secondspoll_interval_seconds参数,以便量子任务可以长时间运行,持续记录量子任务状态,并将结果保存到文件中。您可以将此代码传输到 Python 脚本而不是 Jupyter 笔记本,这样该脚本就可以在后台作为进程运行。

配置记录器

首先,配置记录器,使所有日志自动写入文本文件,如以下示例行所示。

# 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

创建并运行电路

现在,你可以创建一个电路,将其提交给设备运行,然后看看会发生什么,如本例所示。

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

检查日志文件

您可以通过输入以下命令来检查文件中写入的内容。

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

从日志文件中获取 ARN

从返回的日志文件输出中(如前面的示例所示),您可以获取 ARN 信息。使用 ARN ID,您可以检索已完成的量子任务的结果。

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