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 con Amazon Braket
Puede registrar todo el proceso de procesamiento de tareas utilizando un registrador. Estas técnicas de registro avanzadas permiten ver el sondeo en segundo plano y crear un registro para su posterior depuración.
Para utilizar el registrador, recomendamos cambiar los parámetros poll_timeout_seconds y poll_interval_seconds, de modo que una tarea cuántica pueda ejecutarse durante mucho tiempo y el estado de la tarea cuántica se registre de forma continua de forma que 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.
Configuración del registrador
En primer lugar, configure el registrador para que todos los registros se escriban automáticamente en un archivo de texto, tal y 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
Creación y ejecución del circuito
Ahora puede crear un circuito, enviarlo a un dispositivo para que lo ejecute y ver qué sucede, tal y 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 )
Comprobación del archivo de registro
Puede comprobar lo que está escrito en el archivo mediante 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})
Obtención del ARN a partir del archivo de registro
A partir de la salida 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()