Acasă/SDK-uri/IBM Qiskit

IBM Qiskit

Cel mai popular SDK cuantic din lume. Acces complet la simulatoarele IBM și la hardware-ul cuantic real — complet gratuit.

Open sourceSimulatorQPU realPython

Ce este Qiskit?

Qiskit este SDK-ul de calcul cuantic open source al IBM. Oferă instrumente pentru a compune, vizualiza, optimiza și executa circuite cuantice pe simulatoarele IBM Quantum și pe hardware cuantic real. Nivelul gratuit include acces la mai multe QPU-uri fără costuri dincolo de timpul de așteptare.

📦
v1.x
Versiune actuală
🖥️
30+ qubiți
Simulator Aer
⚛️
127 qubiți
QPU real gratuit
🆓
Gratuit
Cont deschis

Instalare

terminal
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 diagrams

Configurarea accesului gratuit la IBM Quantum

  1. 1Accesează quantum.ibm.com și dă clic pe „Sign in” → „Create an IBMid” (gratuit).
  2. 2După autentificare, mergi la profilul tău (dreapta sus) → „Manage account” → „API token”.
  3. 3Copiază tokenul API și lipește-l în apelul save_account() de mai jos.
  4. 4Rulează scriptul de configurare o singură dată. Datele de acces sunt salvate în ~/.qiskit/qiskit-ibm.json.
setup_credentials.py
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]}")

Rularea pe simulatorul local gratuit

Qiskit Aer oferă un simulator local de înaltă performanță. Nu este necesar cont — rulează un număr nelimitat de circuite pe mașina ta.

local_sim.py
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]

Rularea pe hardware QPU real gratuit

real_hardware.py
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())

Rezolvitor propriu cuantic variațional (VQE)

vqe_example.py
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}")
💡

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="qiskit") # explicit