Inviare processi a Azure Quantum con il pacchetto QDKPython

Usare il pacchetto Microsoft Quantum Development Kit (QDK) Python per inviare i programmi Q#, Qiskit, OpenQASM, Cirq e PennyLane a Azure Quantum.

Questo articolo fornisce esempi di invio di processi per ogni linguaggio quantistico o framework supportato. Per un flusso di lavoro interattivo Q# o OpenQASM che non richiede codice Python, vedere Inviare processi tramite l'estensione QDK per VS Code.

Prerequisiti

  • Un account Azure con una sottoscrizione attiva.

  • Un'area Azure Quantum di lavoro. Per crearne uno, vedere Creare un'area Azure Quantum di lavoro.

  • Python 3.10 o versione successiva.

  • Se si utilizza un notebook Jupyter, un ambiente Jupyter come l'estensione Jupyter per VS Code e il pacchetto ipykernel.

  • Installare interfaccia della riga di comando di Azure con l'estensione quantum .

    az extension add --upgrade --name quantum
    
  • Installare la versione più recente del pacchetto qdkPython con i componenti aggiuntivi azure e jupyter.

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

    Se si desidera inviare un programma Qiskit o Cirq, installare i componenti aggiuntivi cirq e qiskit.

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

Connettersi all'area Azure Quantum di lavoro

Prima di inviare un'attività, devi connetterti a un'area di lavoro Azure Quantum. Il qdk.azure modulo fornisce l'oggetto Workspace per connettersi alle Azure Quantum aree di lavoro. Per connettersi all'area di lavoro, seguire questa procedura.

Accedere con interfaccia della riga di comando di Azure

Se non è già stato fatto, accedere a Azure da un terminale prima di aprire un notebook di Jupyter.

az login

Se non si accede dal terminale, è necessario eseguire l'autenticazione ogni volta che ci si connette a un'area di lavoro Quantum tramite Python. Se il tuo account ha accesso a più sottoscrizioni, seleziona la sottoscrizione che contiene la tua area di lavoro Azure Quantum.

az account set --subscription <subscription-id>

Eseguire az login di nuovo quando la sessione scade o quando si vuole usare un account di Azure diverso.

Ottieni l'ID della risorsa dell'area di lavoro

  1. Accedi al portale di Azure.
  2. Vai al workspace Quantum in cui vuoi inviare il job.
  3. Nella pagina Panoramica trovare e copiare l'ID risorsa.

Connettersi all'area di lavoro

  1. Per connettersi all'area di lavoro Quantum, creare un Workspace oggetto con l'ID risorsa copiato.

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

    Note

  2. Verificare la connessione e visualizzare l'oggetto targets disponibile nell'area di lavoro.

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

Per altre opzioni di connessione e autenticazione, vedere Connettersi all'area Azure Quantum di lavoro.

Note

Gli esempi seguenti inviano processi al simulatore targets. Le targets disponibili nella tua area di lavoro dipendono dai provider configurati.

Preparare e inviare il programma

Scegliere la scheda per il linguaggio quantistico o il framework.

Utilizzare il modulo qdk.qsharp per definire o caricare il codice Q#, compilare un punto d’ingresso in QIR e inviare il QIR a un oggetto Azure Quantumtarget.

Definire e compilare il Q# programma

  1. Inizializzare Q# con un profilo QIRtarget supportato da Azure Quantumtarget.

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

    Per ulteriori informazioni sui profili QIRtarget, vedere Azure QuantumQIRtarget profili nel QDK.

  2. Definire un'operazione Q#. Ad esempio, usare l'operazione seguente RandomBit .

    qsharp.eval("""
        operation RandomBit() : Result {
            use q = Qubit();
            H(q);
            return MResetZ(q);
        }
    """)
    
  3. Testare l'operazione nel simulatore locale.

    print(qsharp.run("RandomBit()", shots=10))
    
  4. Compila l'operazione in QIR.

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

Invia il Q# processo

  1. Seleziona un elemento compatibile target dal tuo spazio di lavoro.

    target = workspace.get_targets("rigetti.sim.qvm")
    
  2. Inviare il programma compilato.

    job = target.submit(program, "qsharp-job", shots=100)
    print("Job ID:", job.id)
    
  3. Attendere il completamento del processo e recuperarne i risultati.

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