Was ist Qiskit?
Qiskit ist das Open-Source-SDK für Quantencomputing von IBM. Es stellt Werkzeuge bereit, um Quantenschaltkreise zu erstellen, zu visualisieren, zu optimieren und auf IBM-Quantum-Simulatoren sowie echter Quantenhardware auszuführen. Die kostenlose Stufe umfasst den Zugriff auf mehrere QPUs ohne weitere Kosten außer der Wartezeit in der Warteschlange.
Installation
pip install qiskit # Core
pip install qiskit-aer # Local simulator
pip install qiskit-ibm-runtime # IBM Quantum cloud access
pip install qiskit[visualization] # Optional: circuit diagramsEinrichtung des kostenlosen IBM-Quantum-Zugangs
- 1Besuche quantum.ibm.com und klicke auf "Sign in" → "Create an IBMid" (kostenlos).
- 2Gehe nach dem Login zu deinem Profil (oben rechts) → "Manage account" → "API token".
- 3Kopiere das API-Token und füge es in den untenstehenden save_account()-Aufruf ein.
- 4Führe das Setup-Skript einmalig aus. Die Zugangsdaten werden in ~/.qiskit/qiskit-ibm.json gespeichert.
from qiskit_ibm_runtime import QiskitRuntimeService
# Save your IBM Quantum token (only needed once)
QiskitRuntimeService.save_account(
channel="ibm_quantum",
token="YOUR_IBM_QUANTUM_TOKEN_HERE",
overwrite=True
)
# Verify the connection
service = QiskitRuntimeService(channel="ibm_quantum")
backends = service.backends()
print(f"Available backends: {[b.name for b in backends]}")Ausführung auf dem kostenlosen lokalen Simulator
Qiskit Aer bietet einen leistungsstarken lokalen Simulator. Kein Konto erforderlich — führe unbegrenzt viele Schaltkreise auf deinem Rechner aus.
from qiskit import QuantumCircuit
from qiskit_aer import AerSimulator
from qiskit.visualization import plot_histogram
# Build a Bell state circuit
qc = QuantumCircuit(2, 2)
qc.h(0)
qc.cx(0, 1)
qc.measure([0, 1], [0, 1])
# Run on local Aer simulator (free, unlimited)
sim = AerSimulator()
job = sim.run(qc, shots=4096)
result = job.result()
counts = result.get_counts()
print(counts) # {'00': ~2048, '11': ~2048}
# Statevector simulation (no measurement noise)
from qiskit.quantum_info import Statevector
sv = Statevector.from_instruction(qc.remove_final_measurements(inplace=False))
print(sv) # [0.707+0j, 0, 0, 0.707+0j]Ausführung auf echter kostenloser QPU-Hardware
See which QPUs you can use for free, and read how transpilation rewrites your circuit for a specific backend.
from qiskit import QuantumCircuit, transpile
from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2 as Sampler
service = QiskitRuntimeService(channel="ibm_quantum")
# Find the least-busy free QPU
backend = service.least_busy(
operational=True,
simulator=False,
min_num_qubits=2
)
print(f"Running on: {backend.name} ({backend.num_qubits} qubits)")
# Build circuit
qc = QuantumCircuit(2, 2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()
# Transpile for the specific backend
qc_t = transpile(qc, backend, optimization_level=3)
# Submit job using SamplerV2 (modern Qiskit Runtime API)
with Sampler(mode=backend) as sampler:
job = sampler.run([qc_t], shots=1024)
result = job.result()
print(result[0].data.meas.get_counts())Variational Quantum Eigensolver (VQE)
from qiskit.circuit.library import TwoLocal
from qiskit.quantum_info import SparsePauliOp
from qiskit_ibm_runtime import QiskitRuntimeService, Session
from qiskit_ibm_runtime import EstimatorV2 as Estimator
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
import numpy as np
# Define a simple Hamiltonian (H2 molecule)
hamiltonian = SparsePauliOp.from_list([
("ZZ", -1.0523732),
("IZ", 0.3979374),
("ZI", -0.3979374),
("XX", 0.1809312),
("YY", 0.1809312),
])
# Ansatz circuit
ansatz = TwoLocal(2, ['ry', 'rz'], 'cx', reps=2)
init_params = np.zeros(ansatz.num_parameters)
service = QiskitRuntimeService(channel="ibm_quantum")
backend = service.least_busy(operational=True, simulator=False)
pm = generate_preset_pass_manager(backend=backend, optimization_level=1)
ansatz_isa = pm.run(ansatz)
hamiltonian_isa = hamiltonian.apply_layout(ansatz_isa.layout)
with Session(backend=backend) as session:
estimator = Estimator(mode=session)
job = estimator.run([(ansatz_isa, hamiltonian_isa, init_params)])
print(f"Energy estimate: {job.result()[0].data.evs}")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="qiskit") # explicit