Führen Sie Ihre erste Schaltung mit dem Amazon Braket Python SDK aus - Amazon Braket

Lernen Sie die Grundlagen des Quantencomputers kennen mit! AWS Melden Sie sich für den Amazon Braket Digital Learning Plan an und verdienen Sie sich Ihr eigenes digitales Badge, nachdem Sie eine Reihe von Lernkursen und eine digitale Prüfung abgeschlossen haben.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Führen Sie Ihre erste Schaltung mit dem Amazon Braket Python SDK aus

Nachdem Ihre Notebook-Instance gestartet wurde, öffnen Sie die Instance mit einer Standard-Jupyter-Schnittstelle, indem Sie das Notebook auswählen, das Sie gerade erstellt haben.

Konsolenseite

AmazonAuf den Braket-Notebook-Instanzen ist das Amazon Braket-SDK mit all seinen Abhängigkeiten vorinstalliert. Erstellen Sie zunächst ein neues Notebook mit Kernel. conda_braket

Jupyter öffnen

Sie können mit einem einfachen „Hallo, Welt!“ beginnen Beispiel. Konstruieren Sie zunächst eine Schaltung, die einen Bell-Zustand vorbereitet, und führen Sie diese Schaltung dann auf verschiedenen Geräten aus, um die Ergebnisse zu erhalten.

Importieren Sie zunächst die Amazon Braket-SDK-Module und definieren Sie einen einfachen Bell-State-Schaltkreis.

import boto3 from braket.aws import AwsDevice from braket.devices import LocalSimulator from braket.circuits import Circuit # create the circuit bell = Circuit().h(0).cnot(0, 1)

Sie können den Schaltkreis mit diesem Befehl visualisieren:

print(bell)

Führen Sie Ihre Schaltung auf dem lokalen Simulator aus

Wählen Sie als Nächstes das Quantengerät aus, auf dem die Schaltung ausgeführt werden soll. Das Amazon Braket SDK enthält einen lokalen Simulator für schnelles Prototyping und Testen. Wir empfehlen die Verwendung des lokalen Simulators für kleinere Schaltungen, die bis zu 25 sein können qubits (abhängig von Ihrer lokalen Hardware).

So instanziieren Sie den lokalen Simulator:

# instantiate the local simulator local_sim = LocalSimulator()

und führe die Schaltung aus:

# run the circuit result = local_sim.run(bell, shots=1000).result() counts = result.measurement_counts print(counts)

Sie sollten ein Ergebnis sehen, das in etwa so aussieht:

Counter({'11': 503, '00': 497})

Der spezifische Bell-Zustand, den Sie vorbereitet haben, ist eine gleichmäßige Überlagerung von |00> und |11>, und Sie werden erwartungsgemäß eine ungefähr gleiche (bis zum shot Rauschen) Verteilung von 00 und 11 als Messergebnisse feststellen.

Führen Sie Ihre Schaltung auf einem On-Demand-Simulator aus

AmazonBraket bietet auch Zugriff auf einen leistungsstarken On-Demand-Simulator für den Betrieb größerer Schaltungen. SV1 SV1ist ein On-Demand-Zustandsvektorsimulator, der die Simulation von Quantenschaltkreisen von bis zu 34 ermöglicht. qubits Weitere Informationen finden Sie SV1 im Abschnitt Unterstützte Geräte und in der AWS Konsole. Wenn Sie Quantenaufgaben auf SV1 (und auf TN1 oder einer beliebigen QPU) ausführen, werden die Ergebnisse Ihrer Quantenaufgabe in einem S3-Bucket in Ihrem Konto gespeichert. Wenn Sie keinen Bucket angeben, erstellt das Braket SDK einen Standard-Bucket amazon-braket-{region}-{accountID} für Sie. Weitere Informationen finden Sie unter Zugriff auf Amazon Braket verwalten.

Anmerkung

Geben Sie Ihren tatsächlichen, vorhandenen Bucket-Namen ein, wobei das folgende Beispiel example-bucket als Ihr Bucket-Name angezeigt wird. Bucket-Namen für Amazon Braket beginnen immer mit, amazon-braket- gefolgt von anderen identifizierenden Zeichen, die Sie hinzufügen. Informationen zur Einrichtung eines S3-Buckets finden Sie unter Erste Schritte mit Amazon S3.

# get the account ID aws_account_id = boto3.client("sts").get_caller_identity()["Account"] # the name of the bucket my_bucket = "example-bucket" # the name of the folder in the bucket my_prefix = "simulation-output" s3_folder = (my_bucket, my_prefix)

Um einen Circuit auszuführenSV1, müssen Sie den Speicherort des S3-Buckets angeben, den Sie zuvor als Positionsargument im .run() Aufruf ausgewählt haben.

# choose the cloud-based on-demand simulator to run your circuit device = AwsDevice("arn:aws:braket:::device/quantum-simulator/amazon/sv1") # run the circuit task = device.run(bell, s3_folder, shots=100) # display the results print(task.result().measurement_counts)

Die Amazon Braket-Konsole bietet weitere Informationen zu Ihrer Quantenaufgabe. Navigiere in der Konsole zur Registerkarte Quantenaufgaben und deine Quantenaufgabe sollte ganz oben in der Liste stehen. Alternativ können Sie anhand der eindeutigen Quantenaufgaben-ID oder anderer Kriterien nach Ihrer Quantenaufgabe suchen.

Anmerkung

Nach 90 Tagen entfernt Amazon Braket automatisch alle Quantenaufgaben-IDs und andere Metadaten, die mit Ihren Quantenaufgaben verknüpft sind. Weitere Informationen finden Sie unter Datenspeicherung.

Läuft auf einer QPU

Mit Amazon Braket können Sie das vorherige Quantenschaltungsbeispiel auf einem physikalischen Quantencomputer ausführen, indem Sie einfach eine einzige Codezeile ändern. Amazon Braket bietet Zugriff auf QPU Geräte vonIonQ, Oxford Quantum CircuitsQuEra, undRigetti. Informationen zu den verschiedenen Geräten und Verfügbarkeitsfenstern finden Sie im Abschnitt Unterstützte Geräte und in der AWS Konsole unter dem Tab Geräte. Das folgende Beispiel zeigt, wie ein Rigetti Gerät instanziiert wird.

# choose the Rigetti hardware to run your circuit device = AwsDevice("arn:aws:braket:us-west-1::device/qpu/rigetti/Aspen-M-3")

Wählen Sie ein IonQ Gerät mit diesem Code:

# choose the Ionq device to run your circuit device = AwsDevice("arn:aws:braket:us-east-1::device/qpu/ionq/Harmony")

Nachdem Sie ein Gerät ausgewählt haben und bevor Sie Ihren Workload ausführen, können Sie mit dem folgenden Code die Tiefe der Gerätewarteschlange abfragen, um die Anzahl der Quantenaufgaben oder Hybrid-Jobs zu ermitteln. Darüber hinaus können sich Kunden die gerätespezifischen Warteschlangentiefen auf der Geräteseite von anzeigen lassenAmazon Braket Management Console.

# Print your queue depth print(device.queue_depth().quantum_tasks) # returns the number of quantum tasks queued on the device {<QueueType.NORMAL: 'Normal'>: '0', <QueueType.PRIORITY: 'Priority'>: '0'} print(device.queue_depth().jobs) '2' # returns the number of hybrid jobs queued on the device

Wenn Sie Ihre Aufgabe ausführen, fragt das Amazon Braket SDK nach einem Ergebnis ab (mit einem Standard-Timeout von 5 Tagen). Sie können diese Standardeinstellung ändern, indem Sie den poll_timeout_seconds Parameter im .run() Befehl ändern, wie im folgenden Beispiel gezeigt. Denken Sie daran, dass bei einem zu kurzen Abfrage-Timeout möglicherweise keine Ergebnisse innerhalb der Abfragezeit zurückgegeben werden, z. B. wenn eine QPU nicht verfügbar ist und ein lokaler Timeout-Fehler zurückgegeben wird. Sie können die Abfrage erneut starten, indem Sie die Funktion aufrufen. task.result()

# define quantum task with 1 day polling timeout task = device.run(bell, s3_folder, poll_timeout_seconds=24*60*60) print(task.result().measurement_counts)

Darüber hinaus können Sie nach dem Absenden Ihrer Quantenaufgabe oder Ihres Hybrid-Jobs die queue_position() Funktion aufrufen, um Ihre Warteschlangenposition zu überprüfen.

print(task.queue_position().queue_position) # Return the number of quantum tasks queued ahead of you '2'