Установка и использование средства оценки ресурсов Microsoft Quantum

Средство оценки ресурсов Microsoft Quantum является частью Microsoft Quantum Development Kit (QDK). Из этой статьи вы узнаете, как установить квантовый оценщик ресурсов и запустить оценку простой программы Q# с моделью архитектуры по умолчанию.

Предупреждение

В расширении QDK для VS Code средство оценки ресурсов скоро будет выведено из эксплуатации. qdk.qre Python Используйте модуль для оценки ресурсов.

Prerequisites

Чтобы выполнить действия, описанные в этой статье, необходимо установить следующее:

Установка средства оценки квантовых ресурсов

Оценка ресурсов доступна через qdk.qrePython модуль. Чтобы использовать средство оценки ресурсов, установите последнюю версию qdkPython пакета с дополнительными qre сведениями:

pip install --upgrade "qdk[qre]"

Tip

У вас нет учетной записи Azure для использования средства оценки ресурсов.

Выполнение простой оценки ресурсов с параметрами по умолчанию

Чтобы выполнить базовую оценку ресурсов, передайте модель приложения, модель аппаратной архитектуры и модель исправления ошибок в оценщик ресурсов. Затем запустите средство оценки ресурсов, чтобы получить результаты. В следующем примере выполняется средство оценки ресурсов из Jupyter Notebook в VS Code.

Создание модели приложения

В этом примере используйте алгоритм модели 1D Ising из примеров Q# в расширении QDK VS Code. Или используйте одну из существующих программ Q#.

Написание программы Q#

  1. В VS Code создайте текстовый файл и сохраните файл как ising-1d-sample.qs.
  2. В первой строке файла введите пример , чтобы открыть список примеров программы Q#.
  3. Выберите пример «Модель Изинга (простая 1D)», а затем сохраните файл.

Создание приложения

Используйте программу Q# для создания модели приложения для оценщика ресурсов.

  1. Чтобы создать файл Jupyter Notebook в VS Code, откройте палитру команд и введите create: New Jupyter Notebook.

  2. В первой ячейке записной книжки оцените программу Q#.

    from pathlib import Path
    from qdk import qsharp
    
    qsharp.eval(Path("ising-1d-sample.qs").read_text(encoding="utf-8"))
    

    Этот код создает Main объект в qdk.code пространстве имен, содержащее программу Q#.

  3. В новой ячейке создайте приложение оценки ресурсов из программы Q#.

    import qdk
    from qdk.qre.application import QSharpApplication
    
    app = QSharpApplication(qdk.code.Main)
    

Создание модели архитектуры

Для аппаратной архитектуры используйте модель GateBased по умолчанию, которая входит в состав оценщика ресурсов. Для GateBased модели требуются входные данные для частоты ошибок, времени ворот и времени измерения.

В новой ячейке создайте архитектуру на основе вентилей с уровнем ошибок $10^{-4}$, длительностью вентиля 100 нс и временем измерения 500 нс.

from qdk.qre.models import GateBased

# Times are in units of nanoseconds
arch = GateBased(error_rate=1e-4, gate_time=100, measurement_time=500)

Запустить оценку

Чтобы выполнить оценку, используйте estimate функцию и передайте следующие входные данные:

  • Application
  • Architecture
  • Запрос набора физических инструкций (ISA)
  • Максимальная частота ошибок

Запрос ISA сообщает оценщику ресурсов, какие сочетания кода коррекции ошибок и протоколов дистилляции T-фабрики следует оценивать. Оценка ресурсов находит оптимизированный набор результатов из этих сочетаний для границы Pareto. В этом примере используйте код QEC по умолчанию SurfaceCode и протокол дистилляции RoundBasedFactory, которые входят в состав оценщика ресурсов.

from qdk.qre import estimate
from qdk.qre.models import SurfaceCode, RoundBasedFactory

results = estimate(app, arch, isa_query=SurfaceCode.q() * RoundBasedFactory.q(), max_error=0.01)```

Просмотр результатов

Чтобы просмотреть оптимальные сочетания количества физических кубитов и времени выполнения программы, используйте метод as_frame для отображения результатов оценки в DataFrame pandas.

results.as_frame()

Чтобы отобразить результаты, используйте plot_estimates метод и передайте единицу времени выполнения.

from qdk.qre import plot_estimates

plot_estimates(results, figsize=(6, 4), runtime_unit="ms")