Skip to main content
IBM Quantum Platform

Ausführungsmodi unter Verwendung der REST-API

Paketversionen

Der Code auf dieser Seite wurde unter Berücksichtigung der folgenden Anforderungen entwickelt. Wir empfehlen, diese Versionen oder neuere zu verwenden.

qiskit[all]~=2.3.0

Sie können Ihre grundlegenden „ IBM Quantum “-Workloads mithilfe von REST-APIs je nach Bedarf in einem von drei Ausführungsmodi ausführen: „Job“, „Session“ und „Batch“. In diesem Abschnitt werden diese Modi erläutert.

Note

In dieser Dokumentation wird das Modul requests „ Python “ verwendet, um die REST-API des „ IBM Quantum Compute “-Dienstes zu veranschaulichen. Dieser Workflow kann jedoch mit jeder Sprache oder jedem Framework ausgeführt werden, das die Arbeit mit REST-APIs unterstützt. Weitere Informationen finden Sie in der API-Referenzdokumentation.


Jobmodus mit REST-API

Im Job-Modus wird eine einzelne primitive Anfrage an den Estimator oder Sampler ohne Kontextmanager gestellt. Sehen Sie sich einige Beispiele an, wie man einen Quantenschaltkreis mit Estimator und Sampler ausführt.


Sitzungsmodus mit REST-API

Eine Sitzung ist eine Funktion, mit der Sie iterative Workloads mit mehreren Jobs auf Quantencomputern effizient ausführen können. Durch die Verwendung von Sitzungen lassen sich Verzögerungen vermeiden, die dadurch entstehen, dass jeder Auftrag einzeln in die Warteschlange gestellt wird. Dies kann insbesondere bei iterativen Aufgaben nützlich sein, die eine häufige Kommunikation zwischen klassischen und Quantenressourcen erfordern. Weitere Informationen zu Sessions finden Sie in der Dokumentation.

Note

Open-Plan-Benutzer können keine Sitzungsaufträge einreichen.

Eine Sitzung starten

Beginnen Sie damit, eine Sitzung zu erstellen und eine Sitzungs-ID zu erhalten.

import json
import requests

sessionsUrl = "https://quantum.cloud.ibm.com/api/v1/sessions"
auth_id = "Bearer <YOUR_BEARER_TOKEN>"
backend = "<BACKEND_NAME>"
crn = "<SERVICE-CRN>"

headersList = {
  "Accept": "application/json",
  "Content-Type": "application/json",
  "Authorization": auth_id,
  "Service-CRN": crn
}

payload = json.dumps({
  "backend": backend,
  "mode": 'dedicated',
})

response = requests.request("POST", sessionsUrl, data=payload,  headers=headersList)

sessionId = response.json()['id']

print(response.json())

Ausgabe

{'id': 'crw9s7cdbt40008jxesg'}

Eine Sitzung schließen

Es ist gute Praxis, eine Session zu schließen, wenn alle Aufträge erledigt sind. Dadurch wird die Wartezeit für nachfolgende Benutzer verkürzt.

closureURL="https://quantum.cloud.ibm.com/api/v1/sessions/"+sessionId+"/close"

headersList = {
  "Accept": "application/json",
  "Authorization": auth_id,
  "Service-CRN": crn
}

closure_response = requests.request(
    "DELETE",
    closureURL,
    headers=headersList
    )

print("Session closure response ok?:",closure_response.ok,closure_response.text)

Ausgabe

Session closure response ok?: True

Batch-Modus mit REST-API

Alternativ können Sie einen Batch-Job übermitteln, indem Sie mode in der Anforderungsdatenübertragung angeben. Der Batch-Modus kann dazu beitragen, die Verarbeitungszeit zu verkürzen, wenn alle Aufträge zu Beginn bereitgestellt werden können. Erfahren Sie mehr über den Batch-Modus in der Einführung in die Ausführungsmodi.

import json
import requests

sessionsUrl = "https://quantum.cloud.ibm.com/api/v1/sessions"

headersList = {
  "Accept": "application/json",
  "Authorization": auth_id,
  "Service-CRN": crn,
  'Content-Type': 'application/json'
}

payload = json.dumps({
  "backend": backend,
  "instance": "hub1/group1/project1",
  "mode": "batch"
})

response = requests.request("POST", sessionsUrl, data=payload,  headers=headersList)

sessionId = response.json()['id']

Beispiele für in einer Sitzung eingereichte Aufträge

Sobald eine Sitzung eingerichtet ist, können ein oder mehrere Sampler- oder Estimator-Aufträge an dieselbe Sitzung übermittelt werden, indem die Sitzungs-ID angegeben wird.

Note

Bei <parameter values> in PUB kann es sich entweder um einen einzelnen Parameter oder um eine Liste von Parametern handeln. Es unterstützt auch numpy .

Estimator-Jobs im Sitzungsmodus

job_input = {
'program_id': 'estimator',
"backend": backend,
"session_id": sessionId, # This specifies the previously created Session
"params": {
    "pubs": [[resulting_qasm, [obs1, obs2, obs3, obs4]]], #primitive unified blocs (PUBs) containing one circuit each.
    "options":{
            "transpilation":{"optimization_level": 1},
            "twirling": {"enable_gates": True,"enable_measure": True},
            # "dynamical_decoupling": {"enable": True, "sequence_type": "XpXm"},   #(optional)
                },
}

}

Sampler-Jobs im Sitzungsmodus

job_input = {
'program_id': 'sampler',
"backend": backend,
"session_id": sessionId, # This specifies the previously created Session
"params": {
    "pubs": [[resulting_qasm]], #primitive unified blocs (PUBs) containing one circuit each
    "options":{
            "transpilation":{"optimization_level": 1},
            "twirling": {"enable_gates": True,"enable_measure": True},
            # "dynamical_decoupling": {"enable": True, "sequence_type": "XpXm"},   #(optional)
                },
}

}

Nächste Schritte

Empfehlungen
  • Sehen Sie sich detaillierte Beispiele für Sampler -Primitive unter Verwendung der REST-API an.
  • Sehen Sie sich detaillierte Beispiele für Estimator -Primitive unter Verwendung der REST-API an.
  • Üben Sie den Umgang mit Primitiven, indem Sie die Lektion über die Kostenfunktion auf IBM Quantum® Learning durcharbeiten.
  • Im Abschnitt „Transpile“ erfahren Sie, wie Sie lokal transpilieren können.
War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.