Submeta tarefas para Azure Quantum com o pacote QDKPython

Utilize o pacote Python (QDK) Microsoft Quantum Development Kit para submeter programas Q#, OpenQASM, Qiskit, Cirq e PennyLane a Azure Quantum.

Este artigo fornece exemplos de submissão de trabalhos para cada linguagem ou framework quântico suportado. Para um fluxo de trabalho interativo com Q# ou OpenQASM que não exija código Python, consulte Submeter trabalhos com a extensão QDK para VS Code.

Pré-requisitos

  • Uma conta do Azure com uma assinatura ativa.

  • Um Azure Quantum espaço de trabalho. Para criar um, veja Criar um Azure Quantum espaço de trabalho.

  • Python 3.10 ou mais tarde.

  • Se usares um notebook do Jupyter, um ambiente Jupyter, como a extensão Jupyter para VS Code e o pacote ipykernel.

  • Instala o CLI do Azure com a quantum extensão.

    az extension add --upgrade --name quantum
    
  • Instala a versão mais recente do pacote qdkPython com os extras azure e jupyter.

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

    Se quiseres submeter um programa Qiskit ou Cirq, instala os extras cirq e qiskit

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

Liga-te ao teu Azure Quantum espaço de trabalho

Antes de submeter uma tarefa, tem de se ligar a um espaço de trabalho Azure Quantum. O módulo qdk.azure fornece o objeto Workspace para ligar a espaços de trabalho Azure Quantum. Para se ligar ao seu espaço de trabalho, siga estes passos.

Iniciar sessão com CLI do Azure

Se ainda não o fizeste, inicia sessão no Azure a partir de um terminal antes de abrires um notebook Jupyter.

az login

Se não iniciar sessão a partir do terminal, tem de se autenticar sempre que se ligar a um espaço de trabalho do Quantum através de Python. Se a sua conta tiver acesso a várias subscrições, defina a subscrição que contém o seu Azure Quantum espaço de trabalho.

az account set --subscription <subscription-id>

Executa az login novamente quando a sessão expirar ou quando quiseres usar uma conta Azure diferente.

Obtenha o ID de recurso do seu espaço de trabalho

  1. Inicie sessão no portal Azure.
  2. Vai ao espaço de trabalho da Quantum onde queres submeter o teu trabalho.
  3. Na página de Visão Geral , encontre e copie o ID do Recurso.

Conectar-se ao espaço de trabalho

  1. Para te ligares ao teu espaço de trabalho Quantum, cria um Workspace objeto com o ID de recurso que copiaste.

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

    Observação

    Y

  2. Verifique a ligação e veja os targets disponíveis no espaço de trabalho.

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

Para outras opções de ligação e autenticação, consulte Ligar ao seu Azure Quantum espaço de trabalho.

Observação

Os exemplos seguintes submetem trabalhos ao simulador targets. Os targets disponíveis no seu espaço de trabalho dependem dos fornecedores configurados.

Prepare e submeta o seu programa

Escolha o separador correspondente à sua linguagem quântica ou framework.

Use o qdk.qsharp módulo para definir ou carregar Q# código, compile um ponto de entrada para QIR, e submeta o QIR para um Azure Quantumtarget.

Definir e compilar o Q# programa

  1. Inicialize Q# com um perfil targetQIR que o Azure Quantumtarget suporte.

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

    Para mais informações sobre os perfis QIRtarget, consulte os perfis Azure QuantumQIRtarget no QDK.

  2. Defina uma Q# operação. Por exemplo, use a seguinte RandomBit operação.

    qsharp.eval("""
        operation RandomBit() : Result {
            use q = Qubit();
            H(q);
            return MResetZ(q);
        }
    """)
    
  3. Teste a operação no simulador local.

    print(qsharp.run("RandomBit()", shots=10))
    
  4. Compile a operação para QIR.

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

Submeter a Q# tarefa

  1. Selecione um target compatível do seu espaço de trabalho.

    target = workspace.get_targets("rigetti.sim.qvm")
    
  2. Submeter o programa compilado.

    job = target.submit(program, "qsharp-job", shots=100)
    print("Job ID:", job.id)
    
  3. Espere que o trabalho seja concluído e recupere os seus resultados.

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