View a markdown version of this page

使用 Amazon Braket 的進階記錄 - Amazon Braket

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 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()