Отправка заданий в Azure Quantum с помощью пакета QDKPython

Используйте пакет Microsoft Quantum Development Kit (Q#) OpenQASM для отправки программ Cirq, Qiskit, PennyLane, Azure Quantum и Python в QDK.

В этой статье приведены примеры отправки заданий для каждого поддерживаемого квантового языка или платформы. Сведения об интерактивном рабочем процессе Python или QDK, не требующем кода VS Code, см. в разделе Q#.

Необходимые условия

  • Учетная запись Azure с активной подпиской.

  • Одна Azure Quantum рабочая область. Чтобы создать ее, см. статью Azure Quantum "Создание рабочей области".

  • Python 3.10 или более поздней версии.

  • Если вы используете ноутбук Jupyter, среду Jupyter, например расширение Jupyter для VS Code и пакет ipykernel.

  • Установите Azure CLI с расширениемquantum.

    az extension add --upgrade --name quantum
    
  • Установите последнюю версию пакета qdkPython с дополнительными модулями azure и jupyter.

    pip install --upgrade "qdk[azure,jupyter]"
    

    Если вы хотите отправить программу Cirq или Qiskit, установите дополнительные компоненты cirq и qiskit.

    pip install --upgrade "qdk[qiskit,cirq]"
    

Подключитесь к Azure Quantum рабочей области

Прежде чем отправить задание, необходимо подключиться к рабочей области Azure Quantum. Модуль qdk.azure предоставляет объект Workspace для подключения к рабочим областям Azure Quantum. Чтобы подключиться к рабочей области, выполните следующие действия.

Вход с помощью Azure CLI

Если вы еще не сделали этого, войдите в Azure из терминала перед открытием записной книжки Jupyter.

az login

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

az account set --subscription <subscription-id>

Запустите az login снова, когда истекает срок действия сеанса или когда вы хотите использовать другую учетную запись Azure.

Получите идентификатор ресурса рабочей области

  1. Войдите на портал Azure.
  2. Перейдите в рабочую область Quantum, в которую вы хотите отправить задание.
  3. На странице обзора найдите и скопируйте идентификатор ресурса.

Подключение к рабочей области

  1. Чтобы подключиться к рабочей области Quantum, создайте Workspace объект с идентификатором ресурса, скопированным вами.

    from qdk.azure import Workspace
    
    workspace = Workspace(resource_id="") # Add your resource ID
    

    Note

    Y

  2. Проверьте подключение и просмотрите targets доступное в рабочей области.

    for target in workspace.get_targets():
        print(target.name)
    

Дополнительные сведения о подключении и проверке подлинности см. в разделе "Подключение к Azure Quantum рабочей области".

Note

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

Подготовка и отправка программы

Выберите вкладку для квантового языка или платформы.

Используйте модуль qdk.qsharp для определения или загрузки кода Q#, компиляции точки входа в QIR и отправки QIR в Azure Quantumtarget.

Определение и компиляция Q# программы

  1. Инициализируйте Q# с профилем targetQIR, который поддерживает targetAzure Quantum.

    from qdk import qsharp, TargetProfile
    
    qsharp.init(target_profile=TargetProfile.Base)
    

    Дополнительные сведения о профилях QIRtarget см. в разделе Azure QuantumQIRtarget профили в QDK.

  2. Определите операцию Q#. Например, используйте следующую RandomBit операцию.

    qsharp.eval("""
        operation RandomBit() : Result {
            use q = Qubit();
            H(q);
            return MResetZ(q);
        }
    """)
    
  3. Проверьте операцию на локальном симуляторе.

    print(qsharp.run("RandomBit()", shots=10))
    
  4. Скомпилируйте операцию в QIR.

    from qdk.qsharp import compile
    
    program = compile("RandomBit()")
    

Q# Отправка задания

  1. Выберите совместимый target в рабочей области.

    target = workspace.get_targets("rigetti.sim.qvm")
    
  2. Отправьте скомпилированную программу.

    job = target.submit(program, "qsharp-job", shots=100)
    print("Job ID:", job.id)
    
  3. Дождитесь завершения задания и получения результатов.

    job.wait_until_completed()
    print("Status:", job.details.status)
    
    results = job.get_results()
    print(results)