Execute seu primeiro circuito usando o Amazon Braket Python SDK - 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á.

Execute seu primeiro circuito usando o Amazon Braket Python SDK

dica

Aprenda os fundamentos da computação quântica com AWS! Inscreva-se no Amazon Braket Digital Learning Plan e ganhe seu próprio selo digital após concluir uma série de cursos de aprendizado e uma avaliação digital.

Depois que a instância do notebook for iniciada, abra a instância com uma interface Jupyter padrão escolhendo o notebook que você acabou de criar.

Interface de notebooks mostrando uma instância de notebook existente nomeada amazon-braket-test com status InService e sua URL.

AmazonAs instâncias do notebook Braket são pré-instaladas com o SDK do Amazon Braket e todas as suas dependências. Comece criando um novo notebook com o conda_braket kernel.

Interface de inicialização para notebooks, console e outras ferramentas como Terminal, Arquivo de Texto, Arquivo Markdown, Arquivo Python, com o ambiente Python conda_braket destacado.

Você pode começar com um simples “Olá, mundo!” exemplo. Primeiro, construa um circuito que prepare um estado de Bell e, em seguida, execute esse circuito em dispositivos diferentes para obter os resultados.

Comece importando os módulos do SDK do Amazon Braket e definindo um circuito Bell State simples.

import boto3 from braket.aws import AwsDevice from braket.devices import LocalSimulator from braket.circuits import Circuit # create the circuit bell = Circuit().h(0).cnot(0, 1)

Você pode visualizar o circuito com este comando:

print(bell)

Execute seu circuito no simulador local

Em seguida, escolha o dispositivo quântico no qual executar o circuito. O Amazon Braket SDK vem com um simulador local para prototipagem e testes rápidos. Recomendamos usar o simulador local para circuitos menores, que podem ser de até 25 qubits (dependendo do hardware local).

Veja como instanciar o simulador local:

# instantiate the local simulator local_sim = LocalSimulator()

e execute o circuito:

# run the circuit result = local_sim.run(bell, shots=1000).result() counts = result.measurement_counts print(counts)

Você deve ver um resultado mais ou menos assim:

Counter({'11': 503, '00': 497})

O estado de Bell específico que você preparou é uma superposição igual de |00> e |11>, e você encontrará uma distribuição aproximadamente igual (até o shot ruído) de 00 e 11 como resultados de medição, conforme o esperado.

Execute seu circuito em um simulador sob demanda

AmazonO Braket também fornece acesso a um simulador de alto desempenho sob demanda para operar circuitos maioresSV1. SV1é um simulador vetorial de estado sob demanda que permite a simulação de circuitos quânticos de até 34. qubits Você pode encontrar mais informações SV1 na seção Dispositivos compatíveis e no AWS console. Ao executar tarefas quânticas em SV1 (e sobre TN1 ou em qualquer QPU), os resultados de sua tarefa quântica são armazenados em um bucket S3 em sua conta. Se você não especificar um bucket, o SDK do Braket criará um bucket amazon-braket-{region}-{accountID} padrão para você. Para saber mais, consulte Gerenciando o acesso ao Amazon Braket.

nota

Preencha o nome real do bucket existente, onde o exemplo a seguir aparece example-bucket como o nome do bucket. Os nomes de bucket para Amazon Braket sempre começam com, amazon-braket- seguidos por outros caracteres de identificação que você adiciona. Se você precisar de informações sobre como configurar um bucket do S3, consulte Introdução ao Amazon S3.

# get the account ID aws_account_id = boto3.client("sts").get_caller_identity()["Account"] # the name of the bucket my_bucket = "example-bucket" # the name of the folder in the bucket my_prefix = "simulation-output" s3_folder = (my_bucket, my_prefix)

Para executar um circuitoSV1, você deve fornecer a localização do bucket S3 que você selecionou anteriormente como argumento posicional na .run() chamada.

# choose the cloud-based on-demand simulator to run your circuit device = AwsDevice("arn:aws:braket:::device/quantum-simulator/amazon/sv1") # run the circuit task = device.run(bell, s3_folder, shots=100) # display the results print(task.result().measurement_counts)

O console Amazon Braket fornece mais informações sobre sua tarefa quântica. Navegue até a guia Tarefas quânticas no console e sua tarefa quântica deve estar no topo da lista. Como alternativa, você pode pesquisar sua tarefa quântica usando o ID exclusivo da tarefa quântica ou outros critérios.

nota

Após 90 dias, o Amazon Braket remove automaticamente todos os IDs de tarefas quânticas e outros metadados associados às suas tarefas quânticas. Para obter mais informações, consulte Retenção de dados.

Executando em uma QPU

Com o Amazon Braket, você pode executar o exemplo anterior de circuito quântico em um computador quântico físico alterando apenas uma única linha de código. O Amazon Braket fornece acesso QPU a dispositivos IonQ deOxford Quantum Circuits,, e. QuEra Rigetti Você pode encontrar informações sobre os diferentes dispositivos e janelas de disponibilidade na seção Dispositivos compatíveis e no AWS console, na guia Dispositivos. O exemplo a seguir mostra como instanciar um Rigetti dispositivo.

# choose the Rigetti hardware to run your circuit device = AwsDevice("arn:aws:braket:us-west-1::device/qpu/rigetti/Aspen-M-3")

Escolha um IonQ dispositivo com este código:

# choose the Ionq device to run your circuit device = AwsDevice("arn:aws:braket:us-east-1::device/qpu/ionq/Harmony")

Depois de selecionar um dispositivo e antes de executar sua carga de trabalho, você pode consultar a profundidade da fila do dispositivo com o código a seguir para determinar o número de tarefas quânticas ou trabalhos híbridos. Além disso, os clientes podem visualizar as profundidades de fila específicas do dispositivo na página Dispositivos do. Amazon Braket Management Console

# Print your queue depth print(device.queue_depth().quantum_tasks) # returns the number of quantum tasks queued on the device {<QueueType.NORMAL: 'Normal'>: '0', <QueueType.PRIORITY: 'Priority'>: '0'} print(device.queue_depth().jobs) '2' # returns the number of hybrid jobs queued on the device

Quando você executa sua tarefa, o Amazon Braket SDK pesquisa um resultado (com um tempo limite padrão de 5 dias). Você pode alterar esse padrão modificando o poll_timeout_seconds parâmetro no .run() comando, conforme mostrado no exemplo a seguir. Lembre-se de que, se o tempo limite da pesquisa for muito curto, os resultados podem não ser retornados dentro do tempo da pesquisa, como quando uma QPU não está disponível e um erro de tempo limite local é retornado. Você pode reiniciar a pesquisa chamando a task.result() função.

# define quantum task with 1 day polling timeout task = device.run(bell, s3_folder, poll_timeout_seconds=24*60*60) print(task.result().measurement_counts)

Além disso, depois de enviar sua tarefa quântica ou trabalho híbrido, você pode chamar a queue_position() função para verificar a posição da fila.

print(task.queue_position().queue_position) # Return the number of quantum tasks queued ahead of you '2'