¿Qué es Amazon Braket?
Amazon Braket es un servicio de computación cuántica totalmente gestionado que te permite explorar y experimentar con computadoras cuánticas de múltiples proveedores, todo mediante un SDK de Python coherente. El simulador local es completamente gratuito. Los simuladores en la nube cobran una pequeña tarifa por tarea. Los shots en QPU reales se cobran por shot.
Instalación y configuración
pip install amazon-braket-sdk
# AWS credentials (needed for cloud features)
# Option 1: AWS CLI
aws configure
# Option 2: Environment variables
export AWS_DEFAULT_REGION=us-east-1
export AWS_ACCESS_KEY_ID=your_key
export AWS_SECRET_ACCESS_KEY=your_secretSimulador local gratuito
El LocalSimulator es completamente gratuito, se ejecuta en tu máquina y no necesita una cuenta de AWS.
from braket.circuits import Circuit, FreeParameter
from braket.devices import LocalSimulator
# Free — no AWS credentials needed
device = LocalSimulator()
# Build a Bell state circuit
circuit = Circuit()
circuit.h(0)
circuit.cnot(0, 1)
circuit.probability() # Return outcome probabilities
task = device.run(circuit, shots=0) # shots=0 for exact probabilities
result = task.result()
print(result.values) # [[0.5, 0, 0, 0.5]]
# With sampling (shots)
circuit2 = Circuit().h(0).cnot(0, 1)
task2 = device.run(circuit2, shots=1000)
counts = task2.result().measurement_counts
print(counts) # {'00': ~500, '11': ~500}Circuitos paramétricos
from braket.circuits import Circuit, FreeParameter
from braket.devices import LocalSimulator
# FreeParameters for variational circuits
theta = FreeParameter("theta")
phi = FreeParameter("phi")
circuit = Circuit()
circuit.ry(0, theta)
circuit.ry(1, phi)
circuit.cnot(0, 1)
circuit.expectation(observable=braket.Observable.Z() @ braket.Observable.Z(),
target=[0, 1])
device = LocalSimulator()
# Sweep parameters
import numpy as np
for t in np.linspace(0, 2 * np.pi, 20):
task = device.run(circuit, shots=200, inputs={"theta": t, "phi": 0.5})
result = task.result()
print(f"theta={t:.2f}: {result.values}")Simuladores en la nube (SV1, DM1, TN1)
from braket.aws import AwsDevice
from braket.circuits import Circuit
# SV1 — Statevector simulator (up to 34 qubits)
sv1 = AwsDevice("arn:aws:braket:::device/quantum-simulator/amazon/sv1")
# DM1 — Density matrix with noise (up to 17 qubits)
dm1 = AwsDevice("arn:aws:braket:::device/quantum-simulator/amazon/dm1")
# TN1 — Tensor network (up to 50 qubits, sparse circuits)
tn1 = AwsDevice("arn:aws:braket:::device/quantum-simulator/amazon/tn1")
circuit = Circuit().h(0).cnot(0, 1)
# Note: cloud sims have per-task + compute costs (~$0.075/task)
task = sv1.run(
circuit,
shots=1000,
s3_destination_folder=("your-s3-bucket", "results/")
)
print(task.result().measurement_counts)Hardware de QPU real
Braket QPUs are pay-per-shot — see the free real-hardware options and how Braket compares with IBM Quantum before spending anything.
from braket.aws import AwsDevice
from braket.circuits import Circuit
# IonQ Aria (trapped-ion, ~$0.01/shot)
ionq_device = AwsDevice(
"arn:aws:braket:us-east-1::device/qpu/ionq/Aria-1"
)
# Oxford Quantum Circuits (superconducting)
oqc_device = AwsDevice(
"arn:aws:braket:eu-west-2::device/qpu/oqc/Lucy"
)
circuit = Circuit().h(0).cnot(0, 1)
# Check device availability before submitting
print(ionq_device.status)
print(ionq_device.properties.paradigm.qubitCount)
# Submit (costs apply per shot on real hardware)
task = ionq_device.run(circuit, shots=50)
print(task.result().measurement_counts)Keep exploring
Also available via HLQuantum
Want to run the same circuit on multiple backends without rewriting your code? HLQuantum abstracts this SDK (and 5 others) behind a single unified API.
import hlquantum as hlq
qc = hlq.Circuit(2)
qc.h(0).cx(0, 1).measure_all()
# One line to switch between any backend
result = hlq.run(qc, shots=1024) # auto-detect
result = hlq.run(qc, shots=1024, backend="braket") # explicit