Квантовые вычисления

Qiskit: программирование квантовых компьютеров

Цели урока

  • Установить Qiskit и понять структуру его пакетов
  • Строить квантовые схемы с однокубитными и двухкубитными гейтами
  • Запускать схемы на AerSimulator и StatevectorSimulator
  • Отправлять задачи на реальные IBM квантовые процессоры

Квантовые алгоритмы на бумаге прекрасны. Как их запустить? Qiskit превратил квантовое программирование из академической экзотики в доступный инструмент: несколько строк Python - и схема летит на реальный квантовый процессор в IBM Cloud.

  • **Фармацевтика:** Pfizer использует IBM Quantum для симуляции молекул
  • **Финансы:** JPMorgan исследует квантовые алгоритмы оптимизации портфеля через Qiskit
  • **Исследования:** 400+ научных статей в год используют Qiskit как основной инструмент
  • **Образование:** более 500 университетов включили Qiskit в курсы квантовых вычислений

Qiskit: основы и архитектура

В 2017 году IBM открыла облачный доступ к реальным квантовым процессорам и выпустила **Qiskit** - Python-библиотеку с открытым исходным кодом. Сегодня это самый популярный инструмент для квантового программирования.

Qiskit разбит на пакеты. Ядро - `qiskit-terra`: схемы, гейты и компиляция. Поверх него работают симуляторы (`qiskit-aer`) и доступ к реальному железу (`qiskit-ibm-runtime`).

Qiskit 1.0 (2024) - стабильный релиз с гарантией совместимости API. Старые туториалы до 1.0 могут использовать устаревшие `execute()` и `Aer.get_backend()` - в новых версиях API изменился.

За что отвечает пакет qiskit-terra?

Quantum Circuits в Qiskit

`QuantumCircuit` - центральный объект Qiskit. Это последовательность гейтов, применяемых к кубитам. Схема описывает алгоритм абстрактно - без привязки к конкретному железу.

Параметризованные схемы (с `Parameter`) нужны для вариационных алгоритмов VQE и QAOA - параметры подставляются перед каждым запуском оптимизатором.

Зачем нужен qc.barrier() в Qiskit?

Симуляторы: Aer и StatevectorSimulator

Реальный квантовый процессор - дефицитный и шумный ресурс. Для разработки и отладки используют **Qiskit Aer** - пакет высокопроизводительных симуляторов на CPU и GPU.

Два главных симулятора: `AerSimulator` считает распределение измерений при заданном числе shots; `StatevectorSimulator` хранит полный вектор состояния - идеальный квантовый компьютер, но требует 2^n комплексных чисел памяти.

Aer умеет эмулировать шум реального железа. Модель шума загружают с конкретного IBM-устройства через `FakeBackend`, и симуляция воспроизводит его реальное поведение.

При n=30 кубитах StatevectorSimulator требует 2^30 = 10^9 комплексных чисел - около 16 GB памяти. При n=40 это уже 16 TB. Для больших схем используют MPS-симулятор (матричное произведение состояний).

StatevectorSimulator хранит 2^n комплексных чисел (float64, 16 байт). Для n=20 это примерно:

IBM Quantum Experience и запуск на железе

IBM предоставляет бесплатный облачный доступ к реальным квантовым процессорам. Бесплатный тариф - 10 минут QPU-времени в месяц, достаточно для экспериментов. Процессоры от 5 до 127 кубитов.

**Транспиляция** обязательна: реальные устройства поддерживают ограниченный набор нативных гейтов (CX, RZ, X, SX) и ограниченную связность кубитов. `transpile()` добавляет SWAP-гейты для физически несвязанных пар.

Бесплатная очередь на IBM Quantum может ждать часы. Используйте `FakeBackend` для отладки и отправляйте на реальное железо только финальные эксперименты.

Зачем вызывать transpile() перед отправкой схемы на реальное IBM-устройство?

Qiskit

  • qiskit-terra - ядро: схемы, гейты, транспиляция
  • qiskit-aer - симуляторы: AerSimulator (shots) и StatevectorSimulator (амплитуды)
  • QuantumCircuit - основной объект, описывает последовательность гейтов
  • Параметризованные схемы (Parameter) нужны для VQE и QAOA
  • transpile() конвертирует схему под физическое устройство
  • IBM Quantum: 10 мин/мес бесплатно, выбор через service.least_busy()

Связанные темы

Qiskit - инструмент для реализации квантовых алгоритмов из предыдущих уроков.

  • Квантовые гейты — Строительные блоки Qiskit-схем
  • Алгоритм Гровера — Классический пример реализации в Qiskit
  • Cirq и другие фреймворки — Альтернативы Qiskit

Вопросы для размышления

  • Почему транспиляция с optimization_level=3 может ухудшить результат на зашумлённом железе?
  • В каких случаях StatevectorSimulator предпочтительнее AerSimulator?
  • Как выбор маппинга кубитов влияет на количество SWAP-гейтов и качество результата?

Связанные уроки

  • la-01-vectors-intro
Qiskit: программирование квантовых компьютеров

0

1

Войти