Como instalar e usar o estimador de recursos Microsoft Quantum

O estimador de recursos quântico Microsoft faz parte do Microsoft Quantum Development Kit (QDK). Neste artigo, aprende como instalar o estimador quântico de recursos e executar uma estimativa para um programa simples Q# com um modelo de arquitetura padrão.

Warning

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

Pré-requisitos

Para seguir os passos deste artigo, precisa de instalar o seguinte:

Instalar o estimador quântico de recursos

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

pip install --upgrade "qdk[qre]"

Tip

Não precisas de ter uma conta no Azure para usar o estimador de recursos.

Execute uma estimativa simples de recursos com definições padrão

Para realizar uma estimativa básica de recursos, passe um modelo de aplicação, um modelo de arquitetura de hardware e um modelo de correção de erros ao estimador de recursos. Depois, execute o estimador de recursos para obter os resultados. O exemplo seguinte executa o estimador de recursos do Jupyter Notebook em VS Code.

Criar um modelo de aplicação

Para este exemplo, use o algoritmo do modelo de Ising 1D a partir das amostras Q# na extensão QDK VS Code. Ou então usa um dos teus programas de Q# existentes.

Escreva um programa Q#

  1. No VS Code, cria um novo ficheiro de texto e guarda o ficheiro como ising-1d-sample.qs.
  2. Na primeira linha do ficheiro, introduza sample para abrir a lista de programas de exemplo do Q#.
  3. Escolha o exemplo Modelo de Ising (1D simples) e, em seguida, guarde o ficheiro.

Criar uma aplicação

Use o programa Q# para criar um modelo de aplicação para o estimador de recursos.

  1. Para criar um novo ficheiro Jupyter Notebook no VS Code, abra a Paleta de Comandos e entre em Create: New Jupyter Notebook.

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

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

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

  3. Numa célula nova, crie uma aplicação estimativa de recursos a partir 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 que o estimador de recursos traz. O modelo GateBased requer os valores da taxa de erro, do tempo de porta e do tempo de medição.

Numa nova célula, crie-se uma arquitetura baseada em portas 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)

Faça uma estimativa

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

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

A consulta ISA indica ao estimador de recursos que combinações de código de correção de erros e protocolos de destilação da fábrica T deve avaliar. O estimador de recursos encontra o conjunto de resultados otimizados pela fronteira de Pareto a partir dessas combinações. Para este exemplo, use o SurfaceCode QEC e o protocolo de destilação RoundBasedFactory por defeito que o estimador de recursos inclui.

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

Ver os resultados

Para visualizar as combinações ótimas do número de qubits físicos e do tempo de execução do programa, utilize o as_frame método para mostrar os resultados da estimativa num DataFrame pandas.

results.as_frame()

Para representar 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")