Migrace z cloudových simulátorů na lokální simulátory
V kvantovém výpočetnictví je volba mezi simulátory a kvantovým hardwarem klíčová pro pokrok v oboru. Přestože jsou simulátory užitečné pro testování a ladění, v této éře kvantové užitečnosti vyžaduje kvantový vývoj a průmyslový pokrok skutečný hardware. V rámci přechodu ke kvantové užitečnosti byly cloudové simulátory IBM Quantum® vyřazeny z provozu 15. května 2024. Tento průvodce podrobněji vysvětluje toto vyřazení a popisuje, jak migrovat z cloudových simulátorů, jako je ibmq_qasm_simulator, na lokální simulátory.
Proč jsou cloudové simulátory vyřazovány z provozu?
Cloudové simulátory jsou vyřazovány z provozu z několika důvodů:
Simulátory mají omezení
Simulátory mohou být užitečné, ale jsou příliš omezené pro použití ve výzkumu nebo experimentování:
-
Simulátory jsou cenné pro pochopení malých QPU (kvantových zpracovatelských jednotek), ale jejich užitečnost se vyčerpá přibližně u 50 qubitů, a to i s přístupem k výkonným superpočítačům. Tato hranice plyne z exponenciálního nárůstu výpočetních zdrojů potřebných pro simulaci větších kvantových počítačů (podrobné vysvětlení najdeš v Massively parallel quantum computer simulator, eleven years later). Zkoumání kvantových počítačů se 100 a více qubity vyžaduje hardware.
-
Některé simulátory sice nabízejí šumové modely, ale zachytit celou dynamiku reálného QPU je velmi obtížný problém. Kvantový hardware nabízí výzkumníkům možnost čelit výzvám kvantových počítačů, jako je šum, chyby a dekoherence, v realistickém testovacím prostředí.
Práce s kvantovým hardwarem rozvíjí jedinečné dovednosti
Interakce s kvantovým hardwarem rozvíjí dovednosti a zkušenosti, které nelze získat pouze používáním simulátorů:
-
Přímá interakce s kvantovým hardwarem rozvíjí dovednosti, protože musíš implementovat nebo používat techniky potlačování či zmírňování chyb pro spolehlivý výpočet.
-
Praktická zkušenost s kvantovým hardwarem rozvíjí hlubší pochopení kvantových jevů a toho, jak přizpůsobit algoritmy charakteristikám kvantových procesorů.
-
Práce s kvantovým hardwarem přináší praktické poznatky o výzvách a příležitostech kvantového výpočetnictví, čímž posiluje schopnost vývojářů přispívat k inovacím v oboru.
Algoritmy by měly být přizpůsobeny kvantovému hardwaru
Úspěšné kvantové algoritmy musí být přizpůsobeny tak, aby využívaly možnosti kvantového hardwaru, a optimalizovaly tak výkon a efektivitu.
-
Kvantový hardware poskytuje přesnější reprezentaci reálných QPU než simulátory.
-
Doladění algoritmů pro kvantový hardware zahrnuje úpravy ansatz, implementací Circuit, parametrů a konfigurace za účelem maximalizace výkonu. Tento proces je nejlépe dosažitelný přímou experimentací s kvantovým hardwarem.
Kdy by se měly simulátory používat?
Kvantové simulátory by se měly používat k vývoji a testování programů, než je doladíš a odešleš na kvantový hardware. Lokální simulátory to zvládají s dobrým výkonem a efektivitou. Cliffordovy obvody lze simulovat velmi efektivně a výsledky lze ověřit, což je užitečný způsob, jak získat důvěru v experiment.
Lokální testovací režim nemá vestavěné potlačování ani zmírňování chyb. Místo toho musíš tyto možnosti zadat explicitně. Podrobnosti najdeš v části Konfigurace zmírňování chyb pro Qiskit Runtime.
Migrace na lokální simulátory
S qiskit-ibm-runtime 0.22.0 nebo novějším můžeš použít lokální testovací režim jako náhradu za cloudové simulátory. V závislosti na svých potřebách existuje několik způsobů, jak lokální testovací režim využít. Začni tím, že zadáš jeden z falešných backendů v qiskit_ibm_runtime.fake_provider nebo zadáš Backend Qiskit Aer při vytváření instance primitivu nebo Session.
Pokyny pro výběr simulátoru
Při výběru simulátoru ti pomůže následující tabulka.
| Simulátor | Fake Backends | AerSimulator | Cliffordova simulace |
|---|---|---|---|
| Účel | Napodobuje konkrétní QPU IBM® pomocí snímků | Víceúčelová, vysoce výkonná simulace | Efektivní simulace pro Cliffordovy obvody |
| Šumový model | Automaticky aplikuje šumový model ze snímků QPU | Vlastní nebo na základě kalibračních dat reálného QPU | Ideální pro simulace bez šumu |
| Velikost Circuit | Omezena možnostmi napodobovaného QPU | Zvládá větší Circuit | Vhodné pro velmi velké Circuit (stovky qubitů) |
| Výsledky | Střední doba běhu pro testy specifické pro QPU | Kratší doba běhu pro širokou škálu simulací | Extrémně rychlé, vhodné pro stabilizátorové Circuit |
| Případ užití | Testování Transpiler a chování specifického pro QPU | Obecný vývoj, vlastní šumové modely | Velké stabilizátorové Circuit, oprava chyb |
Pro většinu uživatelů je AerSimulator dobrou volbou díky své flexibilitě a výkonu. Pokud však tvoje práce cílí na konkrétní QPU, falešný Backend může být lepší volbou.
Fake Backends
Falešné backendy napodobují chování QPU IBM pomocí snímků. Snímky obsahují důležité informace o QPU, jako je mapa propojení, základní Gate a vlastnosti qubitů, které jsou užitečné pro testování Transpiler a provádění simulací QPU se šumem. Šumový model ze snímku je během simulace aplikován automaticky.
Příklad:
from qiskit.circuit.library import RealAmplitudes
from qiskit.circuit import QuantumCircuit, QuantumRegister, ClassicalRegister
from qiskit.quantum_info import SparsePauliOp
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
from qiskit_ibm_runtime.fake_provider import FakeManilaV2
from qiskit_ibm_runtime import SamplerV2 as Sampler, QiskitRuntimeService
service = QiskitRuntimeService()
# Bell Circuit
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()
# Run the sampler job locally using FakeManilaV2
fake_manila = FakeManilaV2()
pm = generate_preset_pass_manager(backend=fake_manila, optimization_level=1)
isa_qc = pm.run(qc)
# You can use a fixed seed to get fixed results.
options = {"simulator": {"seed_simulator": 42}}
sampler = Sampler(mode=fake_manila, options=options)
result = sampler.run([isa_qc]).result()
AerSimulator
Lokální testovací režim můžeš použít se simulátory z Qiskit Aer, které poskytují vysoce výkonnou simulaci schopnou zvládnout větší Circuit a vlastní šumové modely. Podporuje také režim Cliffordovy simulace, který dokáže efektivně simulovat Cliffordovy Circuit s velkým počtem qubitů.
Příklad se Session, bez šumu:
Následující blok kódu vrátí chybu pro uživatele na Open Plan, protože používá Session. Úlohy na Open Plan mohou běžet pouze v režimu job nebo dávkovém režimu.
from qiskit_aer import AerSimulator
from qiskit.circuit.library import RealAmplitudes
from qiskit.circuit import QuantumCircuit, QuantumRegister, ClassicalRegister
from qiskit.quantum_info import SparsePauliOp
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
from qiskit_ibm_runtime import Session, SamplerV2 as Sampler, QiskitRuntimeService
service = QiskitRuntimeService()
# Bell Circuit
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()
# Run the sampler job locally using AerSimulator.
# Session syntax is supported but ignored because local mode doesn't support sessions.
aer_sim = AerSimulator()
pm = generate_preset_pass_manager(backend=aer_sim, optimization_level=1)
isa_qc = pm.run(qc)
with Session(backend=aer_sim) as session:
sampler = Sampler()
result = sampler.run([isa_qc]).result()
Chceš-li simulovat se šumem, zadej QPU (kvantový hardware) a odešli jej do Aer. Aer sestaví šumový model na základě kalibračních dat z daného QPU a vytvoří instanci Backend Aer s tímto modelem. Pokud chceš, můžeš také sestavit šumový model.
Příklad se šumem:
from qiskit_aer import AerSimulator
from qiskit.circuit.library import RealAmplitudes
from qiskit.circuit import QuantumCircuit, QuantumRegister, ClassicalRegister
from qiskit.quantum_info import SparsePauliOp
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2 as Sampler
service = QiskitRuntimeService()
# Bell Circuit
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()
# Specify a QPU to use for the noise model
real_backend = service.backend("ibm_brisbane")
aer = AerSimulator.from_backend(real_backend)
# Run the sampler job locally using AerSimulator.
pm = generate_preset_pass_manager(backend=aer, optimization_level=1)
isa_qc = pm.run(qc)
sampler = Sampler(mode=aer)
result = sampler.run([isa_qc]).result()
Cliffordova simulace
Protože Cliffordovy Circuit lze efektivně simulovat s ověřitelnými výsledky, je Cliffordova simulace velmi užitečným nástrojem. Podrobný příklad najdeš v části Efektivní simulace stabilizátorových Circuit s primitávy Qiskit Aer.
Příklad:
import numpy as np
from qiskit.circuit.library import EfficientSU2
from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2 as Sampler
service = QiskitRuntimeService()
n_qubits = 500 # <---- note this uses 500 qubits!
circuit = EfficientSU2(n_qubits)
circuit.measure_all()
rng = np.random.default_rng(1234)
params = rng.choice(
[0, np.pi / 2, np.pi, 3 * np.pi / 2],
size=circuit.num_parameters,
)
# Tell Aer to use the stabilizer (clifford) simulation method
aer_sim = AerSimulator(method="stabilizer")
pm = generate_preset_pass_manager(backend=aer_sim, optimization_level=1)
isa_circuit = pm.run(circuit)
sampler = Sampler(mode=aer_sim)
result = sampler.run([(isa_circuit, params)]).result()