Construye tu primer circuito - 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.

Construye tu primer circuito

Una vez lanzada la instancia de tu bloc de notas, ábrela con una interfaz Jupyter estándar. Para ello, selecciona el bloc de notas que acabas de crear.

Interfaz de bloc de notas que muestra una instancia de bloc de notas existente amazon-braket-test con el nombre de estado y su estado InService . URL

Las instancias de bloc de notas Amazon Braket vienen preinstaladas con Amazon Braket SDK y todas sus dependencias. Comience por crear un nuevo bloc de notas con núcleo. conda_braket

Interfaz de inicio para cuadernos, consolas y otras herramientas como Terminal, Archivo de texto, Archivo Markdown, Archivo Python, con el entorno Python conda_braket resaltado.

Puedes empezar con un simple «¡Hola, mundo!» ejemplo. Primero, construya un circuito que prepare un estado de Bell y, a continuación, ejecute ese circuito en diferentes dispositivos para obtener los resultados.

Comience importando los SDK módulos Amazon Braket y definiendo un circuito Bell State simple.

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)

Puede visualizar el circuito con este comando:

print(bell)

Ejecute su circuito en el simulador local

A continuación, elija el dispositivo cuántico en el que ejecutar el circuito. El Amazon Braket SDK viene con un simulador local para la creación rápida de prototipos y pruebas. Recomendamos utilizar el simulador local para circuitos más pequeños, que pueden ser de hasta 25 qubits (en función del hardware local).

A continuación, se explica cómo crear una instancia del simulador local:

# instantiate the local simulator local_sim = LocalSimulator()

y ejecuta el circuito:

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

Deberías ver un resultado parecido a este:

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

El estado específico de Bell que has preparado es una superposición igual de |00> y |11>, y encontrarás un estado aproximadamente igual (hasta shot una distribución de ruido (ruido) de 0 y 11 como resultados de medición, tal como se esperaba.

Ejecute su circuito en un simulador bajo demanda

Amazon Braket también proporciona acceso a un simulador de alto rendimiento bajo demanda, SV1, para hacer funcionar circuitos más grandes. SV1 es un simulador de vectores de estado bajo demanda que permite simular circuitos cuánticos de hasta 34 qubits. Puede encontrar más información en SV1 en la sección Dispositivos compatibles y en la AWS console. Al ejecutar tareas cuánticas en SV1 (y así sucesivamente TN1 o cualquieraQPU), los resultados de su tarea cuántica se almacenan en un depósito de S3 en su cuenta. Si no especificas un depósito, Braket SDK crea un depósito predeterminado amazon-braket-{region}-{accountID} para ti. Para obtener más información, consulta Administrar el acceso a Amazon Braket.

nota

Escribe el nombre de tu bucket actual, donde aparece el siguiente ejemplo example-bucket como nombre de tu bucket. Nombres de cubos para Amazon Los braket siempre comienzan por amazon-braket- seguido de otros caracteres identificativos que añada. Si necesita información sobre cómo configurar un bucket de S3, consulte Introducción a 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 ejecutar un circuito en SV1, debe proporcionar la ubicación del depósito de S3 que seleccionó previamente como argumento posicional en la .run() llamada.

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

La consola Amazon Braket proporciona más información sobre su tarea cuántica. Vaya a la pestaña Quantum Tasks de la consola y su tarea cuántica debería estar en la parte superior de la lista. Como alternativa, puedes buscar tu tarea cuántica utilizando el identificador único de la tarea cuántica u otros criterios.

nota

Transcurridos 90 días, Amazon Braket elimina automáticamente todas las tareas cuánticas IDs y otros metadatos asociados a sus tareas cuánticas. Para obtener más información, consulte Retención de datos.

Se ejecuta en un QPU

Con Amazon Braket, puede ejecutar el ejemplo anterior de circuito cuántico en un ordenador cuántico físico simplemente cambiando una línea de código. Amazon Braket proporciona acceso a QPU dispositivos de IonQ, IQM, QuEra, y Rigetti. Puedes encontrar información sobre los distintos dispositivos y las ventanas de disponibilidad en la sección Dispositivos compatibles y en la AWS consola en la pestaña Dispositivos. En el siguiente ejemplo, se muestra cómo crear una instancia de IQM dispositivo.

# choose the IQM hardware to run your circuit device = AwsDevice("arn:aws:braket:eu-north-1::device/qpu/iqm/Garnet")

O elige un IonQ dispositivo con este código:

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

Tras seleccionar un dispositivo y antes de ejecutar la carga de trabajo, puede consultar la profundidad de la cola del dispositivo con el siguiente código para determinar el número de tareas cuánticas o híbridas. Además, los clientes pueden ver las profundidades de las colas específicas de cada dispositivo en la página Dispositivos del 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

Cuando ejecutas tu tarea, Amazon Braket SDK sondea para obtener un resultado (con un tiempo de espera predeterminado de 5 días). Puede cambiar este valor predeterminado modificando el poll_timeout_seconds parámetro en el .run() comando, tal y como se muestra en el siguiente ejemplo. Tenga en cuenta que si el tiempo de espera de la votación es demasiado corto, es posible que los resultados no se devuelvan dentro del tiempo de votación, por ejemplo, cuando a no QPU está disponible y se devuelve un error de tiempo de espera local. Puede reiniciar el sondeo llamando a la task.result() función.

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

Además, después de enviar su tarea cuántica o híbrida, puede llamar a la queue_position() función para comprobar su posición en la cola.

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