What is Amazon Braket?
Amazon Braket is a fully managed quantum computing service that lets you explore and experiment with quantum computers from multiple providers — all through a consistent Python SDK. The local simulator is completely free. Cloud simulators charge a small per-task fee. Real QPU shots are priced per-shot.
Local Simulator
Runs on your machine
Free Forever
Cloud Simulators
SV1, DM1, TN1
~$0.075/task + compute
Real QPU
IonQ, OQC hardware
$0.01–$0.90/shot
Installation & Setup
terminal
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_secretFree Local Simulator
The LocalSimulator is completely free, runs on your machine, and needs no AWS account.
braket_local.py
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}Parametric Circuits
braket_parametric.py
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}")Cloud Simulators (SV1, DM1, TN1)
braket_cloud_sim.py
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)Real QPU Hardware
braket_hardware.py
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)💡
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.
python
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