Упражнение. Начало работы с оценщиком ресурсов Azure Quantum

Завершено

В предыдущем уроке вы узнали, что оценка ресурсов Azure Quantum работает с помощью трех основных входных данных: физических параметров кубита, схемы исправления квантовых ошибок (QEC) и бюджета ошибок.

Давайте рассмотрим некоторые практические рекомендации по оценке ресурсов Azure Quantum. В этом уроке вы оцениваете физические ресурсы простой программы с помощью средства оценки ресурсов Azure Quantum.

Установка необходимых пакетов

Сначала установите последнюю версию Azure Quantum qsharp и qsharp-widgets пакеты.

python -m pip install --upgrade qsharp qsharp-widgets 

Создание квантового алгоритма в записной книжке Jupyter

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

  1. Откройте Visual Studio Code.

  2. Выберите представление > Командная палитра и выберите Создать: Новая записная книжка Jupyter.

  3. В первой ячейке записной книжки импортируйте qsharp пакет:

    import qsharp
    from qsharp_widgets import EstimateDetails
    
  4. Добавьте новую ячейку и скопируйте следующий код:

    %%qsharp
    /// # Sample
    /// Random Bit
    ///
    /// # Description
    /// This Q# program generates a random bit by setting a qubit in a superposition
    /// of the computational basis states |0〉 and |1〉, and returning the measurement
    /// result.
    
        operation RandomBit() : Result {
            // Qubits are only accesible for the duration of the scope where they
            // are allocated and are automatically released at the end of the scope.
            use qubit = Qubit();
    
            // Set the qubit in superposition by applying a Hadamard transformation.
            H(qubit);
    
            // Measure the qubit. There is a 50% probability of measuring either 
            // `Zero` or `One`.
            let result = M(qubit);
    
            // Reset the qubit so it can be safely released.
            Reset(qubit);
            return result;
        }
    

Оценка квантового алгоритма

Теперь запустите средство оценки ресурсов, чтобы оценить физические ресурсы для операции RandomBit. Если вы ничего не укажете, средство оценки ресурсов использует предположения по умолчанию, то есть модель qubit_gate_ns_e3 кубита, код исправления ошибок surface_code и бюджет ошибки 0,001.

  1. Добавьте новую ячейку и скопируйте следующий код:

    result = qsharp.estimate("RandomBit()")
    result
    

    Функция qsharp.estimate создает объект результата, который можно использовать для отображения таблицы с общим количеством физических ресурсов. В первой таблице показаны основные оценки физического ресурса. Операция RandomBit требует 300 кубитов и принимает два микросекунда для выполнения на квантовом компьютере.

    Оценка физического ресурса Значение
    Параметры выполнения 2 микросекса
    rQOPS 3.00M
    Физические кубиты 300
  2. Вы можете проверить сведения о затратах, совершите группы, которые содержат дополнительные сведения. Например, свернуть группу параметров логического кубита, чтобы увидеть, что расстояние кода равно 5, а количество физических кубитов на логический кубитов равно 50.

    Логический параметр кубита Значение
    Схема QEC surface_code
    Расстояние от кода 5
    Физические кубиты 50
    Время логического цикла 2 микросекса
    Частота ошибок логического кубита 3.00E-5
    Пересечение префактотора 0,03
    Порог исправления ошибок 0,01
    Формула логического цикла (4 * + twoQubitGateTime 2 * ) * oneQubitMeasurementTimecodeDistance
    Формула физических кубитов 2 * codeDistance * codeDistance
  3. Поле можно использовать jobParams для доступа ко всем целевым параметрам, которые можно передать в выполнение задания, и узнать, какие значения по умолчанию были приняты:

    result['jobParams']
    
    {'errorBudget': 0.001,
     'qecScheme': {'crossingPrefactor': 0.03,
      'errorCorrectionThreshold': 0.01,
      'logicalCycleTime': '(4 * twoQubitGateTime + 2 * oneQubitMeasurementTime) * codeDistance',
      'name': 'surface_code',
      'physicalQubitsPerLogicalQubit': '2 * codeDistance * codeDistance'},
     'qubitParams': {'instructionSet': 'GateBased',
      'name': 'qubit_gate_ns_e3',
      'oneQubitGateErrorRate': 0.001,
      'oneQubitGateTime': '50 ns',
      'oneQubitMeasurementErrorRate': 0.001,
      'oneQubitMeasurementTime': '100 ns',
      'tGateErrorRate': 0.001,
      'tGateTime': '50 ns',
      'twoQubitGateErrorRate': 0.001,
      'twoQubitGateTime': '50 ns'}}
    

    Вы можете увидеть, что средство оценки ресурсов принимает модель qubit_gate_ns_e3 кубита, код исправления ошибок surface_code и бюджет ошибки 0.001, которые являются значениями по умолчанию для оценки.

Изменение значений по умолчанию и оценка алгоритма

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

Изменение модели кубита

Вы оцениваете стоимость того же алгоритма с помощью параметра кубита на основе Майораны, qubit_maj_ns_e6. Для этого необходимо передать параметр qubitParams и установить поле name на значение qubit_maj_ns_e6.

В новой ячейке скопируйте и запустите следующий код:

result_maj = qsharp.estimate("RandomBit()", params={
                "qubitParams": {
                    "name": "qubit_maj_ns_e6"
                }})
EstimateDetails(result_maj)

Изменение схемы исправления квантовых ошибок

Вы оцениваете затраты для того же алгоритма с помощью параметров кубита на основе Майораны с помощью флоковой схемы QEC, qecScheme. Для этого также необходимо передать параметр qecScheme с полем name, равным floquet_code.

В новой ячейке скопируйте и запустите следующий код:

result_maj = qsharp.estimate("RandomBit()", params={
                "qubitParams": {
                    "name": "qubit_maj_ns_e6"
                },
                "qecScheme": {
                    "name": "floquet_code"
                }})
EstimateDetails(result_maj)

Изменение бюджета ошибок

Затем оцените стоимость для тех же параметров, когда errorBudget равно 10%. Для этого необходимо передать параметр errorBudget со значением 0.1.

В новой ячейке скопируйте и запустите следующий код:

result_maj = qsharp.estimate("RandomBit()", params={
                "qubitParams": {
                    "name": "qubit_maj_ns_e6"
                },
                "qecScheme": {
                    "name": "floquet_code"
                },
                "errorBudget": 0.1})
EstimateDetails(result_maj)

Поздравляю! Вы успешно оценили физические ресурсы для простого квантового алгоритма с помощью средства оценки ресурсов Azure Quantum и настроили параметры, чтобы узнать, как они влияют на оценки ресурсов.

В следующем уроке вы настроите сложность и оцените ресурсы алгоритма Shor с помощью средства оценки квантовых ресурсов Azure.