Senden Sie Jobs an Azure Quantum mit dem QDKPython-Paket

Verwenden Sie das Microsoft Quantum Development Kit (QDK) Python-Paket, um Q#, OpenQASM, Qiskit, Cirq und PennyLane-Programme bei Azure Quantum einzureichen.

Dieser Artikel bietet Beispiele für die Übermittlung von Aufträgen für jede unterstützte Quantensprache und jedes unterstützte Framework. Einen interaktiven Q#- oder OpenQASM-Workflow, der keinen Python-Code erfordert, finden Sie unter Übermitteln von Jobs mit der Erweiterung QDK für VS Code.

Voraussetzungen

  • Ein Azure-Konto mit einem aktiven Abonnement.

  • Ein Azure Quantum Arbeitsbereich. Informationen zum Erstellen eines Arbeitsbereichs finden Sie unter "Erstellen eines Azure Quantum Arbeitsbereichs".

  • Python 3.10 oder neuer.

  • Wenn Sie ein Jupyter-Notebook verwenden, benötigen Sie eine Jupyter-Umgebung wie die Jupyter-Erweiterung für VS Code und das Paket ipykernel.

  • Installieren Sie Azure CLI mit der quantum Erweiterung.

    az extension add --upgrade --name quantum
    
  • Installieren Sie die neueste Version des qdkPython Pakets mit den azure Und jupyter Extras.

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

    Wenn Sie ein Qiskit oder Cirq Programm einreichen möchten, installieren Sie die cirq und qiskit Extras.

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

Verbinden Sie sich mit Ihrem Azure Quantum Arbeitsbereich

Bevor Sie einen Auftrag absenden, müssen Sie sich mit einem Azure Quantum Arbeitsbereich verbinden. Das qdk.azure Modul stellt das Workspace Objekt zum Herstellen einer Verbindung mit Azure Quantum Arbeitsbereichen bereit. Führen Sie die folgenden Schritte aus, um eine Verbindung mit Ihrem Arbeitsbereich herzustellen.

Anmelden mit Azure CLI

Falls noch nicht geschehen, melden Sie sich von einem Terminal aus bei Azure an, bevor Sie ein Jupyter-Notizbuch öffnen.

az login

Wenn Sie sich nicht über das Terminal anmelden, müssen Sie sich jedes Mal erneut authentifizieren, wenn Sie über Python eine Verbindung zu einem Quantum-Arbeitsbereich herstellen. Wenn Ihr Konto Zugriff auf mehrere Abonnements hat, legen Sie das Abonnement fest, das Ihren Azure Quantum Arbeitsbereich enthält.

az account set --subscription <subscription-id>

Führen Sie den Vorgang az login erneut aus, wenn die Sitzung abläuft oder wenn Sie ein anderes Azure Konto verwenden möchten.

Rufen Sie die Ressourcen-ID Ihres Arbeitsbereichs ab

  1. Melden Sie sich im Azure-Portal an.
  2. Wechseln Sie zum Quantum-Arbeitsbereich, in dem Sie Ihre Arbeit einreichen möchten.
  3. Suchen und kopieren Sie auf der Seite "Übersicht " die Ressourcen-ID.

Verbindung mit dem Arbeitsbereich herstellen

  1. Um eine Verbindung mit Ihrem Quantum-Arbeitsbereich herzustellen, erstellen Sie ein Workspace Objekt mit der Ressourcen-ID, die Sie kopiert haben.

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

    Note

    Y

  2. Überprüfen Sie die Verbindung und zeigen Sie die im Arbeitsbereich verfügbare targets an.

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

Weitere Verbindungs- und Authentifizierungsoptionen finden Sie unter Herstellen einer Verbindung mit Ihrem Azure Quantum Arbeitsbereich.

Note

In den folgenden Beispielen werden Aufträge an den Simulator targetsübermittelt. Die in Ihrem Arbeitsbereich verfügbaren targets hängen von Ihren konfigurierten Anbietern ab.

Vorbereiten und Übermitteln Ihres Programms

Wählen Sie die Registerkarte für Ihre Quantensprache oder Ihr Framework aus.

Verwenden Sie das qdk.qsharp-Modul, um Q#-Code zu definieren oder zu laden, einen Einstiegspunkt nach QIR zu kompilieren und QIR an ein Azure Quantumtarget zu übermitteln.

Definieren und Kompilieren des Q# Programms

  1. Initialisieren Sie Q# mit einem QIRtarget-Profil, das Azure Quantumtarget unterstützt.

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

    Weitere Informationen zu QIRtarget-Profilen finden Sie unter Azure QuantumQIRtarget Profilen in QDK.

  2. Definieren Sie einen Q# Vorgang. Verwenden Sie beispielsweise den folgenden RandomBit Vorgang.

    qsharp.eval("""
        operation RandomBit() : Result {
            use q = Qubit();
            H(q);
            return MResetZ(q);
        }
    """)
    
  3. Testen Sie den Vorgang im lokalen Simulator.

    print(qsharp.run("RandomBit()", shots=10))
    
  4. Kompilieren Sie den Vorgang in QIR.

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

Absenden des Q# Auftrags

  1. Wählen Sie aus Ihrem Arbeitsbereich einen kompatiblen target aus.

    target = workspace.get_targets("rigetti.sim.qvm")
    
  2. Übermitteln Sie das kompilierte Programm.

    job = target.submit(program, "qsharp-job", shots=100)
    print("Job ID:", job.id)
    
  3. Warten Sie, bis der Auftrag abgeschlossen ist, und rufen Sie dessen Ergebnisse ab.

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