

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.

# Ausführen Ihrer Quantenaufgaben mit Amazon Braket
<a name="braket-using"></a>

Braket bietet sicheren On-Demand-Zugriff auf verschiedene Arten von Quantencomputern. Sie haben Zugriff auf Gate-basierte Quantencomputer vonAQT, IonQ IQMRigetti, und sowie auf einen analogen Hamilton-Simulator von. QuEra Sie haben auch keine Vorabverpflichtung und müssen sich den Zugang nicht über einzelne Anbieter sichern.
+ Die [Amazon Braket-Konsole](https://console.aws.amazon.com/braket/home) bietet Geräteinformationen und Status, um Sie bei der Erstellung, Verwaltung und Überwachung Ihrer Ressourcen und Quantenaufgaben zu unterstützen.
+ Senden Sie Quantenaufgaben über das [Amazon Braket Python SDK](https://github.com/aws/amazon-braket-sdk-python) sowie über die Konsole und führen Sie sie aus. Auf das SDK kann über vorkonfigurierte Amazon Braket-Notebooks zugegriffen werden.
+ Auf die [Amazon Braket-API](https://docs.aws.amazon.com/braket/latest/APIReference/Welcome.html) kann über das Amazon Braket Python SDK und Notebooks zugegriffen werden. Sie können direkt das aufrufen, API wenn Sie Anwendungen entwickeln, die mit Quantencomputern programmgesteuert arbeiten.

Die Beispiele in diesem Abschnitt zeigen, wie Sie API direkt mit Amazon Braket arbeiten können, indem Sie das Amazon Braket Python SDK zusammen mit dem [AWS Python SDK für Braket (](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/braket.html)Boto3) verwenden.

 **Mehr über das Amazon Braket Python SDK** 

Um mit dem Amazon Braket Python SDK zu arbeiten, installieren Sie zunächst das AWS Python SDK für Braket (Boto3), damit Sie mit dem kommunizieren können. AWS API Sie können sich das Amazon Braket Python SDK als praktischen Wrapper rund um Boto3 für Quantenkunden vorstellen.
+ Boto3 enthält Schnittstellen, auf die Sie zugreifen müssen. AWS API (Beachten Sie, dass Boto3 ein großes Python-SDK ist, das mit dem kommuniziert. AWS API Die meisten AWS-Services unterstützen eine Boto3-Schnittstelle.)
+ Das Amazon Braket Python SDK enthält Softwaremodule für Schaltungen, Gatter, Geräte, Ergebnistypen und andere Teile einer Quantenaufgabe. Jedes Mal, wenn Sie ein Programm erstellen, importieren Sie die Module, die Sie für diese Quantenaufgabe benötigen.
+ Auf das Amazon Braket Python SDK kann über Notebooks zugegriffen werden, auf denen alle Module und Abhängigkeiten vorinstalliert sind, die Sie für die Ausführung von Quantenaufgaben benötigen.
+ Sie können Module aus dem Amazon Braket Python SDK in jedes Python-Skript importieren, wenn Sie nicht mit Notebooks arbeiten möchten.

Nachdem Sie [Boto3 installiert](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html) haben, sieht eine Übersicht der Schritte zum Erstellen einer Quantenaufgabe über das Amazon Braket Python SDK wie folgt aus:

1. (Optional) Öffnen Sie Ihr Notizbuch.

1. Importieren Sie die SDK-Module, die Sie für Ihre Schaltungen benötigen.

1. Geben Sie eine QPU oder einen Simulator an.

1. Instanziieren Sie die Schaltung.

1. Führen Sie die Schaltung aus.

1. Sammle die Ergebnisse.

Die Beispiele in diesem Abschnitt zeigen Details zu den einzelnen Schritten.

Weitere Beispiele finden Sie im [Amazon Braket Examples](https://github.com/aws/amazon-braket-examples) Repository unter GitHub.

**Topics**
+ [Einreichen von Quantenaufgaben an QPUs](braket-submit-tasks.md)
+ [Mehrere Programme ausführen](braket-batching-tasks.md)
+ [Wann wird meine Quantenaufgabe ausgeführt?](braket-task-when.md)
+ [Mit Reservierungen arbeiten](braket-reservations.md)
+ [Techniken zur Fehlerminimierung](braket-error-mitigation.md)

# Einreichen von Quantenaufgaben an QPUs
<a name="braket-submit-tasks"></a>

Amazon Braket bietet Zugriff auf mehrere Geräte, die Quantenaufgaben ausführen können. Sie können Quantenaufgaben einzeln einreichen oder die [Batchverarbeitung von Quantenaufgaben](https://docs.aws.amazon.com/braket/latest/developerguide/braket-batching-tasks.html) einrichten.

 **Quantenverarbeitungseinheiten () QPUs** 

Sie können Quantenaufgaben QPUs jederzeit an senden, aber die Aufgabe wird innerhalb bestimmter Verfügbarkeitsfenster ausgeführt, die auf der **Geräteseite** der Amazon Braket-Konsole angezeigt werden. Sie können die Ergebnisse der Quantenaufgabe mit der Quantenaufgaben-ID abrufen, die im nächsten Abschnitt vorgestellt wird.
+  ** AQT IBEX-Q1 ** : `arn:aws:braket:eu-north-1::device/qpu/aqt/Ibex-Q1` 
+  ** IonQ Forte-1 ** : `arn:aws:braket:us-east-1::device/qpu/ionq/Forte-1` 
+  ** IonQ Forte-Enterprise-1 ** : `arn:aws:braket:us-east-1::device/qpu/ionq/Forte-Enterprise-1` 
+  ** IQM Garnet ** : `arn:aws:braket:eu-north-1::device/qpu/iqm/Garnet` 
+  ** IQM Emerald ** : `arn:aws:braket:eu-north-1::device/qpu/iqm/Emerald` 
+  ** QuEra Aquila ** : `arn:aws:braket:us-east-1::device/qpu/quera/Aquila` 
+  ** Rigetti Ankaa-3 ** : `arn:aws:braket:us-west-1::device/qpu/rigetti/Ankaa-3` 

**Anmerkung**  
Sie können Quantenaufgaben im `CREATED` Status „Für“ QPUs und „On-Demand-Simulatoren“ stornieren. Für On-Demand-Simulatoren und können Quantenaufgaben im `QUEUED` Status nach bestem Wissen und Gewissen storniert werden. QPUs Beachten Sie, dass es unwahrscheinlich ist, dass `QUEUED` QPU-Quantenaufgaben während der QPU-Verfügbarkeitsfenster erfolgreich storniert werden.

**Topics**
+ [AQT](#braket-qpu-partner-aqt)
+ [IonQ](#braket-qpu-partner-ionq)
+ [IQM](#braket-qpu-partner-iqm)
+ [Rigetti](#braket-qpu-partner-rigetti)
+ [QuEra](#braket-qpu-partner-quera)
+ [Beispiel: Eine Quantenaufgabe an eine QPU einreichen](braket-submit-to-qpu.md)
+ [Inspektion kompilierter Schaltungen](braket-compiled-circuits-inspecting.md)

## AQT
<a name="braket-qpu-partner-aqt"></a>

AQTDie IBEX-Q1 QPU basiert auf einem Kristall aus 40 Ca \$1 -Ionen in einer makroskopischen Hochfrequenzfalle, die sich in einer Ultrahochvakuumkammer befindet. Das Gerät läuft bei Raumtemperatur und passt in zwei 19-Zoll-Racks, die für Rechenzentren geeignet sind.

Die niedrigen Heizraten der Falle und die Verwendung eines direkten optischen Übergangs für die Qubit-Rotation ermöglichen High-Fidelity-Gates. Der Qubit-Übergang wird durch einen Laser mit schmaler Linienbreite angetrieben, der eine sehr hohe relative Frequenzstabilität aufweist. Die Qubits zeichnen sich außerdem durch eine effiziente Zustandserfassung und Ablesung durch optische Ablage aus. All-to-allDie Konnektivität wird durch die weitreichende Coulomb-Wechselwirkung im Ionenkristall erreicht. Die Adressierung und das Auslesen von Einzelionen werden durch die Verwendung einer Linse mit hoher numerischer Apertur erreicht.

Das AQT Gerät unterstützt die folgenden Quantengatter.

```
'ccnot', 'cnot', 'cphaseshift', 'cphaseshift00', 'cphaseshift01', 'cphaseshift10', 'cswap', 'swap', 'iswap', 'pswap', 'ecr', 'cy', 'cz', 'xy', 'xx', 'yy', 'zz', 'h', 'i', 'phaseshift', 'rx', 'ry', 'rz', 's', 'si', 't', 'ti', 'v', 'vi', 'x', 'y', 'z', 'prx'
```

Bei wörtlicher Kompilierung unterstützt das AQT Gerät die folgenden systemeigenen Gatter.

```
'prx', 'xx', 'rz'
```

**Anmerkung**  
Im Folgenden werden äquivalente Gates zwischen AQT nativen Gates und Amazon Braket beschrieben:  
Das Tor von AQT Mølmer-Sørensen (MS oder RXX) entspricht dem Tor von Braket `'xx'`
Das AQT R-Gate entspricht dem Braket-Gate `'prx'`
Die `'rz'` Gate-Benennung ist dieselbe

## IonQ
<a name="braket-qpu-partner-ionq"></a>

IonQbietet Gate-basierte Lösungen auf QPUs Basis der Ionenfallentechnologie. IonQ's QPUs Die eingefangenen Ionen bestehen aus einer Kette gefangener 171Yb\$1-Ionen, die durch eine mikrogefertigte Oberflächenelektrodenfalle in einer Vakuumkammer räumlich begrenzt werden.

IonQGeräte unterstützen die folgenden Quantengatter.

```
'x', 'y', 'z', 'rx', 'ry', 'rz', 'h', 'cnot', 's', 'si', 't', 'ti', 'v', 'vi', 'xx', 'yy', 'zz', 'swap'
```

Bei wörtlicher Kompilierung IonQ QPUs unterstützen sie die folgenden nativen Gatter.

```
'gpi', 'gpi2', 'ms'
```

Wenn Sie bei der Verwendung des nativen MS-Gates nur zwei Phasenparameter angeben, wird ein vollständig verschränktes MS-Gate ausgeführt. Ein vollständig verschränktes MS-Gate führt immer eine π /2-Drehung durch. Um einen anderen Winkel anzugeben und ein teilweise verschränktes MS-Gatter auszuführen, geben Sie den gewünschten Winkel an, indem Sie einen dritten Parameter hinzufügen. [Weitere Informationen finden Sie im Modul braket.circuits.gate.](https://amazon-braket-sdk-python.readthedocs.io/en/latest/_apidoc/braket.circuits.gate.html)

Diese systemeigenen Gates können nur bei wörtlicher Kompilierung verwendet werden. [Weitere Informationen zur wörtlichen Kompilierung finden Sie unter Verbatim-Kompilierung.](https://docs.aws.amazon.com/braket/latest/developerguide/braket-constructing-circuit.html#verbatim-compilation)

## IQM
<a name="braket-qpu-partner-iqm"></a>

IQMQuantenprozessoren sind Geräte mit universellen Gate-Modellen, die auf supraleitenden Transmon-Qubits basieren. Das IQM Garnet ist ein 20-Qubit-Gerät, während es sich um ein 54-Qubit-Gerät handelt. IQM Emerald Beide Geräte verwenden eine quadratische Gittertopologie, die auch als Kristallgittertopologie bezeichnet wird.

Die IQM Geräte unterstützen die folgenden Quantengatter.

```
"ccnot", "cnot", "cphaseshift", "cphaseshift00", "cphaseshift01", "cphaseshift10", "cswap", "swap", "iswap", "pswap", "ecr", "cy", "cz", "xy", "xx", "yy", "zz", "h", "i", "phaseshift", "rx", "ry", "rz", "s", "si", "t", "ti", "v", "vi", "x", "y", "z"
```

Bei wörtlicher Kompilierung unterstützen die IQM Geräte die folgenden systemeigenen Gatter.

```
'cz', 'prx'
```



## Rigetti
<a name="braket-qpu-partner-rigetti"></a>

RigettiQuantenprozessoren sind universell einsetzbare Maschinen im Gate-Modell, die auf vollständig einstellbarer Supraleitung basieren. qubits
+ Das Ankaa-3 System ist ein 84-Qubit-Gerät, das skalierbare Multi-Chip-Technologie nutzt.

Das Rigetti Gerät unterstützt die folgenden Quantengatter.

```
'cz', 'xy', 'ccnot', 'cnot', 'cphaseshift', 'cphaseshift00', 'cphaseshift01', 'cphaseshift10', 'cswap', 'h', 'i', 'iswap', 'phaseshift', 'pswap', 'rx', 'ry', 'rz', 's', 'si', 'swap', 't', 'ti', 'x', 'y', 'z'
```

Ankaa-3Unterstützt bei wörtlicher Kompilierung die folgenden systemeigenen Gatter.

```
'rx', 'rz', 'iswap'
```

 RigettiSupraleitende Quantenprozessoren können das „Rx“ -Gatter nur mit den Winkeln ±π /2 oder ±π betreiben.

Die Rigetti-Geräte verfügen über eine Pulssteuerung, die eine Reihe von vordefinierten Frames der folgenden Typen für das System unterstützen. Ankaa-3

```
`flux_tx`, `charge_tx`, `readout_rx`, `readout_tx`
```

Das Ankaa-3 Gerät hat eine maximale Grenze von 20.000 Gates pro Stromkreis. Schaltungen, die diesen Grenzwert überschreiten, werden mit einem Validierungsfehler zurückgewiesen. Dies ist ein fester Grenzwert, der nicht erhöht werden kann. Die Gatteranzahl bezieht sich auf die kompilierte Schaltung, die sich von der Gatteranzahl der ursprünglichen unkompilierten Schaltung unterscheiden kann. Um die Anzahl der kompilierten Gates vor der Übermittlung an die QPU abzuschätzen, können Sie die wörtliche Kompilierung lokal verwenden oder Ihre Schaltung auf das native Gate-Set (,,) transpilieren. `rx` `rz` `iswap`

## QuEra
<a name="braket-qpu-partner-quera"></a>

QuErabietet Geräte auf Basis neutraler Atome, mit denen Quantenaufgaben der analogen Hamiltonschen Simulation (AHS) ausgeführt werden können. Diese Spezialgeräte reproduzieren originalgetreu die zeitabhängige Quantendynamik von Hunderten von gleichzeitig wechselwirkenden Qubits.

Man kann diese Geräte nach dem Paradigma der analogen Hamiltonschen Simulation programmieren, indem man das Layout des Qubit-Registers und die zeitliche und räumliche Abhängigkeit der manipulierenden Felder vorschreibt. Amazon Braket bietet Hilfsprogramme zum Erstellen solcher Programme über das AHS-Modul des Python-SDK,`braket.ahs`.

Weitere Informationen finden Sie in den [Beispielnotizbüchern zur analogen Hamiltonschen Simulation](https://github.com/aws/amazon-braket-examples/tree/main/examples/analog_hamiltonian_simulation) oder auf der [Seite Submit an analog program using QuEra's Aquila](braket-quera-submitting-analog-program-aquila.md).

# Beispiel: Eine Quantenaufgabe an eine QPU einreichen
<a name="braket-submit-to-qpu"></a>

Mit Amazon Braket können Sie eine Quantenschaltung auf einem QPU-Gerät ausführen. Das folgende Beispiel zeigt, wie Sie eine Quantenaufgabe an Rigetti unsere Geräte senden. IonQ

 **Wählen Sie das Rigetti Ankaa-3 Gerät aus und schauen Sie sich dann das zugehörige Konnektivitätsdiagramm an** 

```
# import the QPU module
from braket.aws import AwsDevice
# choose the Rigetti device
device = AwsDevice("arn:aws:braket:us-west-1::device/qpu/rigetti/Ankaa-3")

# take a look at the device connectivity graph
device.properties.dict()['paradigm']['connectivity']
```

```
{'fullyConnected': False,
 'connectivityGraph': {'0': ['1', '7'],
  '1': ['0', '2', '8'],
  '2': ['1', '3', '9'],
  '3': ['2', '4', '10'],
  '4': ['3', '5', '11'],
  '5': ['4', '6', '12'],
  '6': ['5', '13'],
  '7': ['0', '8', '14'],
  '8': ['1', '7', '9', '15'],
  '9': ['2', '8', '10', '16'],
  '10': ['3', '9', '11', '17'],
  '11': ['4', '10', '12', '18'],
  '12': ['5', '11', '13', '19'],
  '13': ['6', '12', '20'],
  '14': ['7', '15', '21'],
  '15': ['8', '14', '22'],
  '16': ['9', '17', '23'],
  '17': ['10', '16', '18', '24'],
  '18': ['11', '17', '19', '25'],
  '19': ['12', '18', '20', '26'],
  '20': ['13', '19', '27'],
  '21': ['14', '22', '28'],
  '22': ['15', '21', '23', '29'],
  '23': ['16', '22', '24', '30'],
  '24': ['17', '23', '25', '31'],
  '25': ['18', '24', '26', '32'],
  '26': ['19', '25', '33'],
  '27': ['20', '34'],
  '28': ['21', '29', '35'],
  '29': ['22', '28', '30', '36'],
  '30': ['23', '29', '31', '37'],
  '31': ['24', '30', '32', '38'],
  '32': ['25', '31', '33', '39'],
  '33': ['26', '32', '34', '40'],
  '34': ['27', '33', '41'],
  '35': ['28', '36', '42'],
  '36': ['29', '35', '37', '43'],
  '37': ['30', '36', '38', '44'],
  '38': ['31', '37', '39', '45'],
  '39': ['32', '38', '40', '46'],
  '40': ['33', '39', '41', '47'],
  '41': ['34', '40', '48'],
  '42': ['35', '43', '49'],
  '43': ['36', '42', '44', '50'],
  '44': ['37', '43', '45', '51'],
  '45': ['38', '44', '46', '52'],
  '46': ['39', '45', '47', '53'],
  '47': ['40', '46', '48', '54'],
  '48': ['41', '47', '55'],
  '49': ['42', '56'],
  '50': ['43', '51', '57'],
  '51': ['44', '50', '52', '58'],
  '52': ['45', '51', '53', '59'],
  '53': ['46', '52', '54'],
  '54': ['47', '53', '55', '61'],
  '55': ['48', '54', '62'],
  '56': ['49', '57', '63'],
  '57': ['50', '56', '58', '64'],
  '58': ['51', '57', '59', '65'],
  '59': ['52', '58', '60', '66'],
  '60': ['59'],
  '61': ['54', '62', '68'],
  '62': ['55', '61', '69'],
  '63': ['56', '64', '70'],
  '64': ['57', '63', '65', '71'],
  '65': ['58', '64', '66', '72'],
  '66': ['59', '65', '67'],
  '67': ['66', '68'],
  '68': ['61', '67', '69', '75'],
  '69': ['62', '68', '76'],
  '70': ['63', '71', '77'],
  '71': ['64', '70', '72', '78'],
  '72': ['65', '71', '73', '79'],
  '73': ['72', '80'],
  '75': ['68', '76', '82'],
  '76': ['69', '75', '83'],
  '77': ['70', '78'],
  '78': ['71', '77', '79'],
  '79': ['72', '78', '80'],
  '80': ['73', '79', '81'],
  '81': ['80', '82'],
  '82': ['75', '81', '83'],
  '83': ['76', '82']}}
```

Das vorherige Wörterbuch `connectivityGraph` listet die benachbarten Qubits für jedes Qubit im Rigetti Gerät auf.

 **Wählen Sie das Gerät IonQ Forte-Enterprise-1** 

Für das IonQ Forte-Enterprise-1 Gerät `connectivityGraph` ist der leer, wie im folgenden Beispiel gezeigt, weil das Gerät *all-to-all*Konnektivität bietet. Daher `connectivityGraph` ist eine detaillierte Angabe nicht erforderlich.

```
# or choose the IonQ Forte-Enterprise-1 device
device = AwsDevice("arn:aws:braket:us-east-1::device/qpu/ionq/Forte-Enterprise-1")

# take a look at the device connectivity graph
device.properties.dict()['paradigm']['connectivity']
```

```
{'fullyConnected': True, 'connectivityGraph': {...}}
```

Wie im folgenden Beispiel gezeigt, haben Sie die Möglichkeit, den shots (Standard=1000), den `poll_timeout_seconds` (Standard = 432000 = 5 Tage), den `poll_interval_seconds` (Standard = 1) und den Speicherort des S3-Buckets (`s3_location`), in dem Ihre Ergebnisse gespeichert werden, anzupassen, wenn Sie einen anderen Speicherort als den Standard-Bucket angeben.

```
my_task = device.run(circ, s3_location = 'amazon-braket-my-folder', shots=100, poll_timeout_seconds = 100, poll_interval_seconds = 10)
```

Die IonQ Rigetti Geräte kompilieren die bereitgestellte Schaltung automatisch in ihre jeweiligen nativen Gate-Sets und ordnen die abstrakten qubit Indizes den physikalischen qubits auf der jeweiligen QPU zu.

**Anmerkung**  
QPU-Geräte haben eine begrenzte Kapazität. Sie können mit längeren Wartezeiten rechnen, wenn die Kapazität erreicht ist.

 Amazon Braket kann QPU-Quantenaufgaben innerhalb bestimmter Verfügbarkeitsfenster ausführen, aber Sie können Quantenaufgaben trotzdem jederzeit (rund um die Uhr) einreichen, da alle entsprechenden Daten und Metadaten zuverlässig im entsprechenden S3-Bucket gespeichert werden. Wie im nächsten Abschnitt gezeigt, können Sie Ihre Quantenaufgabe mithilfe Ihrer eindeutigen `AwsQuantumTask` Quantenaufgaben-ID wiederherstellen.

# Inspektion kompilierter Schaltungen
<a name="braket-compiled-circuits-inspecting"></a>

Wenn ein Quantenschaltkreis auf einem Hardwaregerät wie einer Quantenverarbeitungseinheit (QPU) ausgeführt werden muss, muss der Schaltkreis zunächst in ein akzeptables Format kompiliert werden, das das Gerät verstehen und verarbeiten kann. Zum Beispiel die Transpilierung des Quantenschaltkreises auf hoher Ebene bis zu den spezifischen nativen Gates, die von der QPU-Zielhardware unterstützt werden. Die Überprüfung der tatsächlich kompilierten Ausgabe des Quantenschaltkreises kann für Debugging- und Optimierungszwecke äußerst nützlich sein. Dieses Wissen kann helfen, potenzielle Probleme, Engpässe oder Möglichkeiten zur Verbesserung der Leistung und Effizienz der Quantenanwendung zu identifizieren. Mithilfe des unten angegebenen Codes können Sie die kompilierte Ausgabe Ihrer Quantenschaltkreise sowohl für Quantencomputergeräte als auch für IQM Quantencomputergeräte anzeigen Rigetti und analysieren. 

```
task = AwsQuantumTask(arn=task_id, aws_session=session)
# After the task has finished running
task_result = task.result()
compiled_circuit = task_result.get_compiled_circuit()
```

**Anmerkung**  
Derzeit wird die Anzeige der kompilierten Schaltkreisausgabe für IonQ Geräte nicht unterstützt.

# Mehrere Programme ausführen
<a name="braket-batching-tasks"></a>

Amazon Braket bietet zwei Ansätze für die effiziente Ausführung mehrerer Quantenprogramme: Programmsätze und Batching von Quantenaufgaben.

**Programmgruppen** sind die bevorzugte Methode, um Workloads mit mehreren Programmen auszuführen. Sie ermöglichen es Ihnen, mehrere Programme in einer einzigen Amazon Braket-Quantenaufgabe zu bündeln. Programmgruppen bieten [Leistungsverbesserungen](https://aws.amazon.com/blogs/quantum-computing/amazon-braket-introduces-program-sets-enabling-customers-to-run-quantum-programs-up-to-24x-faster/) und Kosteneinsparungen im Vergleich zur individuellen Einreichung von Programmen, insbesondere wenn sich die Anzahl der Programmausführungen 100 nähert. 

Derzeit unterstützen IQM alle Rigetti Geräte Programmpakete. Bevor Sie Programmpakete an einreichen QPUs, wird empfohlen, zuerst [auf dem Amazon Braket Local Simulator zu testen](https://docs.aws.amazon.com/braket/latest/developerguide/braket-send-to-local-simulator.html). Um zu überprüfen, ob ein Gerät Programmsets unterstützt, können Sie die [Eigenschaften des Geräts](https://github.com/amazon-braket/amazon-braket-examples/blob/main/examples/braket_features/Getting_Devices_and_Checking_Device_Properties.ipynb) mit dem Amazon Braket SDK oder die Geräteseite in der [Amazon Braket-Konsole](https://console.aws.amazon.com/braket/) aufrufen.

Das folgende Beispiel zeigt, wie ein Programmsatz ausgeführt wird.

```
from math import pi
from braket.devices import LocalSimulator
from braket.program_sets import ProgramSet
from braket.circuits import Circuit

program_set = ProgramSet([
    Circuit().h(0).cnot(0,1),
    Circuit().rx(0, pi/4).ry(1, pi/8).cnot(1,0),
    Circuit().t(0).t(1).cz(0,1).s(0).cz(1,2).s(1).s(2),
])

device = LocalSimulator()
result = device.run(program_set, shots=300).result()
print(result[0][0].counts)  # The result of the first program in the program set
```

Weitere Informationen über verschiedene Methoden zum Erstellen einer Programmgruppe (z. B. zum Konstruieren einer Programmgruppe aus vielen Observablen oder Parametern mit einem einzigen Programm) und zum Abrufen von Programmgruppenergebnissen finden Sie im Abschnitt [Programmgruppen](https://docs.aws.amazon.com/braket/latest/developerguide/braket-constructing-circuit.html#braket-program-set) im *Amazon Braket Developer Guide* und im [Ordner Program Sets](https://github.com/amazon-braket/amazon-braket-examples/tree/main/examples/braket_features/program_sets) im Github-Repository Braket-Beispiele.

**Quantum Task Batching** ist auf jedem Amazon Braket-Gerät verfügbar. Batching ist besonders nützlich für Quantenaufgaben, die Sie auf den On-Demand-Simulatoren (SV1, DM1 oderTN1) ausführen, da sie mehrere Quantenaufgaben parallel verarbeiten können. Durch Batching können Sie Quantenaufgaben parallel starten. Wenn Sie beispielsweise eine Berechnung durchführen möchten, für die 10 Quantenaufgaben erforderlich sind und die Programme in diesen Quantenaufgaben unabhängig voneinander sind, empfiehlt es sich, Task-Batching zu verwenden. Verwenden Sie Quantentask-Batching, wenn Sie Workloads mit mehreren Programmen auf einem Gerät ausführen, das keine Programmgruppen unterstützt.

Das folgende Beispiel zeigt, wie ein Stapel von Quantenaufgaben ausgeführt wird.

```
from braket.circuits import Circuit
from braket.devices import LocalSimulator

bell = Circuit().h(0).cnot(0, 1)
circuits = [bell for _ in range(5)]

device = LocalSimulator()
batch = device.run_batch(circuits, shots=100)
print(batch.results()[0].measurement_counts)  # The result of the first quantum task in the batch
```

Genauere Informationen zur Batchverarbeitung finden Sie in den [Amazon Braket-Beispielen](https://github.com/amazon-braket/amazon-braket-examples) unter. GitHub

**Topics**
+ [Informationen zum Programmumfang und zu den Kosten](#braket-program-sets-costs)
+ [Informationen zur Batchverarbeitung und zu den Kosten von Quantenaufgaben](#braket-batching-costs)
+ [Batching von Quantenaufgaben und PennyLane](#braket-batching-pennylane)
+ [Batching von Aufgaben und parametrisierte Schaltungen](#braket-batching-parametrized-circuits)

## Informationen zum Programmumfang und zu den Kosten
<a name="braket-program-sets-costs"></a>

Mit Programmsätzen können mehrere Quantenprogramme effizient ausgeführt werden, indem sie bis zu 100 Programme oder Parametersätze in einer einzigen Quantenaufgabe zusammenfassen. Bei Programmsets zahlen Sie nur eine Gebühr pro Aufgabe zuzüglich der Gebühren pro Schuss, die auf der Gesamtzahl der Aufnahmen aller Programme basieren, wodurch die Kosten im Vergleich zur Einreichung einzelner Programme erheblich gesenkt werden. Dieser Ansatz ist besonders vorteilhaft bei Workloads mit vielen Programmen und einer geringen Anzahl von Aufnahmen pro Programm. Programmsätze werden derzeit auf IQM allen Rigetti Geräten sowie im Amazon Braket Local Simulator unterstützt. 

Weitere Informationen finden Sie im Abschnitt [Programmgruppen mit](https://docs.aws.amazon.com/braket/latest/developerguide/braket-constructing-circuit.html#braket-program-set) detaillierten Implementierungsschritten, bewährten Methoden und Codebeispielen.

## Informationen zur Batchverarbeitung und zu den Kosten von Quantenaufgaben
<a name="braket-batching-costs"></a>

Einige Vorbehalte, die Sie in Bezug auf die Batch- und Abrechnungskosten für Quantenaufgaben beachten sollten:
+ Standardmäßig wiederholt die Batchverarbeitung bei Quantenaufgaben die Zeitüberschreitung oder schlägt dreimal fehl.
+ Ein Stapel lang andauernder Quantenaufgaben, wie z. B. 34 qubits fürSV1, kann hohe Kosten verursachen. Achten Sie darauf, die `run_batch` Zuweisungswerte sorgfältig zu überprüfen, bevor Sie mit einer Reihe von Quantenaufgaben beginnen. Wir empfehlen nicht, TN1 mit zu verwenden`run_batch`.
+  TN1kann Kosten für fehlgeschlagene Aufgaben in der Probenphase verursachen (weitere Informationen finden Sie in [der TN1 Beschreibung](https://docs.aws.amazon.com/braket/latest/developerguide/braket-devices.html#braket-simulator-tn1)). Automatische Wiederholungsversuche können die Kosten in die Höhe treiben. Wir empfehlen daher, die Anzahl der 'max\$1retries' beim Batching auf 0 zu setzen, wenn sie verwendet werden TN1 (siehe [Quantum](https://github.com/aws/amazon-braket-sdk-python/blob/4c7c3b28e5a17b8f0cddf94377b7734fcbe2ebfc/src/braket/aws/aws_quantum_task_batch.py#L186) Task Batching, Zeile 186).

## Batching von Quantenaufgaben und PennyLane
<a name="braket-batching-pennylane"></a>

Nutzen Sie die Batching-Funktion, wenn Sie PennyLane Amazon Braket verwenden, indem Sie festlegen, `parallel = True` wann Sie ein Amazon Braket-Gerät instanziieren, wie im folgenden Beispiel gezeigt.

```
import pennylane as qml

# Define the number of wires (qubits) you want to use
wires = 2  # For example, using 2 qubits

# Define your S3 bucket 
my_bucket = "amazon-braket-s3-demo-bucket"
my_prefix = "pennylane-batch-output"
s3_folder = (my_bucket, my_prefix)

device = qml.device("braket.aws.qubit", 
                    device_arn="arn:aws:braket:::device/quantum-simulator/amazon/sv1", 
                    wires=wires, 
                    s3_destination_folder=s3_folder, 
                    parallel=True)
```

[Weitere Informationen zur Stapelverarbeitung mit finden Sie unter Parallelisierte Optimierung von PennyLane Quantenschaltkreisen.](https://github.com/aws/amazon-braket-examples/blob/main/examples/pennylane/1_Parallelized_optimization_of_quantum_circuits/1_Parallelized_optimization_of_quantum_circuits.ipynb)

## Batching von Aufgaben und parametrisierte Schaltungen
<a name="braket-batching-parametrized-circuits"></a>

Wenn Sie einen Quanten-Task-Batch einreichen, der parametrisierte Schaltungen enthält, können Sie entweder ein `inputs` Wörterbuch bereitstellen, das für alle Quantenaufgaben im Stapel verwendet wird, oder ein `list` Eingabewörterbuch, in welchem Fall `i` das -te Wörterbuch mit `i` der -ten Aufgabe verknüpft wird, wie im folgenden Beispiel gezeigt.

```
from braket.circuits import Circuit, FreeParameter, Observable
from braket.aws import AwsQuantumTaskBatch, AwsDevice

# Define your quantum device
device = AwsDevice("arn:aws:braket:::device/quantum-simulator/amazon/sv1")

# Create the free parameters
alpha = FreeParameter('alpha')
beta = FreeParameter('beta')

# Create two circuits
circ_a = Circuit().rx(0, alpha).ry(1, alpha).cnot(0, 2).xx(0, 2, beta)
circ_a.variance(observable=Observable.Z(), target=0)

circ_b = Circuit().rx(0, alpha).rz(1, alpha).cnot(0, 2).zz(0, 2, beta)
circ_b.expectation(observable=Observable.Z(), target=2)

# Use the same inputs for both circuits in one batch
tasks = device.run_batch([circ_a, circ_b], inputs={'alpha': 0.1, 'beta': 0.2})

# Or provide each task its own set of inputs
inputs_list = [{'alpha': 0.3, 'beta': 0.1}, {'alpha': 0.1, 'beta': 0.4}]

tasks = device.run_batch([circ_a, circ_b], inputs=inputs_list)
```

Sie können auch eine Liste von Eingabewörterbüchern für einen einzelnen parametrischen Schaltkreis erstellen und diese als Quanten-Task-Batch einreichen. Wenn die Liste N Eingabewörterbücher enthält, enthält der Stapel N Quantenaufgaben. Die `i` -te Quantenaufgabe entspricht der Schaltung, die mit dem `i` -th Eingabewörterbuch ausgeführt wird. 

```
from braket.circuits import Circuit, FreeParameter

# Create a parametric circuit
circ = Circuit().rx(0, FreeParameter('alpha'))

# Provide a list of inputs to execute with the circuit
inputs_list = [{'alpha': 0.1}, {'alpha': 0.2}, {'alpha': 0.3}]

tasks = device.run_batch(circ, inputs=inputs_list, shots=100)
```

# Wann wird meine Quantenaufgabe ausgeführt?
<a name="braket-task-when"></a>

Wenn Sie einen Circuit einreichen, sendet Amazon Braket ihn an das von Ihnen angegebene Gerät. Die Quantum Processing Unit (QPU) und die Quantenaufgaben des On-Demand-Simulators werden in der Reihenfolge ihres Eingangs in die Warteschlange gestellt und verarbeitet. Die Zeit, die benötigt wird, um Ihre Quantenaufgabe nach dem Absenden zu bearbeiten, hängt von der Anzahl und Komplexität der von anderen Amazon Braket-Kunden eingereichten Aufgaben und der Verfügbarkeit der ausgewählten QPU ab.

**Topics**
+ [QPU-Verfügbarkeitsfenster und Status](#braket-qpu-availability)
+ [Sichtbarkeit der Warteschlange](#braket-queue-visibility)
+ [Richten Sie E-Mail- oder SMS-Benachrichtigungen ein](status-change-notifications-in-email-or-sms.md)

## QPU-Verfügbarkeitsfenster und Status
<a name="braket-qpu-availability"></a>

Die Verfügbarkeit von QPU variiert von Gerät zu Gerät.

Auf der **Geräteseite** der Amazon Braket-Konsole können Sie die aktuellen und bevorstehenden Verfügbarkeitsfenster und den Gerätestatus sehen. Darüber hinaus zeigt jede Geräteseite individuelle Warteschlangentiefen für Quantenaufgaben und Hybrid-Jobs. 

Ein Gerät gilt unabhängig vom Verfügbarkeitsfenster als *offline*, wenn es für Kunden nicht verfügbar ist. Beispielsweise könnte es aufgrund von geplanten Wartungsarbeiten, Upgrades oder Betriebsproblemen offline sein.

## Sichtbarkeit der Warteschlange
<a name="braket-queue-visibility"></a>

Bevor Sie eine Quantenaufgabe oder einen Hybridauftrag einreichen, können Sie anhand der Warteschlangentiefe des Geräts überprüfen, wie viele Quantenaufgaben oder Hybridaufträge noch vor Ihnen liegen.

**Tiefe der Warteschlange**

Queue depthbezieht sich auf die Anzahl der Quantenaufgaben und Hybrid-Jobs, die sich für ein bestimmtes Gerät in der Warteschlange befinden. Auf die Anzahl der Warteschlangen für Quantenaufgaben und Hybrid-Jobs eines Geräts kann über das Symbol Braket Software Development Kit (SDK) oder Amazon Braket Management Console zugegriffen werden. 

1. Die *Tiefe der Aufgabenwarteschlange* bezieht sich auf die Gesamtzahl der Quantenaufgaben, die derzeit darauf warten, mit normaler Priorität ausgeführt zu werden.

1. Die *Tiefe der Warteschlange für Prioritätsaufgaben* bezieht sich auf die Gesamtzahl der eingereichten Quantenaufgaben, die darauf warten, bearbeitet zu Amazon Braket Hybrid Jobs werden. Diese Aufgaben werden vor eigenständigen Aufgaben ausgeführt.

1. Die *Warteschlangentiefe für Hybridaufträge* bezieht sich auf die Gesamtzahl der Hybridaufträge, die sich derzeit auf einem Gerät in der Warteschlange befinden. Quantum tasksDie im Rahmen eines Hybridauftrags eingereichten Aufträge haben Priorität und werden in der zusammengefasst. Priority Task Queue

Kunden, die die Tiefe der Warteschlange über einsehen möchten, Braket SDK können den folgenden Codeausschnitt ändern, um die Warteschlangenposition ihrer Quantenaufgabe oder ihres Hybrid-Jobs zu ermitteln: 

```
device = AwsDevice("arn:aws:braket:us-east-1::device/qpu/ionq/Forte-Enterprise-1")

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


# returns the number of hybrid jobs queued on the device
print(device.queue_depth().jobs)
'3'
```

Wenn Sie eine Quantenaufgabe oder einen Hybrid-Job an eine QPU senden, kann dies dazu führen, dass sich Ihr Workload in einem Zustand befindet. `QUEUED` Amazon Braket bietet Kunden Einblick in ihre Warteschlangenposition für Quantenaufgaben und Hybrid-Jobs. 

**Position in der Warteschlange**

Queue positionbezieht sich auf die aktuelle Position Ihrer Quantenaufgabe oder Ihres Hybrid-Jobs innerhalb einer entsprechenden Gerätewarteschlange. Sie kann für Quantenaufgaben oder Hybridjobs über das Braket Software Development Kit (SDK) oder abgerufen Amazon Braket Management Console werden. 

Kunden, die die Warteschlangenposition über das einsehen möchten, Braket SDK können den folgenden Codeausschnitt ändern, um die Warteschlangenposition ihrer Quantenaufgabe oder ihres Hybrid-Jobs zu ermitteln: 

```
# choose the device to run your circuit 
device = AwsDevice("arn:aws:braket:eu-north-1::device/qpu/iqm/Garnet")
 
#execute the circuit 
task = device.run(bell, s3_folder, shots=100)

# retrieve the queue position information
print(task.queue_position().queue_position)
    
# Returns the number of Quantum Tasks queued ahead of you
'2'
        

from braket.aws import AwsQuantumJob

job = AwsQuantumJob.create(
    "arn:aws:braket:eu-north-1::device/qpu/iqm/Garnet",
    source_module="algorithm_script.py",
    entry_point="algorithm_script:start_here",
    wait_until_complete=False
)

# retrieve the queue position information
print(job.queue_position().queue_position)
'3' # returns the number of hybrid jobs queued ahead of you
```

# Richten Sie E-Mail- oder SMS-Benachrichtigungen ein
<a name="status-change-notifications-in-email-or-sms"></a>

Amazon Braket sendet Ereignisse an Amazon, EventBridge wenn sich die Verfügbarkeit einer QPU ändert oder wenn sich der Status Ihrer Quantenaufgabe ändert. Gehen Sie wie folgt vor, um Benachrichtigungen über die Änderung des Geräte- und Quanten-Task-Status per E-Mail oder SMS zu erhalten:

1. Erstellen Sie ein Amazon SNS SNS-Thema und ein Abonnement für E-Mail oder SMS. Die Verfügbarkeit von E-Mail oder SMS hängt von Ihrer Region ab. Weitere Informationen finden Sie unter [Erste Schritte mit Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html) und [Senden von SMS-Nachrichten](https://docs.aws.amazon.com/sns/latest/dg/sns-mobile-phone-number-as-subscriber.html).

1. Erstellen Sie eine Regel EventBridge , die Benachrichtigungen zu Ihrem SNS-Thema auslöst. Weitere Informationen finden Sie unter [Amazon Braket mit Amazon EventBridge überwachen](braket-monitor-eventbridge.md).

## (Optional) Richten Sie SNS-Benachrichtigungen ein
<a name="braket-sns-notifications"></a>

Sie können Benachrichtigungen über den Amazon Simple Notification Service (SNS) einrichten, sodass Sie eine Benachrichtigung erhalten, wenn Ihre Amazon Braket-Quantenaufgabe abgeschlossen ist. Aktive Benachrichtigungen sind nützlich, wenn Sie mit einer langen Wartezeit rechnen, z. B. wenn Sie eine umfangreiche Quantenaufgabe einreichen oder wenn Sie eine Quantenaufgabe außerhalb des Verfügbarkeitsfensters eines Geräts einreichen. Wenn Sie nicht warten möchten, bis die Quantenaufgabe abgeschlossen ist, können Sie eine SNS-Benachrichtigung einrichten.

Ein Amazon Braket-Notizbuch führt Sie durch die Einrichtungsschritte. Weitere Informationen finden Sie in [den Amazon Braket-Beispielen GitHub](https://github.com/aws/amazon-braket-examples) und insbesondere [im Beispiel-Notizbuch zum Einrichten von Benachrichtigungen](https://github.com/aws/amazon-braket-examples/tree/main/examples/braket_features).

# Mit Reservierungen arbeiten
<a name="braket-reservations"></a>

Reservierungen geben Ihnen exklusiven Zugriff auf das Quantengerät Ihrer Wahl. Sie können nach Belieben eine Reservierung vereinbaren, sodass Sie genau wissen, wann die Ausführung Ihres Workloads beginnt und endet. Reservierungen sind für alle Braket-Geräte in Abständen von 1 Stunde möglich und können bis zu 48 Stunden im Voraus ohne zusätzliche Kosten storniert werden. Wir empfehlen, Quantenaufgaben und Hybrid-Jobs für eine bevorstehende Reservierung im Voraus in die Warteschlange zu stellen, indem Sie Ihren Braket Direct-Reservierungs-ARN verwenden oder Workloads während Ihrer Reservierung einreichen.

Die Kosten für den Zugriff auf dedizierte Geräte richten sich nach der Dauer Ihrer Reservierung, unabhängig davon, wie viele Quantenaufgaben und Hybridjobs Sie auf der Quantenverarbeitungseinheit (QPU) ausführen. Eine aktualisierte Liste der Quantencomputer, die für Reservierungen verfügbar sind, finden Sie auf unserer [Preisseite](https://aws.amazon.com/braket/pricing/) oder über die [Amazon Braket-Managementkonsole](https://us-east-1.console.aws.amazon.com/braket/home?region=us-east-1#/devices). 

**Anmerkung**  
Bei einer Reservierung gibt es keine [Gateshot-Limits](braket-terms.md#gateshot-limit-term). Darüber hinaus wurde bei IonQ Geräten die Mindestanzahl von Schüssen für Aufgaben zur [Fehlerminimierung](https://docs.aws.amazon.com/braket/latest/developerguide/braket-error-mitigation.html) auf 500 reduziert (gegenüber 2500 für On-Demand-Aufgaben).

 **Wann sollte man eine Reservierung nutzen** 

Die Nutzung des Reservierungszugriffs bietet Ihnen den Komfort und die Vorhersehbarkeit, genau zu wissen, wann die Ausführung Ihres Quanten-Workloads beginnt und endet. Im Vergleich zur Übermittlung von Aufgaben und hybriden Aufträgen auf Abruf müssen Sie nicht in einer Warteschlange mit anderen Kundenaufgaben warten. Da Sie während Ihrer Reservierung exklusiven Zugriff auf das Gerät haben, werden während der gesamten Reservierung nur Ihre Workloads auf dem Gerät ausgeführt.

Wir empfehlen, den On-Demand-Zugriff für die Entwurfs- und Prototypingphase Ihrer Forschung zu verwenden, um eine schnelle und kostengünstige Iteration Ihrer Algorithmen zu ermöglichen. Sobald Sie bereit sind, die endgültigen Versuchsergebnisse zu erstellen, sollten Sie erwägen, nach Belieben eine Gerätereservierung zu vereinbaren, um sicherzustellen, dass Sie die Projekt- oder Veröffentlichungsfristen einhalten können. Wir empfehlen außerdem, Reservierungen zu nutzen, wenn Sie die Ausführung von Aufgaben zu bestimmten Zeiten wünschen, z. B. wenn Sie eine Live-Demo oder einen Workshop auf einem Quantencomputer durchführen.

**Topics**
+ [Wie erstelle ich eine Reservierung](braket-create-a-reservation.md)
+ [Ausführung von Quantenaufgaben während einer Reservierung](braket-run-quantum-task-with-reservation.md)
+ [Ausführung von Hybridaufträgen während einer Reservierung](braket-run-hybrid-jobs-with-reservation.md)
+ [Was passiert am Ende Ihrer Reservierung](braket-end-of-reservation.md)
+ [Stornieren oder verschieben Sie eine bestehende Reservierung](braket-cancel-reservation.md)

# Wie erstelle ich eine Reservierung
<a name="braket-create-a-reservation"></a>

Um eine Reservierung zu erstellen, wenden Sie sich wie folgt an das Braket-Team:

1. Öffnen Sie die Amazon Braket-Konsole.

1. Wählen Sie im linken Bereich **Braket Direct** und dann im Bereich **Reservierungen** die Option Gerät **reservieren** aus.

1. Wählen Sie das **Gerät** aus, das Sie reservieren möchten.

1. Geben Sie Ihre Kontaktinformationen einschließlich **Name** und **E-Mail an**. Stellen Sie sicher, dass Sie eine gültige E-Mail-Adresse angeben, die Sie regelmäßig überprüfen.

1. Geben **Sie unter Erzählen Sie uns von Ihrem Workload** alle Informationen über den Workload an, der mit Ihrer Reservierung ausgeführt werden soll. Zum Beispiel die gewünschte Reservierungsdauer, relevante Einschränkungen oder der gewünschte Zeitplan.

Nachdem Sie das Formular abgeschickt haben, erhalten Sie vom Braket-Team eine E-Mail mit den nächsten Schritten. Sobald Ihre Reservierung bestätigt ist, erhalten Sie den Reservierungs-ARN per E-Mail. Sie benötigen den Reservierungs-ARN, um Reservierungsaufgaben zu erstellen. Aufgaben, die ohne den Reservierungs-ARN erstellt wurden, werden an die reguläre On-Demand-Warteschlange gestellt und NICHT während Ihrer Reservierung ausgeführt.

**Anmerkung**  
Ihre Reservierung ist erst bestätigt, wenn Sie den Reservierungs-ARN erhalten haben.

Reservierungen sind in Abständen von mindestens einer Stunde möglich, und für bestimmte Geräte gelten möglicherweise zusätzliche Einschränkungen der Reservierungsdauer (einschließlich Mindest- und Höchstdauer der Reservierung). Das Braket-Team teilt Ihnen vor der Bestätigung der Reservierung alle relevanten Informationen mit.

Das Braket-Team wird Sie per E-Mail kontaktieren, um eine 30-minütige Sitzung mit einem Braket-Experten zu vereinbaren.

# Ausführung von Quantenaufgaben während einer Reservierung
<a name="braket-run-quantum-task-with-reservation"></a>

Nachdem Sie einen gültigen Reservierungs-ARN von [Create a reservation](https://docs.aws.amazon.com/braket/latest/developerguide/braket-reservations.html#braket-create-a-reservation) erhalten haben, können Sie Quantenaufgaben erstellen, die während der Reservierung ausgeführt werden sollen. Quantenaufgaben und Hybrid-Jobs, die mit einem Reservierungs-ARN eingereicht wurden, werden nicht in einer Gerätewarteschlange angezeigt. Aufgaben, die vor Beginn der Reservierung eingereicht wurden, bleiben so lange `QUEUED` erhalten, bis Ihre Reservierung beginnt. 

**Anmerkung**  
Reservierungen sind AWS konto- und gerätespezifisch. Nur das AWS Konto, das die Reservierung erstellt hat, kann Ihren Reservierungs-ARN verwenden.   
Während einer Reservierung können sowohl Reservierungen als auch reguläre Aufgaben erstellt werden. Um zu überprüfen, ob eine erstellte Braket-Quantenaufgabe mit einer Reservierung verknüpft ist, überprüfen Sie das Feld „Reservierungs-ARN“ auf der Seite der Quantenaufgabe in der Braket-Konsole oder fragen Sie dasselbe Feld in den Aufgabenmetadaten mithilfe des SDK ab. Im Rest dieser Seite wird beschrieben, wie Sie angeben, welche Aufgaben mit der Reservierung verknüpft sind. 

[Sie können Quantenaufgaben Python SDKs beispielsweise mit [Braket](https://docs.aws.amazon.com/braket/latest/developerguide/braket-references.html),, [https://github.com/NVIDIA/cuda-quantum](https://github.com/NVIDIA/cuda-quantum), oder direkt mit boto3 (Working with Boto3) erstellen.](https://docs.aws.amazon.com/braket/latest/developerguide/braket-using-boto3.html) Um Reservierungen nutzen zu können, benötigen Sie Version [v1.79.0](https://github.com/amazon-braket/amazon-braket-sdk-python/releases/tag/v1.79.0) oder höher von [Amazon](https://github.com/amazon-braket/amazon-braket-sdk-python) Braket. Python SDK Mit dem folgenden Code können Sie auf das neueste Braket-SDK, den neuesten Qiskit Anbieter und PennyLane das neueste Plugin aktualisieren. 

```
pip install --upgrade amazon-braket-sdk amazon-braket-pennylane-plugin qiskit-braket-provider
```

**Führen Sie Aufgaben mit dem `DirectReservation` Kontext-Manager aus**

Die empfohlene Methode, eine Aufgabe innerhalb Ihrer geplanten Reservierung auszuführen, ist die Verwendung des `DirectReservation` Kontext-Managers. Durch die Angabe Ihres Zielgeräts und des Reservierungs-ARN stellt der Kontext-Manager sicher, dass alle in der `with` Python-Anweisung erstellten Aufgaben mit exklusivem Zugriff auf das Gerät ausgeführt werden. 

Definieren Sie zunächst einen Quantenschaltkreis und das Gerät. Verwenden Sie dann den Reservierungskontext und führen Sie die Aufgabe aus. **Stellen Sie sicher, dass Ihre gesamte Arbeitslast innerhalb des `with` Blocks ausgeführt wird. Alles, was außerhalb des Bereichs des `with` Blocks ausgeführt wird, wird nicht mit Ihrer Reservierung verknüpft\$1**

```
from braket.aws import AwsDevice, DirectReservation
from braket.circuits import Circuit
from braket.devices import Devices

bell = Circuit().h(0).cnot(0, 1)
device = AwsDevice(Devices.IonQ.ForteEnterprise1)

# run the circuit in a reservation
with DirectReservation(device, reservation_arn="<my_reservation_arn>"):
    task = device.run(bell, shots=100)
```

Sie können Quantenaufgaben in einer Reservierung mithilfe der Qiskit Plug-ins CUDA-QPennyLane, und erstellen, sofern der `DirectReservation` Kontext beim Erstellen von Quantenaufgaben aktiv ist. Mit dem Qiskit-Braket Anbieter können Sie Aufgaben beispielsweise wie folgt ausführen.

```
from braket.devices import Devices
from braket.aws import DirectReservation
from qiskit import QuantumCircuit
from qiskit_braket_provider import BraketProvider


qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)

qpu = BraketProvider().get_backend("Forte Enterprise 1")

# run the circuit in a reservation
with DirectReservation(Devices.IonQ.ForteEnterprise1, reservation_arn="<my_reservation_arn>"):
    qpu_task = qpu.run(qc, shots=10)
```

In ähnlicher Weise führt der folgende Code während einer Reservierung mithilfe des Braket-PennyLane Plug-ins eine Verbindung aus.

```
from braket.devices import Devices
from braket.aws import DirectReservation
import pennylane as qml


dev = qml.device("braket.aws.qubit", device_arn=Devices.IonQ.ForteEnterprise1.value, wires=2, shots=10)

@qml.qnode(dev)
def bell_state():
    qml.Hadamard(wires=0)
    qml.CNOT(wires=[0, 1])
    return qml.probs(wires=[0, 1])

# run the circuit in a reservation
with DirectReservation(Devices.IonQ.ForteEnterprise1, reservation_arn="<my_reservation_arn>"):
    probs = bell_state()
```

**Manuelles Einstellen des Reservierungskontextes**

Alternativ können Sie den Reservierungskontext mit dem folgenden Code manuell festlegen.

```
# set reservation context 
reservation_context = DirectReservation(device, reservation_arn="<my_reservation_arn>").start()

# run circuit during reservation
task = device.run(bell, shots=100)
```

Dies ist ideal für Jupyter-Notebooks, bei denen der Kontext in der ersten Zelle ausgeführt werden kann und alle nachfolgenden Aufgaben in der Reservierung ausgeführt werden.

**Anmerkung**  
Die Zelle, die den `.start()` Aufruf enthält, sollte *nur einmal ausgeführt werden.* 

Um zum On-Demand-Modus zurückzukehren: Starten Sie das Jupyter-Notebook neu, oder rufen Sie den folgenden Befehl auf, um den Kontext wieder in den On-Demand-Modus zu ändern.

```
reservation_context.stop()  # unset reservation context 
```

**Anmerkung**  
 Reservierungen haben eine vorab festgelegte Start- und Endzeit (siehe Reservierung [erstellen](https://docs.aws.amazon.com/braket/latest/developerguide/braket-reservations.html#braket-create-a-reservation)). Die `reservation_context.stop()` Methoden `reservation_context.start()` und **bedeuten weder den Beginn noch das Ende einer Reservierung**. Stattdessen werden alle Quantenaufgaben, die Sie erstellen, Ihrer Reservierung zugeordnet und nur während Ihrer geplanten Reservierung ausgeführt, solange der Kontext aktiv ist. Der Reservierungskontext hat keine Auswirkung auf die geplante Reservierungszeit. 

**Übergeben Sie den Reservierungs-ARN beim Erstellen der Aufgabe explizit**

Eine andere Möglichkeit, Aufgaben während einer Reservierung zu erstellen, besteht darin, den Reservierungs-ARN beim Anrufen explizit zu übergeben`device.run()`. 

```
task = device.run(bell, shots=100, reservation_arn="<my_reservation_arn>")
```

Diese Methode verknüpft die Quantenaufgabe direkt mit dem Reservierungs-ARN und stellt so sicher, dass sie während des reservierten Zeitraums ausgeführt wird. Fügen Sie für diese Option den Reservierungs-ARN zu jeder Aufgabe hinzu, die Sie während einer Reservierung ausführen möchten. Beachten Sie jedoch, dass es bei der Verwendung von Bibliotheken von Drittanbietern wie Qiskit oder schwierig sein kannPennyLane, sicherzustellen, dass die eingereichten Aufgaben den richtigen Reservierungs-ARN verwenden. Aus diesem Grund wird die Verwendung des DirectReservation Kontext-Managers empfohlen. 

Wenn Sie boto3 direkt verwenden, übergeben Sie den Reservierungs-ARN als Assoziation, wenn Sie eine Aufgabe erstellen.

```
import boto3

braket_client = boto3.client("braket")


kwargs["associations"] = [
    {
        "arn": "<my_reservation_arn>",
        "type": "RESERVATION_TIME_WINDOW_ARN",
    }
]

response = braket_client.create_quantum_task(**kwargs)
```

# Ausführung von Hybridaufträgen während einer Reservierung
<a name="braket-run-hybrid-jobs-with-reservation"></a>

Sobald Sie eine Python-Funktion als Hybrid-Job ausführen können, können Sie den Hybrid-Job in einer Reservierung ausführen, indem Sie das `reservation_arn` Schlüsselwort-Argument übergeben. Alle Aufgaben innerhalb des Hybrid-Jobs verwenden den Reservierungs-ARN. Wichtig ist, dass der Hybrid-Job, *bei dem die klassische Rechenleistung `reservation_arn` erst dann aktiviert wird, wenn Ihre Reservierung beginnt*. 

**Anmerkung**  
Ein Hybrid-Job, der während einer Reservierung ausgeführt wird, *führt nur erfolgreich* Quantenaufgaben auf dem reservierten Gerät aus. Der Versuch, ein anderes On-Demand-Braket-Gerät zu verwenden, führt zu einem Fehler. Wenn Sie Aufgaben sowohl auf einem On-Demand-Simulator als auch auf dem reservierten Gerät innerhalb desselben Hybrid-Jobs ausführen müssen, verwenden Sie `DirectReservation` stattdessen.

Der folgende Code zeigt, wie ein Hybridjob während einer Reservierung ausgeführt wird.

```
from braket.aws import AwsDevice
from braket.devices import Devices
from braket.jobs import get_job_device_arn, hybrid_job

@hybrid_job(device=Devices.IonQ.ForteEnterprise1, reservation_arn="<my_reservation_arn>")
def example_hybrid_job():
    # declare AwsDevice within the hybrid job
    device = AwsDevice(get_job_device_arn())
    bell = Circuit().h(0).cnot(0, 1)
    
    task = device.run(bell, shots=10)
```

Hybrid-Jobs, die ein Python-Skript verwenden (siehe Abschnitt zum [Erstellen Ihres ersten Hybrid-Jobs](https://docs.aws.amazon.com/braket/latest/developerguide/braket-jobs-first.html) im Entwicklerhandbuch), können Sie sie innerhalb der Reservierung ausführen, indem Sie bei der Erstellung des Jobs das `reservation_arn` Schlüsselwort-Argument übergeben.

```
from braket.aws import AwsQuantumJob 
from braket.devices import Devices

job = AwsQuantumJob.create( 
    Devices.IonQ.ForteEnterprise1,
    source_module="algorithm_script.py", 
    entry_point="algorithm_script:start_here",
    reservation_arn="<my_reservation_arn>"
)
```

# Was passiert am Ende Ihrer Reservierung
<a name="braket-end-of-reservation"></a>

Nach Ablauf Ihrer Reservierung haben Sie keinen dedizierten Zugriff mehr auf das Gerät. Alle verbleibenden Workloads, die sich mit dieser Reservierung in der Warteschlange befinden, werden automatisch storniert.

**Anmerkung**  
Jeder Job, der sich am Ende der Reservierung im `RUNNING` Status befand, wird storniert. Wir empfehlen, [Checkpoints zu verwenden, um Jobs nach Belieben zu speichern und neu zu starten](https://docs.aws.amazon.com/braket/latest/developerguide/braket-jobs-checkpoints.html).

Eine laufende Reservierung, z. B. nach dem Beginn der Reservierung und vor dem Ende der Reservierung, kann nicht verlängert werden, da es sich bei jeder Reservierung um einen eigenständigen, dedizierten Gerätezugriff handelt. Beispielsweise werden zwei back-to-back Reservierungen als getrennt betrachtet und alle ausstehenden Aufgaben aus der ersten Reservierung werden automatisch storniert. Sie werden in der zweiten Reservierung nicht wieder aufgenommen.

**Anmerkung**  
Reservierungen stellen einen dedizierten Gerätezugriff für Ihr AWS Konto dar. Selbst wenn das Gerät inaktiv bleibt, können es keine anderen Kunden verwenden. Daher wird Ihnen unabhängig von der genutzten Zeit die Dauer der reservierten Zeit in Rechnung gestellt.

# Stornieren oder verschieben Sie eine bestehende Reservierung
<a name="braket-cancel-reservation"></a>

Sie können Ihre Reservierung mindestens 48 Stunden vor dem geplanten Beginn der Reservierung stornieren. Um zu stornieren, antworten Sie auf die Reservierungsbestätigungs-E-Mail, die Sie mit Ihrer Stornierungsanfrage erhalten haben.

Um einen neuen Termin zu vereinbaren, müssen Sie Ihre bestehende Reservierung stornieren und dann eine neue erstellen.

# Techniken zur Fehlerminimierung
<a name="braket-error-mitigation"></a>

Bei der Minimierung von Quantenfehlern handelt es sich um eine Reihe von Techniken, die darauf abzielen, die Auswirkungen von Fehlern in Quantencomputern zu reduzieren. 

Quantengeräte sind Umgebungsgeräuschen ausgesetzt, die die Qualität der durchgeführten Berechnungen beeinträchtigen. Fehlertolerante Quantencomputer versprechen zwar eine Lösung für dieses Problem, aber aktuelle Quantengeräte sind durch die Anzahl der Qubits und relativ hohe Fehlerraten begrenzt. Um dem kurzfristig entgegenzuwirken, untersuchen Forscher Methoden zur Verbesserung der Genauigkeit verrauschter Quantenberechnungen. Dieser Ansatz, bekannt als *Quantenfehlerminimierung, beinhaltet den* Einsatz verschiedener Techniken, um das beste Signal aus verrauschten Messdaten zu extrahieren.

**Topics**
+ [Techniken zur Fehlerminimierung auf Geräten IonQ](error-mitigation-ionq.md)

# Techniken zur Fehlerminimierung auf Geräten IonQ
<a name="error-mitigation-ionq"></a>

Zur Fehlerminimierung werden mehrere physische Schaltkreise betrieben und ihre Messungen kombiniert, um ein besseres Ergebnis zu erzielen.

**Anmerkung**  
Für alle IonQ Geräte gilt: Bei Verwendung eines On-Demand-Modells gilt ein Limit von 1 Million [Gateshots](braket-terms.md#gateshot-limit-term) und ein Minimum von 2500 Schüssen für Aufgaben zur [Fehlerminimierung](https://docs.aws.amazon.com/braket/latest/developerguide/braket-error-mitigation.html). Bei einer direkten Reservierung gibt es kein Gateshot-Limit und ein Minimum von 500 Schüssen für Aufgaben zur Fehlerminimierung.

## Entschärfung
<a name="error-mitigation-ionq-debiasing"></a>

IonQ*Geräte verfügen über eine Methode zur Fehlerminimierung, die als Debiasing bezeichnet wird.* 

Beim Debiasing wird ein Schaltkreis in mehrere Varianten eingeteilt, die auf unterschiedliche Qubit-Permutationen oder unterschiedliche Gate-Zerlegungen einwirken. Dadurch werden die Auswirkungen systematischer Fehler wie Gatterüberdrehungen oder eines einzelnen fehlerhaften Qubits reduziert, indem unterschiedliche Implementierungen einer Schaltung verwendet werden, die andernfalls die Messergebnisse verfälschen könnten. Dies geht auf Kosten des zusätzlichen Aufwands für die Kalibrierung mehrerer Qubits und Gates.

Weitere Informationen zum Debiasing finden Sie unter [Verbesserung der Leistung von Quantencomputern durch Symmetrisierung](https://arxiv.org/abs/2301.07233).

**Anmerkung**  
Für die Verwendung von Debiasing sind mindestens 2500 Aufnahmen erforderlich.

Mit dem folgenden Code können Sie eine Quantenaufgabe mit Debiasing auf einem IonQ Gerät ausführen:

```
from braket.aws import AwsDevice
from braket.circuits import Circuit
from braket.error_mitigation import Debias

# choose an IonQ device
device = AwsDevice("arn:aws:braket:us-east-1::device/qpu/ionq/Forte-Enterprise-1")
circuit = Circuit().h(0).cnot(0, 1)

task = device.run(circuit, shots=2500, device_parameters={"errorMitigation": Debias()})

result = task.result()
print(result.measurement_counts)
>>> {"00": 1245, "01": 5, "10": 10 "11": 1240} # result from debiasing
```

Wenn die Quantenaufgabe abgeschlossen ist, können Sie die Messwahrscheinlichkeiten und alle Ergebnistypen der Quantenaufgabe sehen. Die Messwahrscheinlichkeiten und Zählungen aller Varianten werden zu einer einzigen Verteilung zusammengefasst. Alle im Schaltkreis angegebenen Ergebnistypen, wie z. B. Erwartungswerte, werden anhand der aggregierten Messzahlen berechnet.

## Scharfzeichnen
<a name="error-mitigation-ionq-sharpening"></a>

*Sie können auch auf Messwahrscheinlichkeiten zugreifen, die mit einer anderen Nachbearbeitungsstrategie, dem sogenannten Sharpening, berechnet wurden.* Beim Schärfen werden die Ergebnisse der einzelnen Varianten verglichen und widersprüchliche Aufnahmen verworfen, sodass das wahrscheinlichste Messergebnis aller Varianten bevorzugt wird. Weitere Informationen finden Sie unter [Verbesserung der Leistung von Quantencomputern durch Symmetrisierung](https://arxiv.org/abs/2301.07233). 

Wichtig ist, dass beim Scharfzeichnen davon ausgegangen wird, dass die Form der Ausgangsverteilung dünn ist und nur wenige Zustände mit hoher Wahrscheinlichkeit und viele Zustände mit einer Wahrscheinlichkeit von Null aufweist. Wenn diese Annahme nicht zutrifft, kann es zu einer Verzerrung der Wahrscheinlichkeitsverteilung kommen. 

Sie können auf die Wahrscheinlichkeiten aus einer geschärften Verteilung im `additional_metadata` Feld `GateModelTaskResult` im Braket Python SDK zugreifen. Beachten Sie, dass beim Scharfzeichnen nicht die Messwerte zurückgegeben werden, sondern stattdessen eine neu normalisierte Wahrscheinlichkeitsverteilung zurückgegeben wird. Der folgende Codeausschnitt zeigt, wie Sie nach dem Scharfzeichnen auf die Verteilung zugreifen können.

```
print(result.additional_metadata.ionqMetadata.sharpenedProbabilities)
>>> {"00": 0.51, "11": 0.549} # sharpened probabilities
```