Перейти до основного вмісту

Перехід від хмарних симуляторів до локальних

У квантових обчисленнях вибір між симуляторами та квантовим залізом відіграє ключову роль для прогресу в цій галузі. Хоча симулятори корисні для тестування й налагодження, в епоху квантової корисності розвиток квантових технологій та промисловості потребує реального заліза. У рамках переходу до квантової корисності хмарні симулятори IBM Quantum® було виведено з експлуатації 15 травня 2024 року. Цей посібник детально пояснює причини виведення та описує, як перейти від хмарних симуляторів (наприклад, ibmq_qasm_simulator) до локальних.

Чому хмарні симулятори виводяться з експлуатації?

Хмарні симулятори виводяться з експлуатації з кількох причин:

Симулятори мають обмеження

Симулятори можуть бути корисними, але вони надто обмежені для досліджень або експериментів:

  • Симулятори цінні для розуміння QPU (квантових процесорів) невеликого масштабу, однак їхня корисність вичерпується приблизно на 50 кубітах — навіть за наявності високопродуктивних суперкомп'ютерів. Цю стелю зумовлює експоненційне зростання обчислювальних ресурсів, необхідних для симуляції більших квантових комп'ютерів (докладне пояснення дивись у статті Massively parallel quantum computer simulator, eleven years later). Дослідження квантових комп'ютерів на 100 кубітів і більше потребує реального заліза.

  • Хоча деякі симулятори пропонують моделі шуму, вловити всю динаміку реального QPU — надзвичайно складна задача. Квантове залізо дає дослідникам можливість безпосередньо зіткнутися з викликами, притаманними квантовим комп'ютерам: шумом, помилками та декогеренцією — у реалістичному тестовому середовищі.

Робота з квантовим залізом розвиває унікальні навички

Взаємодія з квантовим залізом формує навички та досвід, недосяжні лише при роботі з симуляторами:

  • Безпосередня взаємодія з квантовим залізом розвиває навички, оскільки для надійних обчислень потрібно реалізовувати або застосовувати техніки пом'якшення чи придушення помилок.

  • Практичний досвід роботи з квантовим залізом формує глибше розуміння квантових явищ і того, як адаптувати алгоритми до характеристик квантових процесорів.

  • Робота з квантовим залізом дає практичне розуміння викликів і можливостей квантових обчислень, підвищуючи здатність розробників стимулювати інновації в галузі.

Алгоритми слід адаптувати для квантового заліза

Успішні квантові алгоритми потрібно адаптувати, щоб використати можливості квантового заліза, оптимізуючи продуктивність і ефективність.

  • Квантове залізо забезпечує точніше відображення реальних QPU порівняно з симуляторами.

  • Тонке налаштування алгоритмів для квантового заліза передбачає коригування анзацу, реалізацій Circuit, параметрів і конфігурації для максимальної продуктивності. Цей процес найкраще здійснювати через безпосередні експерименти з квантовим залізом.

Коли варто використовувати симулятори?

Квантові симулятори варто використовувати для розробки та тестування програм перед їх тонким налаштуванням і запуском на квантовому залізі. Локальні симулятори справляються з цим завданням з хорошою продуктивністю та ефективністю. Схеми Кліффорда можна симулювати дуже ефективно, а результати — верифікувати, що є корисним способом підвищити довіру до експерименту.

примітка

Локальний режим тестування не має вбудованого придушення або пом'якшення помилок. Натомість ці параметри потрібно вказувати явно. Детальніше дивись у Налаштування пом'якшення помилок для Qiskit Runtime.

Перехід до локальних симуляторів

З версії qiskit-ibm-runtime 0.22.0 і пізніших можна використовувати локальний режим тестування замість хмарних симуляторів. Залежно від потреб, є кілька способів застосування локального режиму тестування. Для початку вкажи один із фейкових Backend у qiskit_ibm_runtime.fake_provider або вкажи Backend Qiskit Aer під час ініціалізації примітива чи сесії.

Рекомендації щодо вибору симулятора

Використовуй таблицю нижче, щоб вибрати симулятор.

СимуляторFake BackendsAerSimulatorСимуляція Кліффорда
ПризначенняІмітує конкретні QPU IBM® за допомогою знімківСимуляція загального призначення з високою продуктивністюЕфективна симуляція для Circuit Кліффорда
Модель шумуАвтоматично застосовує модель шуму зі знімків QPUДовільна або на основі калібрувальних даних реального QPUІдеальна для симуляцій без шуму
Розмір CircuitОбмежений можливостями імітованого QPUМоже обробляти більші схемиПідходить для дуже великих схем (сотні кубітів)
РезультатиПомірний час виконання для тестів конкретного QPUМенший час виконання для широкого діапазону симуляційНадзвичайно швидко, підходить для стабілізаторних схем
Сценарій використанняТестування Transpiler та поведінки конкретного QPUЗагальна розробка, довільні моделі шумуВеликі стабілізаторні Circuit, виправлення помилок
примітка

Для більшості користувачів AerSimulator є хорошим вибором завдяки своїй гнучкості та продуктивності. Однак якщо твоя робота орієнтована на конкретний QPU, фейковий Backend може бути кращим варіантом.

Fake backends

Фейкові backends імітують поведінку QPU IBM за допомогою знімків. Знімки містять важливу інформацію про QPU: карту зв'язків, базові Gate та властивості кубітів — що корисно для тестування Transpiler і виконання шумних симуляцій QPU. Модель шуму зі знімка застосовується автоматично під час симуляції.

Приклад:

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

Можна використовувати локальний режим тестування з симуляторами Qiskit Aer, який забезпечує більш продуктивну симуляцію, що здатна обробляти більші схеми та довільні моделі шуму. Він також підтримує режим симуляції Кліффорда, який може ефективно симулювати Circuit Кліффорда з великою кількістю кубітів.

Приклад із сесіями, без шуму:

обережно

Наступний блок коду поверне помилку для користувачів плану Open Plan, оскільки він використовує сесії. Навантаження на плані Open Plan можуть виконуватися лише в режимі завдань або пакетному режимі.

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

Щоб симулювати з шумом, вкажи QPU (квантове залізо) і передай його в Aer. Aer будує модель шуму на основі калібрувальних даних цього QPU та ініціалізує Backend Aer з цією моделлю. За бажанням, ти можеш побудувати модель шуму самостійно.

Приклад із шумом:

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

Симуляція Кліффорда

Оскільки Circuit Кліффорда можна симулювати ефективно з верифікованими результатами, симуляція Кліффорда є дуже корисним інструментом. Докладний приклад дивись у Ефективна симуляція стабілізаторних схем за допомогою примітивів Qiskit Aer.

Приклад:

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