Como executar várias configurações de target parâmetros com o Avaliador de Recursos

Neste artigo, você aprenderá a executar várias configurações de target parâmetros e compará-las usando o Avaliador de Recursos do Azure Quantum.

Para obter informações sobre como executar o Avaliador de Recursos, consulte Diferentes maneiras de usar o Avaliador de Recursos.

Pré-requisitos

Os seguintes pré-requisitos são necessários para executar o Avaliador de Recursos:

Para executar Q# programas no Avaliador de Recursos, você precisa do seguinte:

Se você quiser usar o Python no VS Code, também precisará do seguinte:

  • Instale a versão mais recente das extensões Python e Jupyter para VS Code.

  • O pacote mais recente do Azure Quantum qsharp .

    python -m pip install --upgrade qsharp 
    

Para enviar trabalhos para o Avaliador de Recursos, você precisa do seguinte:


Envio em lote com o Avaliador de Recursos

O Avaliador de Recursos do Azure Quantum permite que você envie trabalhos com várias configurações de parâmetros de trabalho, também chamados de itens, como um único trabalho para evitar executar novamente vários trabalhos no mesmo programa quântico.

Um trabalho de estimativa de recursos consiste em dois tipos de parâmetros de trabalho:

  • Parâmetros de destino: modelo qubit, esquemas QEC, orçamento de erro, restrições no nível do componente e unidades de destilação.
  • Argumentos de operação: argumentos que podem ser passados para o programa (se o ponto de entrada QIR contiver argumentos).

Um item consiste em uma configuração de parâmetros de trabalho, que é uma configuração de parâmetros e argumentos de target operação. Vários itens são representados como uma matriz de parâmetros de trabalho.

Alguns cenários em que talvez você queira enviar vários itens como um único trabalho:

  • Envie vários target parâmetros com os mesmos argumentos de operação em todos os itens.
  • Envie vários target parâmetros com argumentos de operação diferentes em todos os itens.
  • Compare facilmente vários resultados em um formato tabular.
  • Compare facilmente vários resultados em um gráfico.

Se você estiver estimando os recursos de um Q# programa, poderá executar várias configurações de target parâmetros, também conhecidas como envio em lote. O envio em lote com Q# pode ser feito em um Jupyter Notebook no VS Code.

Você pode executar uma estimativa em lote passando uma lista de target parâmetros para o params parâmetro da qsharp.estimate função. O exemplo a seguir mostra como enviar duas configurações de target parâmetros como um único trabalho. A primeira configuração usa os parâmetros padrão target e a segunda configuração usa o qubit_maj_ns_e6 parâmetro qubit e o floquet_code esquema QEC.

No mesmo Jupyter Notebook do programaQ#, adicione uma nova célula e execute o seguinte código:

result_batch = qsharp.estimate("RunProgram()", params=
                [{}, # Default parameters
                {
                    "qubitParams": {
                        "name": "qubit_maj_ns_e6"
                    },
                    "qecScheme": {
                        "name": "floquet_code"
                    }
                }])
result_batch.summary_data_frame(labels=["Gate-based ns, 10⁻³", "Majorana ns, 10⁻⁶"])

Você também pode construir uma lista de parâmetros de estimativa target usando a EstimatorParams classe . O código a seguir mostra como enviar seis configurações de target parâmetros como um único trabalho.

from qsharp.estimator import EstimatorParams, QubitParams, QECScheme

labels = ["Gate-based µs, 10⁻³", "Gate-based µs, 10⁻⁴", "Gate-based ns, 10⁻³", "Gate-based ns, 10⁻⁴", "Majorana ns, 10⁻⁴", "Majorana ns, 10⁻⁶"]

params = EstimatorParams(num_items=6)
params.error_budget = 0.333
params.items[0].qubit_params.name = QubitParams.GATE_US_E3
params.items[1].qubit_params.name = QubitParams.GATE_US_E4
params.items[2].qubit_params.name = QubitParams.GATE_NS_E3
params.items[3].qubit_params.name = QubitParams.GATE_NS_E4
params.items[4].qubit_params.name = QubitParams.MAJ_NS_E4
params.items[4].qec_scheme.name = QECScheme.FLOQUET_CODE
params.items[5].qubit_params.name = QubitParams.MAJ_NS_E6
params.items[5].qec_scheme.name = QECScheme.FLOQUET_CODE

qsharp.estimate("RunProgram()", params=params).summary_data_frame(labels=labels)

Observação

Se você tiver algum problema ao trabalhar com o Avaliador de Recursos, marcar a página Solução de problemas ou entre em contato com AzureQuantumInfo@microsoft.com.