So übermitteln Sie einen PennyLane-Schaltkreis an Azure Quantum

PennyLane ist ein Open-Source-Python Framework für die Quantenprogrammierung. Mit dem MicrosoftQuantum Development Kit (QDK) können Sie ein Quantenprogramm in PennyLane schreiben, das Programm in QIR konvertieren und dann den QIR übermitteln, um auf Azure Quantum Zielen auszuführen. In diesem Artikel wird gezeigt, wie Sie ein PennyLane-Programm von einem Jupyter-Notizbuch in Visual Studio Code (VS Code) an Azure Quantum übermitteln.

Weitere Informationen zu PennyLane finden Sie auf der PennyLane-Website.

Voraussetzungen

Zum Übermitteln eines PennyLane-Programms zum Azure Quantum mithilfe der QDKPython-Bibliothek müssen Sie über einen Azure Quantum Arbeitsbereich in Ihrem Azure-Abonnement verfügen. Zur Erstellung eines Arbeitsbereichs, siehe bitte Erstellen eines Azure Quantum Arbeitsbereichs.

Um die Schritte in diesem Artikel auszuführen, müssen Sie folgendes haben:

  • Eine Python-Umgebung mit Python und Pip.

  • VS Code mit installierten Erweiterungen Python und Jupyter.

  • Die neueste Version der qdkPython-Bibliothek mit der azure-Erweiterung.

    pip install --upgrade "qdk[azure]"
    
  • Die neueste Version der PennyLanePython Bibliothek.

    pip install --upgrade "pennylane"
    

Übermitteln eines PennyLane-Programms an Azure Quantum als QIR

In den folgenden Schritten wird erläutert, wie Sie ein -Programm schreiben, das Programm in konvertieren und das Programm mithilfe der bibliothek < > an Azure Quantum übermitteln.

Importieren der erforderlichen Pakete und Objekte

  1. Öffnen Sie im VS Code das Menü "Ansicht" , und wählen Sie "Befehlspalette" aus.

  2. Geben Sie Erstellen: Neues Jupyter-Notizbuch ein. Ein leeres Jupyter-Notizbuch wird auf einer neuen Registerkarte geöffnet.

  3. Führen Sie in der ersten Zelle des Notizbuchs die folgenden Importe aus:

    import pennylane as qml
    from qdk.openqasm import compile
    from qdk.azure import Workspace
    from qdk import TargetProfile
    

Erstellen einer PennyLane Schaltung

  1. Führen Sie den folgenden Code in einer neuen Zelle aus, um einen parametrisierten Schaltkreis namens PennyLane zu erstellen:

    device = qml.device('default.qubit', wires=2)
    
    @qml.qnode(device)
    def param_circ(theta):
        qml.H(0); qml.CNOT(wires=[0,1])
        qml.RY(theta, wires=1)
        return qml.expval(qml.PauliZ(1))
    

    Dieser Schaltkreis verwendet den Parameter theta , um eine Drehung mit dem RY Gate anzuwenden.

  2. Zeichnen Sie den Schaltkreis für einen bestimmten Wert von theta, z. B 0.3. . .

    print(qml.draw(param_circ)(0.3))
    

Konvertieren des PennyLane Programms in QIR

Um das programm PennyLane an Azure Quantum zu übermitteln, müssen Sie das Programm in OpenQASM konvertieren und dann den OpenQASM in QIR konvertieren.

  1. Konvertieren Sie das PennyLane Programm in OpenQASM.

    qasm_str = qml.to_openqasm(param_circ)(theta)
    
  2. Legen Sie ein QIR Zielprofil fest, und konvertieren Sie es OpenQASM in QIR.

    target_profile = TargetProfile.Base
    qir = compile(qasm_str, target_profile)
    

    Hinweis

    Das Zielprofil muss mit dem Azure Quantum Ziel kompatibel sein, an das Sie Ihren Auftrag übermitteln. Weitere Informationen zu QIR Zielprofilen finden Sie unter Differente Typen von Zielprofilen in Azure Quantum.

Verbindung mit Ihrem Azure Quantum Arbeitsbereich herstellen

Um eine Verbindung mit Ihrem Azure Quantum Arbeitsbereich herzustellen, benötigen Sie die Ressourcen-ID des Arbeitsbereichs. Führen Sie die folgenden Schritte aus, um die Ressourcen-ID zu finden:

  1. Melden Sie sich beim Azure-Portal an.
  2. Wechseln Sie zu Ihrem Azure Quantum-Arbeitsbereich.
  3. Öffnen Sie den Bereich "Übersicht ".
  4. Kopieren Sie den Wert im Feld "Ressourcen-ID ".

Um eine Verbindung mit Ihrem Arbeitsbereich herzustellen, führen Sie den folgenden Code in Ihrem Jupyter-Notizbuch aus:

workspace = Workspace(resource_id="") # Add the resource ID of your workspace

Übermitteln des Programms an Azure Quantum

  1. Legen Sie Ihre Auftragsparameter fest, einschließlich des Azure Quantum Zielnamens und der Anzahl der Aufnahmen. In diesem Beispiel ist das Ziel der kostenlose Rigetti-Simulator.

    # Define parameters for the job submission
    target_name = 'rigetti.sim.qvm'
    job_name = 'pennylane-job'
    shots = 100
    
    # Define parameter for the circuit
    theta = 0.3
    

    Hinweis

    Sie können nur an Azure Quantum Ziele übermitteln, die in Ihrem Arbeitsbereich verfügbar sind. Um Ihre verfügbaren Ziele anzuzeigen, wechseln Sie im Azure Portal zum Bereich Providers.

  2. Legen Sie das Ziel fest, und führen Sie den Auftrag aus.

    target = workspace.get_targets(target_name)
    job = target.submit(qir, job_name, shots)
    
  3. Jobergebnisse anzeigen.

    results = job.get_results()
    print(results)