Enviar trabalhos para Azure Quantum com o pacote QDKPython

Use o Microsoft Quantum Development Kit pacote (QDK) Python para enviar Q#, OpenQASM, Qiskit, Cirqe PennyLane programas para Azure Quantum.

Este artigo fornece exemplos de envio de trabalho para cada linguagem quântica ou estrutura com suporte. Para um fluxo de trabalho interativo Q# ou Python que não exija código QDK, consulte OpenQASM.

Pré-requisitos

  • Uma conta do Azure com uma assinatura ativa.

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

  • Python 3.10 ou posterior.

  • Se você usa um notebook Jupyter, um ambiente Jupyter, como a extensão Jupyter para VS Code e o pacote ipykernel.

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

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

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

    Se você quiser enviar um programa Qiskit ou Cirq, instale os extras cirq e qiskit.

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

Conectar-se ao seu Azure Quantum espaço de trabalho

Antes de enviar um trabalho, você precisa se conectar a um Azure Quantum workspace. O módulo qdk.azure fornece o objeto Workspace para se conectar aos espaços de trabalho Azure Quantum. Para se conectar ao workspace, siga estas etapas.

Entre com CLI do Azure

Se você ainda não fez isso, faça login no Azure em um terminal antes de abrir um Jupyter Notebook.

az login

Se você não fizer login pelo terminal, precisará se autenticar toda vez que se conectar a um espaço de trabalho do Quantum por meio de Python. Se sua conta tiver acesso a várias assinaturas, defina a assinatura que contém seu Azure Quantum espaço de trabalho.

az account set --subscription <subscription-id>

Execute az login novamente quando a sessão expirar ou quando você quiser usar uma conta de Azure diferente.

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

  1. Entre no portal do Azure.
  2. Vá para o workspace do Quantum onde você deseja enviar seu trabalho.
  3. Na página Visão geral , localize e copie a ID do recurso.

Conectar-se ao espaço de trabalho

  1. Para se conectar ao workspace do Quantum, crie um Workspace objeto com a ID do recurso copiado.

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

    Note

    Y

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

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

Para obter outras opções de conexão e autenticação, consulte Conectar-se ao seu Azure Quantum workspace.

Note

Os exemplos a seguir enviam trabalhos para o simulador targets. Os targets disponíveis em seu espaço de trabalho dependem de seus provedores configurados.

Preparar e enviar seu programa

Escolha a guia correspondente à sua linguagem quântica ou framework.

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

Definir e compilar o Q# programa

  1. Inicializar Q# com um perfil QIRtarget que o/a Azure Quantumtarget suporta.

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

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

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

    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()")
    

Enviar a Q# tarefa

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

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

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

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