Registro avanzado - Amazon Braket

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Registro avanzado

Puede grabar todo el proceso de procesamiento de tareas mediante un registrador. Estas técnicas de registro avanzadas le permiten ver el sondeo en segundo plano y crear un registro para su posterior depuración.

Para utilizar el registrador, se recomienda cambiar los poll_interval_seconds parámetros poll_timeout_seconds y, de forma que una tarea cuántica pueda durar mucho tiempo y su estado se registre de forma continua y los resultados se guarden en un archivo. Puede transferir este código a un script de Python en lugar de a un cuaderno de Jupyter, de modo que el script se pueda ejecutar como un proceso en segundo plano.

Configura el registrador

En primer lugar, configure el registrador para que todos los registros se escriban automáticamente en un archivo de texto, como se muestra en las siguientes líneas de ejemplo.

# 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

Cree y ejecute el circuito

Ahora puede crear un circuito, enviarlo a un dispositivo para que lo ejecute y ver qué sucede, como se muestra en este ejemplo.

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

Compruebe el archivo de registro

Puede comprobar lo que está escrito en el archivo introduciendo el siguiente comando.

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

Obtenga el ARN del archivo de registro

A partir del resultado del archivo de registro que se devuelve, como se muestra en el ejemplo anterior, puede obtener la información del ARN. Con el identificador del ARN, puede recuperar el resultado de la tarea cuántica completada.

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