Baue deine erste Schaltung - Amazon Braket

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.

Baue deine erste Schaltung

Nachdem Ihre Notebook-Instanz gestartet wurde, öffnen Sie die Instanz mit einer Standard-Jupyter-Oberfläche, indem Sie das gerade erstellte Notebook auswählen.

Notebook-Oberfläche, die eine bestehende Notebook-Instanz amazon-braket-test mit dem Namen Status InService und dessen Namen anzeigt. URL

Amazon Braket-Notebook-Instances sind mit Amazon Braket SDK und all seinen Abhängigkeiten vorinstalliert. Erstellen Sie zunächst ein neues Notebook mit Kernel. conda_braket

Launcher-Oberfläche für Notebooks, Console und andere Tools wie Terminal, Textdatei, Markdown-Datei, Python-Datei mit hervorgehobener Python-Umgebung conda_braket.

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 SDK Braket-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 wird mit einem lokalen Simulator für schnelles Prototyping und Testen geliefert. 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 wie dieses sehen:

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

Der spezifische Bell-Zustand, den Sie vorbereitet haben, ist eine gleiche Superposition von |00> und |11>, und Sie werden einen ungefähr gleichen Wert finden (bis zu shot erwartungsgemäß eine Rauschverteilung von 00 und 11 als Messergebnisse.

Lassen Sie Ihre Schaltung auf einem On-Demand-Simulator laufen

Amazon Braket bietet auch Zugriff auf einen leistungsstarken On-Demand-Simulator, SV1, für den Betrieb größerer Schaltungen. SV1 ist ein On-Demand-Zustandsvektor-Simulator, der die Simulation von Quantenschaltkreisen von bis zu 34 ermöglicht qubits. Weitere Informationen finden Sie auf SV1 im Abschnitt Unterstützte Geräte und in der AWS Konsole. Beim Ausführen von Quantenaufgaben auf SV1 (und weiter TN1 oder ein beliebigesQPU), die Ergebnisse Ihrer Quantenaufgabe werden in einem S3-Bucket in Ihrem Konto gespeichert. Wenn Sie keinen Bucket angeben, SDK erstellt Braket 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 amzn-s3-demo-bucket als Ihr Bucket-Name angezeigt wird. Bucket-Namen für Amazon Klammern 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 = "amzn-s3-demo-bucket" # the name of the folder in the bucket my_prefix = "simulation-output" s3_folder = (my_bucket, my_prefix)

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

# 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. Navigieren Sie in der Konsole zum Tab Quantum Tasks und Ihre Quantenaufgabe sollte ganz oben auf 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 einem 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 von IonQ, IQM, QuEra, und Rigetti. 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 instanziiert wird IQM Gerät.

# choose the IQM hardware to run your circuit device = AwsDevice("arn:aws:braket:eu-north-1::device/qpu/iqm/Garnet")

Oder wähle 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/Aria-1")

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 der Amazon 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, SDK fragt Amazon Braket 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 a nicht verfügbar QPU 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'