Skip to content
ホーム/SDK/Amazon Braket
🟠

Amazon Braket

AWSが管理する量子コンピューティングサービス。無料のローカルシミュレータ、クラウドシミュレータ(SV1、DM1、TN1)、そしてIonQ、Rigetti、Oxford Quantum Circuitsの実機QPUへのアクセスを提供します。

AWS管理ローカル無料クラウドシミュレータ実機QPU

Amazon Braketとは?

Amazon Braketは、複数のプロバイダーの量子コンピュータを探索し実験できる、フルマネージド型の量子コンピューティングサービスです。すべて一貫したPython SDKを通じて利用できます。ローカルシミュレータは完全に無料です。クラウドシミュレータはタスクごとにわずかな料金がかかります。実機QPUのショットはショット単位で課金されます。

ローカルシミュレータ
自分のマシン上で実行
永久無料
クラウドシミュレータ
SV1、DM1、TN1
約$0.075/タスク + 計算費用
実機QPU
IonQ、OQCのハードウェア
$0.01〜$0.90/ショット

インストールとセットアップ

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

無料のローカルシミュレータ

この LocalSimulator は完全に無料で、自分のマシン上で動作し、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}

パラメトリック回路

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

クラウドシミュレータ(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)

実機QPUハードウェア

Braket QPUs are pay-per-shot — see the free real-hardware options and how Braket compares with IBM Quantum before spending anything.

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)

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.

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