Envío de trabajos a Azure Quantum con el QDKPython paquete

Utilice el paquete Microsoft Quantum Development Kit (QDK) Python para enviar programas Q#, OpenQASM, Qiskit, Cirq y PennyLane en Azure Quantum.

En este artículo se proporcionan ejemplos de envío de trabajos para cada lenguaje cuántico o marco de trabajo compatible. Para un flujo de trabajo interactivo Q# o Python que no requiera código QDK, consulte OpenQASM.

Prerequisites

  • Una cuenta de Azure con una suscripción activa.

  • Un área de Azure Quantum trabajo. Para crear una, consulte Creación de un Azure Quantum área de trabajo.

  • Python 3.10 o posterior.

  • Si usa un cuaderno de Jupyter, un entorno de Jupyter como la extensión de Jupyter para VS Code y el paquete ipykernel.

  • Instale CLI de Azure con la quantum extensión .

    az extension add --upgrade --name quantum
    
  • Instale la versión más reciente del paquete qdkPython con los extras azure y jupyter.

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

    Si desea enviar un programa Qiskit o Cirq, instale los complementos cirq y qiskit.

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

Conéctate a tu Azure Quantum área de trabajo

Antes de enviar un trabajo, debe conectarse a un Azure Quantum área de trabajo. El módulo qdk.azure proporciona el objeto Workspace para conectarse a espacios de trabajo Azure Quantum. Para conectarse al área de trabajo, siga estos pasos.

Inicio de sesión con CLI de Azure

Si aún no lo ha hecho, inicie sesión en Azure desde un terminal antes de abrir un cuaderno de Jupyter Notebook.

az login

Si no inicia sesión desde la terminal, debe autenticarse cada vez que se conecte a un área de trabajo de Quantum a través de Python. Si su cuenta tiene acceso a varias suscripciones, establezca la suscripción que incluye su Azure Quantum espacio de trabajo.

az account set --subscription <subscription-id>

Vuelva a ejecutar az login cuando expire la sesión o cuando desee usar una cuenta de Azure diferente.

Obtención del identificador de recurso del área de trabajo

  1. Inicie sesión en Azure Portal.
  2. Vaya al área de trabajo de Quantum en la que desea enviar el trabajo.
  3. En la página Información general , busque y copie el identificador de recurso.

Conexión a un área de trabajo

  1. Para conectarse al área de trabajo de Quantum, cree un Workspace objeto con el identificador de recurso que copió.

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

    Note

    Y

  2. Compruebe la conexión y consulte la targets disponible en el espacio de trabajo.

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

Para ver otras opciones de conexión y autenticación, consulte Conexión al Azure Quantum área de trabajo.

Note

En los ejemplos siguientes se envían trabajos al simulador targets. El targets disponible en el área de trabajo depende de los proveedores configurados.

Preparación y envío del programa

Elija la pestaña del lenguaje cuántico o del marco de trabajo.

Utilice el módulo qdk.qsharp para definir o cargar código Q#, compilar un punto de entrada a QIR y enviar QIR a un Azure Quantumtarget.

Definición y compilación del Q# programa

  1. Inicialice Q# con un QIRtarget perfil que Azure Quantumtarget admita.

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

    Para obtener más información sobre los perfiles QIRtarget, consulte los perfiles Azure QuantumQIRtarget en QDK.

  2. Defina una Q# operación. Por ejemplo, use la siguiente RandomBit operación.

    qsharp.eval("""
        operation RandomBit() : Result {
            use q = Qubit();
            H(q);
            return MResetZ(q);
        }
    """)
    
  3. Pruebe la operación en el simulador local.

    print(qsharp.run("RandomBit()", shots=10))
    
  4. Compile la operación a QIR.

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

Enviar la Q# tarea

  1. Seleccione una opción compatible target en el área de trabajo.

    target = workspace.get_targets("rigetti.sim.qvm")
    
  2. Envíe el programa compilado.

    job = target.submit(program, "qsharp-job", shots=100)
    print("Job ID:", job.id)
    
  3. Espere a que el trabajo se complete y recupere sus resultados.

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