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.
Erstellen Sie einen Hybrid-Job
In diesem Abschnitt erfahren Sie, wie Sie einen Hybrid-Job mithilfe eines Python-Skripts erstellen. Informationen zum Erstellen eines Hybrid-Jobs aus lokalem Python-Code, z. B. Ihrer bevorzugten integrierten Entwicklungsumgebung (IDE) oder einem Braket-Notebook, finden Sie unterFühren Sie Ihren lokalen Code als Hybrid-Job aus.
In diesem Abschnitt:
Erstellen und ausführen
Sobald Sie über eine Rolle mit Berechtigungen zur Ausführung eines Hybridjobs verfügen, können Sie fortfahren. Das Herzstück Ihres ersten Braket-Hybridjobs ist das Algorithmus-Skript. Es definiert den Algorithmus, den Sie ausführen möchten, und enthält die klassischen Logik- und Quantenaufgaben, die Teil Ihres Algorithmus sind. Zusätzlich zu Ihrem Algorithmus-Skript können Sie weitere Abhängigkeitsdateien bereitstellen. Das Algorithmusskript wird zusammen mit seinen Abhängigkeiten als Quellmodul bezeichnet. Der Einstiegspunkt definiert die erste Datei oder Funktion, die in Ihrem Quellmodul ausgeführt wird, wenn der Hybrid-Job gestartet wird.
Betrachten Sie zunächst das folgende grundlegende Beispiel für ein Algorithmus-Skript, das fünf Glockenzustände erzeugt und die entsprechenden Messergebnisse ausdruckt.
import os from braket.aws import AwsDevice from braket.circuits import Circuit def start_here(): print("Test job started!") # Use the device declared in the job script device = AwsDevice(os.environ["AMZN_BRAKET_DEVICE_ARN"]) bell = Circuit().h(0).cnot(0, 1) for count in range(5): task = device.run(bell, shots=100) print(task.result().measurement_counts) print("Test job completed!")
Speichern Sie diese Datei unter dem Namen algorithm_script.py in Ihrem aktuellen Arbeitsverzeichnis auf Ihrem Braket-Notebook oder in der lokalen Umgebung. Die Datei algorithm_script.py hat start_here() den geplanten Einstiegspunkt.
Erstellen Sie als Nächstes eine Python-Datei oder ein Python-Notebook im selben Verzeichnis wie die Datei algorithm_script.py. Dieses Skript startet den Hybrid-Job und übernimmt jegliche asynchrone Verarbeitung, z. B. das Drucken des Status oder der wichtigsten Ergebnisse, an denen wir interessiert sind. Dieses Skript muss mindestens Ihr Hybrid-Job-Skript und Ihr primäres Gerät angeben.
Anmerkung
Weitere Informationen zum Erstellen eines Braket-Notizbuchs oder zum Hochladen einer Datei, z. B. der Datei algorithm_script.py, in dasselbe Verzeichnis wie die Notebooks finden Sie unter Führen Sie Ihren ersten Circuit mit dem Amazon Braket Python SDK aus
Für diesen ersten einfachen Fall zielen Sie auf einen Simulator ab. Unabhängig davon, auf welche Art von Quantengerät Sie abzielen, einen Simulator oder eine tatsächliche Quantenverarbeitungseinheit (QPU), wird das Gerät, das Sie device im folgenden Skript angeben, zur Planung des Hybrid-Jobs verwendet und steht den Algorithmus-Skripten als Umgebungsvariable zur Verfügung. AMZN_BRAKET_DEVICE_ARN
Anmerkung
Sie können nur Geräte verwenden, die in Ihrem Hybrid-Job AWS-Region verfügbar sind. Das Amazon Braket SDK wählt dies AWS-Region automatisch aus. Beispielsweise kann ein Hybrid-Job in us-east-1 DM1 Geräte und verwenden IonQSV1, aber keine Geräte. Rigetti
Wenn Sie einen Quantencomputer anstelle eines Simulators wählen, plant Braket Ihre Hybrid-Jobs so, dass alle ihre Quantenaufgaben mit bevorzugtem Zugriff ausgeführt werden.
from braket.aws import AwsQuantumJob from braket.devices import Devices job = AwsQuantumJob.create( Devices.Amazon.SV1, source_module="algorithm_script.py", entry_point="algorithm_script:start_here", wait_until_complete=True )
Der Parameter wait_until_complete=True legt einen ausführlichen Modus fest, sodass Ihr Auftrag die Ausgabe des aktuellen Jobs druckt, während dieser ausgeführt wird. Sie sollten eine Ausgabe sehen, die dem folgenden Beispiel ähnelt.
Initializing Braket Job: arn:aws:braket:us-west-2:111122223333:job/braket-job-default-123456789012 Job queue position: 1 Job queue position: 1 Job queue position: 1 .............. . . . Beginning Setup Checking for Additional Requirements Additional Requirements Check Finished Running Code As Process Test job started! Counter({'00': 58, '11': 42}) Counter({'00': 55, '11': 45}) Counter({'11': 51, '00': 49}) Counter({'00': 56, '11': 44}) Counter({'11': 56, '00': 44}) Test job completed! Code Run Finished 2025-09-24 23:13:40,962 sagemaker-training-toolkit INFO Reporting training SUCCESS
Anmerkung
Sie können Ihr benutzerdefiniertes Modul auch mit der AwsQuantumJob.create
Überwachen Sie Ihre Ergebnisse
Alternativ können Sie auf die Protokollausgabe von Amazon zugreifen CloudWatch. Gehen Sie dazu im linken Menü der Jobdetailseite zur Registerkarte Protokollgruppen, wählen Sie die Protokollgruppe aws/braket/jobs aus und wählen Sie dann den Log-Stream aus, der den Jobnamen enthält. Im obigen Beispiel ist dies braket-job-default-1631915042705/algo-1-1631915190.
Sie können den Status des Hybrid-Jobs auch in der Konsole anzeigen, indem Sie die Seite Hybrid-Jobs und dann Einstellungen auswählen.
Ihr Hybrid-Job erzeugt während der Ausführung einige Artefakte in Amazon S3. Der Standardname für den S3-Bucket lautet amazon-braket-<region>-<accountid> und der Inhalt befindet sich im jobs/<jobname>/<timestamp> Verzeichnis. Sie können die S3-Speicherorte konfigurieren, an denen diese Artefakte gespeichert werden, indem Sie code_location bei der Erstellung des Hybrid-Jobs mit dem Braket Python SDK einen anderen angeben.
Anmerkung
Dieser S3-Bucket muss sich im selben befinden AWS-Region wie Ihr Job-Skript.
Das jobs/<jobname>/<timestamp> Verzeichnis enthält einen Unterordner mit der Ausgabe des Einstiegspunkt-Skripts in einer model.tar.gz Datei. Es gibt auch ein Verzeichnis namensscript, das Ihre Algorithmus-Skript-Artefakte in einer source.tar.gz Datei enthält. Die Ergebnisse Ihrer eigentlichen Quantenaufgaben befinden sich in dem benannten Verzeichnisjobs/<jobname>/tasks.
Speichern Sie Ihre Ergebnisse
Sie können die vom Algorithmus-Skript generierten Ergebnisse speichern, sodass sie im Hybrid-Job-Objekt im Hybrid-Job-Skript sowie im Ausgabeordner in Amazon S3 (in einer Tar-Datei mit dem Namen model.tar.gz) verfügbar sind.
Die Ausgabe muss in einer Datei im Format JavaScript Object Notation (JSON) gespeichert werden. Wenn die Daten nicht ohne Weiteres in Text serialisiert werden können, wie im Fall eines Numpy-Arrays, könnten Sie eine Option zur Serialisierung mithilfe eines gebeizten Datenformats übergeben. Weitere Informationen finden Sie im Modul braket.jobs.data_persistence.
Um die Ergebnisse der Hybrid-Jobs zu speichern, fügen Sie der Datei algorithm_script.py die folgenden Zeilen hinzu, die mit #ADD kommentiert sind.
import os from braket.aws import AwsDevice from braket.circuits import Circuit from braket.jobs import save_job_result # ADD def start_here(): print("Test job started!") device = AwsDevice(os.environ['AMZN_BRAKET_DEVICE_ARN']) results = [] # ADD bell = Circuit().h(0).cnot(0, 1) for count in range(5): task = device.run(bell, shots=100) print(task.result().measurement_counts) results.append(task.result().measurement_counts) # ADD save_job_result({"measurement_counts": results}) # ADD print("Test job completed!")
Anschließend können Sie die Ergebnisse des Jobs aus Ihrem Job-Skript anzeigen, indem Sie die mit #ADD print(job.result()) kommentierte Zeile anhängen.
import time from braket.aws import AwsQuantumJob job = AwsQuantumJob.create( source_module="algorithm_script.py", entry_point="algorithm_script:start_here", device="arn:aws:braket:::device/quantum-simulator/amazon/sv1", ) print(job.arn) while job.state() not in AwsQuantumJob.TERMINAL_STATES: print(job.state()) time.sleep(10) print(job.state()) print(job.result()) # ADD
In diesem Beispiel haben wir es entfernt, wait_until_complete=True um eine ausführliche Ausgabe zu unterdrücken. Sie können es zum Debuggen wieder hinzufügen. Wenn Sie diesen Hybrid-Job ausführen, gibt er die ID und den ausjob-arn, gefolgt vom Status des Hybrid-Jobs alle 10 SekundenCOMPLETED, bis der Hybrid-Job abgeschlossen ist. Danach werden Ihnen die Ergebnisse der Klingelschaltung angezeigt. Sehen Sie sich das folgende Beispiel an.
arn:aws:braket:us-west-2:111122223333:job/braket-job-default-123456789012 INITIALIZED RUNNING RUNNING RUNNING RUNNING RUNNING RUNNING RUNNING RUNNING RUNNING RUNNING ... RUNNING RUNNING COMPLETED {'measurement_counts': [{'11': 53, '00': 47},..., {'00': 51, '11': 49}]}
Checkpoints verwenden
Sie können Zwischenversionen Ihrer Hybrid-Jobs mithilfe von Checkpoints speichern. Im Algorithmus-Skriptbeispiel aus dem vorherigen Abschnitt würden Sie die folgenden Zeilen hinzufügen, die mit #ADD kommentiert sind, um Checkpoint-Dateien zu erstellen.
from braket.aws import AwsDevice from braket.circuits import Circuit from braket.jobs import save_job_checkpoint # ADD import os def start_here(): print("Test job starts!") device = AwsDevice(os.environ["AMZN_BRAKET_DEVICE_ARN"]) # ADD the following code job_name = os.environ["AMZN_BRAKET_JOB_NAME"] save_job_checkpoint(checkpoint_data={"data": f"data for checkpoint from {job_name}"}, checkpoint_file_suffix="checkpoint-1") # End of ADD bell = Circuit().h(0).cnot(0, 1) for count in range(5): task = device.run(bell, shots=100) print(task.result().measurement_counts) print("Test hybrid job completed!")
Wenn Sie den Hybrid-Job ausführen, erstellt er die Datei <jobname>-checkpoint-1.json in Ihren Hybrid-Job-Artefakten im Checkpoint-Verzeichnis mit einem Standardpfad. /opt/jobs/checkpoints Das Hybrid-Job-Skript bleibt unverändert, sofern Sie diesen Standardpfad nicht ändern möchten.
Wenn Sie einen Hybrid-Job von einem Checkpoint laden möchten, der durch einen vorherigen Hybrid-Job generiert wurde, verwendet from braket.jobs import load_job_checkpoint das Algorithmus-Skript Folgendes. Die Logik zum Laden in Ihr Algorithmus-Skript lautet wie folgt.
from braket.jobs import load_job_checkpoint checkpoint_1 = load_job_checkpoint( "previous_job_name", checkpoint_file_suffix="checkpoint-1", )
Nachdem Sie diesen Checkpoint geladen haben, können Sie Ihre Logik basierend auf dem Inhalt fortsetzen, in den checkpoint-1 geladen wurde.
Anmerkung
Das checkpoint_file_suffix muss mit dem Suffix übereinstimmen, das zuvor beim Erstellen des Checkpoints angegeben wurde.
Ihr Orchestrierungsskript muss den job-arn aus dem vorherigen Hybrid-Job mit der mit #ADD kommentierten Zeile angeben.
from braket.aws import AwsQuantumJob job = AwsQuantumJob.create( source_module="source_dir", entry_point="source_dir.algorithm_script:start_here", device="arn:aws:braket:::device/quantum-simulator/amazon/sv1", copy_checkpoints_from_job="<previous-job-ARN>", #ADD )