Acasă/SDK-uri/Amazon Braket
🟠

Amazon Braket

Serviciu de calcul cuantic gestionat de AWS. Simulator local gratuit, simulatoare cloud (SV1, DM1, TN1) și acces la QPU-uri reale de la IonQ, Rigetti și Oxford Quantum Circuits.

Gestionat de AWSLocal gratuitSim cloudQPU real

Ce este Amazon Braket?

Amazon Braket este un serviciu de calcul cuantic complet gestionat care îți permite să explorezi și să experimentezi cu calculatoare cuantice de la mai mulți furnizori — totul printr-un SDK Python consecvent. Simulatorul local este complet gratuit. Simulatoarele cloud percep o taxă mică pe sarcină. Tragerile pe QPU real sunt tarifate per tragere.

Simulator local
Rulează pe mașina ta
Gratuit pentru totdeauna
Simulatoare cloud
SV1, DM1, TN1
~0,075 $/sarcină + calcul
QPU real
Hardware IonQ, OQC
0,01–0,90 $/tragere

Instalare și configurare

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_secret

Simulator local gratuit

Simulatorul LocalSimulator este complet gratuit, rulează pe mașina ta și nu necesită un cont AWS.

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}

Circuite parametrice

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}")

Simulatoare cloud (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)

Hardware QPU real

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