Ejecuta tu primer circuito con el Amazon Braket Python SDK - Amazon Braket

¡Aprenda los fundamentos de la computación cuántica con! AWS Inscríbase en el plan de aprendizaje digital Amazon Braket y obtenga su propia insignia digital tras completar una serie de cursos de aprendizaje y una evaluación digital.

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.

Ejecuta tu primer circuito con el Amazon Braket Python SDK

Una vez lanzada la instancia de bloc de notas, ábrala con una interfaz Jupyter estándar y elija la libreta que acaba de crear.


            página de consola

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


            jupyter abierto

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 módulos del SDK de 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 SDK de Amazon Braket incluye un simulador local para la creación rápida de prototipos y pruebas. Recomendamos usar el simulador local para circuitos más pequeños, que pueden ser de hasta 25 qubits (dependiendo del hardware local).

A continuación, te explicamos 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 de Bell específico que ha preparado es una superposición igual de |00> y |11>, y encontrará una distribución aproximadamente igual (hasta el shot ruido) de 00 y 11 como resultados de medición, como era de esperar.

Ejecute su circuito en un simulador bajo demanda

AmazonBraket también proporciona acceso a un simulador de alto rendimiento bajo demanda para ejecutar circuitos más grandes. SV1 SV1es un simulador de vectores de estado bajo demanda que permite simular circuitos cuánticos de hasta 34. qubits Encontrará más información SV1 en la sección Dispositivos compatibles y en la AWS consola. Cuando ejecutas tareas cuánticas en SV1 (TN1o en cualquier QPU), los resultados de la tarea cuántica se almacenan en un depósito de S3 en tu cuenta. Si no especificas un bucket, el SDK de Braket crea un bucket 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. Los nombres de los cubos de Amazon Braket siempre comienzan con una letra amazon-braket- seguida de los demás caracteres identificativos que añadas. 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 circuitoSV1, 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. Ve a la pestaña Quantum Tasks de la consola y tu 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 todos los identificadores de tareas cuánticas y demás metadatos asociados a tus tareas cuánticas. Para obtener más información, consulte Retención de datos.

Se ejecuta en una 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 desdeIonQ, Oxford Quantum CircuitsQuEra, 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 un Rigetti dispositivo.

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

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/Harmony")

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

Al ejecutar la tarea, el SDK de Amazon Braket 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 del sondeo es demasiado corto, es posible que los resultados no se devuelvan dentro del tiempo de sondeo, por ejemplo, cuando una QPU no está disponible y se devuelve un error de tiempo de espera local. Puede reiniciar el sondeo llamando a la función. task.result()

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