Como instalar e usar o avaliador de recursos do Microsoft Quantum

O avaliador de recursos do Microsoft Quantum faz parte do QDK (Microsoft Quantum Development Kit). Neste artigo, você aprenderá a instalar o avaliador de recursos quânticos e executar uma estimativa para um programa de Q# simples com um modelo de arquitetura padrão.

Aviso

O avaliador de recursos na extensão QDK para VS Code será preterido em breve. Use o qdk.qrePython módulo para executar a estimativa de recursos.

Pré-requisitos

Para seguir as etapas deste artigo, você precisa ter o seguinte instalado:

Instalar o avaliador de recursos quânticos

O avaliador de recursos está disponível por meio do qdk.qrePython módulo. Para usar o avaliador de recursos, instale a versão mais recente do qdkPython pacote com o qre extra:

pip install --upgrade "qdk[qre]"

Dica

Você não precisa ter uma conta Azure para usar o avaliador de recursos.

Executar uma estimativa de recurso simples com configurações padrão

Para executar uma estimativa básica de recursos, passe um modelo de aplicativo, um modelo de arquitetura de hardware e um modelo de correção de erro para o avaliador de recursos. Em seguida, execute o avaliador de recursos para obter os resultados. O exemplo a seguir executa o avaliador de recursos de Jupyter Notebook no VS Code.

Criar um modelo de aplicativo

Para este exemplo, use o algoritmo de modelo 1D Ising dos exemplos de Q# na extensão QDK VS Code. Ou use um dos programas Q# existentes.

Escrever um programa Q#

  1. No VS Code, crie um novo arquivo de texto e salve o arquivo como ising-1d-sample.qs.
  2. Na primeira linha do arquivo, insira o exemplo para abrir a lista de programas de exemplo de Q#.
  3. Escolha o exemplo de Modelo Ising (Simple 1D) e salve o arquivo.

Criar um aplicativo

Use o programa Q# para criar um modelo de aplicativo para o avaliador de recursos.

  1. Para criar um novo arquivo Jupyter Notebook no VS Code, abra a Paleta de Comandos e insira Criar: Novo Jupyter Notebook.

  2. Na primeira célula do notebook, avalie o programa Q#.

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

    Esse código cria um Main objeto no qdk.code namespace que contém o programa Q#.

  3. Em uma nova célula, crie um aplicativo avaliador de recursos do programa Q#.

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

Criar um modelo de arquitetura

Para a arquitetura de hardware, use o modelo padrão GateBased com o qual o avaliador de recursos vem. O GateBased modelo requer entradas para taxa de erro, hora do portão e tempo de medição.

Em uma nova célula, crie uma arquitetura baseada em portas lógicas com uma taxa de erro de $10^{-4}$, um tempo de porta de 100 ns e um tempo de medição de 500 ns.

from qdk.qre.models import GateBased

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

Executar uma estimativa

Para executar uma estimativa, use a estimate função e passe as seguintes entradas:

  • Application
  • Architecture
  • Consulta do conjunto físico de instruções (ISA)
  • Taxa máxima de erros

A consulta ISA informa ao avaliador de recursos quais combinações de código de correção de erro e protocolos de destilação de fábrica T serão avaliadas. O estimador de recursos encontra o conjunto de resultados otimizado na fronteira de Pareto dessas combinações. Para este exemplo, use o SurfaceCode QEC padrão e o RoundBasedFactory protocolo de destilação padrão fornecidos pelo estimador de recursos.

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

Exiba os resultados

Para exibir as combinações ideais de número de qubits físicos e tempo de execução do programa, use o método as_frame para exibir os resultados da estimativa em um DataFrame do pandas.

results.as_frame()

Para plotar os resultados, use o plot_estimates método e passe uma unidade para o tempo de execução.

from qdk.qre import plot_estimates

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