View a markdown version of this page

Registro em log avançado com o Amazon Braket - Amazon Braket

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Registro em log avançado com o Amazon Braket

Você pode gravar todo o processo de processamento de tarefas usando um registrador. Essas técnicas avançadas de registro permitem que você veja a pesquisa em segundo plano e crie um registro para depuração posterior.

Para usar o registrador, recomendamos alterar os parâmetros poll_interval_seconds e poll_timeout_seconds, para que uma tarefa quântica possa ser demorada e o status da tarefa quântica seja registrado continuamente, com os resultados salvos em um arquivo. Você pode transferir esse código para um script Python em vez de um caderno Jupyter, para que o script possa ser executado como um processo em segundo plano.

Configurar o registrador

Primeiro, configure o registrador para que todos os registros sejam gravados automaticamente em um arquivo de texto, conforme mostrado nas linhas de exemplo a seguir.

# 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

Crie e execute o circuito

Agora você pode criar um circuito, enviá-lo a um dispositivo para execução e ver o que acontece conforme mostrado neste exemplo.

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

Verifique o arquivo de log

Você pode verificar o que está escrito no arquivo inserindo um dos comandos a seguir.

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

Obtenha o ARN do arquivo de log

Da saída do arquivo de log retornada, conforme mostrado no exemplo anterior, você pode obter as informações do ARN. Com o ARN ID, você pode recuperar o resultado da tarefa quântica concluída.

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