Zum Hauptinhalt springen

Initialisiere dein Qiskit Runtime Service-Konto

Bevor du Qiskit Runtime verwendest, musst du dein Konto initialisieren (instanziieren), indem du Anmeldedaten übermittelst (lädst). Diese Anmeldedaten können jedes Mal manuell übermittelt werden, wenn du den Qiskit Runtime-Dienst initialisierst, oder du kannst sie zur Wiederverwendung speichern.

Hinweise
  • Wenn du einen öffentlichen Computer oder eine andere nicht vertrauenswürdige Umgebung verwendest, folge stattdessen den Anweisungen unter Initialize the service in an untrusted environment.
  • Folge diesen Anweisungen, wenn du dich über die REST-API anstelle von Qiskit verbinden möchtest.
  • Falls erforderlich, verwende diese Informationen, um deine Firewall zu konfigurieren und den Zugriff auf die IBM Quantum API-Endpunkte zu ermöglichen.

Bevor du beginnst

Stelle sicher, dass du diese Schritte abgeschlossen hast:

  1. Stelle sicher, dass du Mitglied eines IBM Cloud-Kontos bist. Anleitungen finden sich unter Set up your IBM Cloud account.
  2. Erstelle (oder habe Zugriff auf) mindestens eine Instanz. Befolge diese Schritte zur Überprüfung:
    1. Melde dich bei IBM Quantum Platform an.
    2. Stelle sicher, dass das richtige Konto und die richtige Region im Konto-Umschalter in der Kopfzeile ausgewählt sind.
    3. Wenn du eine oder mehrere Instanzen angezeigt bekommst, bist du mit diesem Schritt fertig. Andernfalls erstelle eine Instanz.
  3. Stelle sicher, dass du in einer aktiven Python-Umgebung mit installiertem Qiskit SDK und Qiskit Runtime arbeitest.
  4. Aktiviere die virtuelle Python-Umgebung und führe Python in deiner virtuellen Umgebung aus.

Finde deine Zugangsanmeldedaten

  1. Finde deinen API-Schlüssel (auch als API-Token bezeichnet). Erstelle vom Dashboard aus deinen API-Schlüssel, kopiere ihn dann an einen sicheren Ort, damit du ihn zur Authentifizierung verwenden kannst. Das Token wird nicht erneut sichtbar sein. Beachte, dass du einen einzelnen API-Schlüssel verwenden kannst, um dich mit jeder Region zu verbinden.
  2. Optional: Finde die Instanz, die du verwenden möchtest, auf der Seite Instances. Bewege den Mauszeiger über die CRN, klicke auf das Symbol zum Kopieren und speichere sie an einem sicheren Ort, damit du sie zur Identifizierung der Instanz verwenden kannst.

Verbinde Qiskit mit deiner Qiskit Runtime Service-Instanz

hinweis

Diese Anweisungen sind für qiskit_ibm_runtime v0.42 oder höher konzipiert. Einige Funktionen sind in früheren Versionen von qiskit_ibm_runtime nicht aktiviert. In diesen Fällen solltest du immer einen Wert für channel, token und instance angeben, entweder explizit oder über ein gespeichertes Konto.

Der grundlegende Code zum Verbinden von Qiskit mit deiner Qiskit Runtime Service-Instanz folgt. Es gibt jedoch mehrere verschiedene Möglichkeiten, die QiskitRuntimeService-Optionen anzupassen, abhängig von deinen Anforderungen. Diese Optionen werden in den folgenden Abschnitten beschrieben.

from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService(channel=<channel>,
token=<your-API_KEY>, # Use the 44-character API_KEY you created and saved from the IBM Quantum Platform Home dashboard
instance=<instance_CRN>)
hinweis

Der Standardkanal ist ibm_quantum_platform. Da dies fast immer der geeignete Kanal ist, ist er in den Beispielen nicht enthalten.

Schnellstartpfad: Anmeldedaten explizit angeben

Der schnellste Weg, eine laufende QiskitRuntimeService-Instanz zu erhalten, ist die direkte Instanziierungsmethode: Gib jedes Mal explizit den API-Token (Schlüssel) und die CRN (Instanzkennung) an, wenn du den Qiskit Runtime-Dienst initialisieren musst. Siehe Finde deine Zugangsanmeldedaten, falls erforderlich.

from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService(token=<cloud_api_key>, # Use the 44-character API_KEY you created and saved from the IBM Quantum Platform Home dashboard
instance=<instance_CRN>)

Dieser Pfad ist zuverlässig, kann aber mühsam sein, wenn du dieselben Details wiederholt laden musst. Um das mehrfache Laden deiner Anmeldedaten zu vermeiden, kannst du gespeicherte Konto-Anmeldedaten verwenden, wenn du in einer vertrauenswürdigen Python-Umgebung arbeitest (z. B. auf einem persönlichen Laptop oder einer Arbeitsstation), wie im folgenden Abschnitt beschrieben.

Obwohl der Eingabeparameter instance optional ist, wird empfohlen, diese Informationen immer anzugeben, es sei denn, du möchtest einen einzelnen Dienst für die Arbeit mit mehreren Instanzen verwenden. In dieser Situation siehe Abschnitt automatische Instanzauswahl.

Schnellstartpfad: Gespeicherte Anmeldedaten angeben

Wenn du deine Anmeldedaten bereits gespeichert hast, verwende den folgenden Code, um deine Standard-Anmeldedaten anzuwenden. Anweisungen zum Speichern von Anmeldedaten finden sich unter Save your access credentials.

from qiskit_ibm_runtime import QiskitRuntimeService

# run every time you need the service
service = QiskitRuntimeService()
...

Wenn du einen oder mehrere Sätze von Anmeldedaten benannt hast - zum Beispiel für Open- und Premium-Zugriff - verwende den folgenden Code, um einen Satz benannter Anmeldedaten zu verwenden.

from qiskit_ibm_runtime import QiskitRuntimeService

# run every time you need the service
service = QiskitRuntimeService(name="<name_of_saved_credentials>")
...

Überlegungen beim Laden gespeicherter Anmeldedaten

  • Wenn du einen Dienst mit token und name initialisierst, wird das token ignoriert und die gespeicherten Details aus dem name-Konto werden geladen.

    Im folgenden Beispiel lädt der Dienst die Details von account_A und verwendet token_B nicht:

    from qiskit_ibm_runtime import QiskitRuntimeService

    service = QiskitRuntimeService(token="token_B", name="account_A")
  • Wenn du beim Initialisieren eines Dienstes einen name und eine instance angibst, versucht der Dienst, das name-Konto und eine Verbindung zur angegebenen instance zu laden. Bei Konflikten wird eine Warnung ausgegeben.

    Im folgenden Beispiel versucht der Dienst, die Anmeldedaten für account_A zu laden und die Instanz CRN_B zu verwenden - auch wenn in account_A eine andere Instanz angegeben ist:

    from qiskit_ibm_runtime import QiskitRuntimeService

    service = QiskitRuntimeService(instance="CRN_B", name="account_A")
  • Der Dienst versucht, das standardmäßig gespeicherte Konto nur zu laden, wenn du beim Initialisieren eines Dienstes kein token oder name angibst. Wenn jedoch eine instance explizit angegeben wird, versucht der Dienst, sich mit dieser Instanz unter Verwendung der Standard-Anmeldedaten zu verbinden. Bei Konflikten wird eine Warnung ausgegeben.

    Im folgenden Beispiel versucht der Dienst, die Standard-Anmeldedaten zu laden und die Instanz CRN_B zu verwenden - auch wenn im Standardkonto eine andere Instanz angegeben ist:

    from qiskit_ibm_runtime import QiskitRuntimeService

    service = QiskitRuntimeService(instance="CRN_B")
  • Wenn du mehrere Sätze von Anmeldedaten speicherst, aber beim Initialisieren des Dienstes keinen angibst und kein standardmäßig gespeichertes Konto vorhanden ist, wird derjenige verwendet, dessen Name alphabetisch zuletzt kommt.

    Im folgenden Beispiel hast du Konten namens "my_premium" und "my_open" gespeichert, aber keines als Standard markiert. Anschließend hast du den Dienst mit folgendem Code initialisiert. In diesem Fall werden die "my_premium"-Anmeldedaten verwendet:

    from qiskit_ibm_runtime import QiskitRuntimeService

    service = QiskitRuntimeService()
  • Wenn du dauerhaft den Fehler "401 Unauthorized" erhältst, versuchst du möglicherweise, ein Bearer-Token anstelle deines API-Schlüssels zu verwenden.

Automatische Auswahl der Instanz

Wenn du beim Instanziieren des Dienstes ein Token angibst, aber keine Instanz-CRN angibst, authentifiziert sich QiskitRuntimeService beim durch das Token identifizierten Konto und verwendet die automatische Instanzauswahl, um die relevanteste Instanz für die angeforderte Aufgabe auszuwählen. Wenn du mehrere Instanzen in deinem Konto verfügbar hast, wählt der Dienst automatisch aus den verfügbaren Instanzen aus, abhängig von der angeforderten Ressource und diesen QiskitRuntimeService-Optionen (falls gesetzt): plans_preference, region, tags.

  • plans_preference: Die Arten von Instanzplänen, die priorisiert werden sollen. Wenn z. B. [open] übergeben wird, sind nur Open Plan-Instanzen verfügbar. Akzeptierte Werte sind open, premium, pay-as-you-go, flex und on-prem. Wenn plans_preference nicht angegeben wird, werden kostenlose Pläne gegenüber kostenpflichtigen Plänen priorisiert.
  • region: Die Instanzregion. Akzeptierte Werte sind us-east und eu-de.
  • tags: Die Instanz-Tags. Akzeptiert eine Liste von Tag-Namen-Strings.
hinweis

Du kannst deine gespeicherten Anmeldedaten so einrichten, dass automatisch eine Instanz ausgewählt wird.

Die Instanz wird in dieser Reihenfolge gefunden und verwendet:

  1. Wenn dein Konto nur Zugriff auf eine Instanz hat, wird sie standardmäßig ausgewählt.
  2. Wenn gespeicherte Anmeldedaten verwendet werden und eine Instanz mit den Anmeldedaten angegeben wurde, wird diese Instanz verwendet. Siehe Überlegungen beim Laden gespeicherter Anmeldedaten.
  3. Wenn dein Konto mehrere Instanzen hat, die auf die angeforderte QPU zugreifen können, verwendet das System deine angegebenen Planpräferenzen, um einen Plan und eine Instanz auszuwählen. Für Qiskit Runtime v0.42 und höher werden kostenlose Pläne standardmäßig priorisiert.
  4. Wenn dein Konto Zugriff auf mehrere Instanzen hat, aber nur eine auf die angeforderte QPU zugreifen kann, wird die Instanz mit Zugriff ausgewählt. Wenn diese Instanz nicht mit einem kostenlosen Plan verknüpft ist, fallen Kosten an.

Beispiele

In diesem Beispiel durchsucht der Dienst alle dem Konto verfügbaren Instanzen, um diejenigen zu finden, die auf das angegebene Backend zugreifen können:

service = QiskitRuntimeService(token=<your-API_KEY>)

In diesem Beispiel durchsucht der Dienst alle dem Konto in der EU-Region verfügbaren Instanzen, um diejenigen zu finden, die auf das angegebene Backend zugreifen können:

service = QiskitRuntimeService(token=<your-API_KEY>, region="eu-de")

In diesem Beispiel durchsucht der Dienst alle dem Konto verfügbaren Instanzen, die als services getaggt sind, um diejenigen zu finden, die auf das angegebene Backend zugreifen können:

service = QiskitRuntimeService(token=<your-API_KEY>, tags=['services'])

In diesem Beispiel durchsucht der Dienst alle Premium- und Open-Instanzen, die dem Konto zur Verfügung stehen, um diejenigen zu finden, die auf das angegebene Backend zugreifen können. Wenn ein Backend sowohl in einer Premium- als auch in einer Open Plan-Instanz vorhanden ist, wird die Premium Plan-Instanz priorisiert, da premium in plans_preference zuerst angegeben ist.

service = QiskitRuntimeService(token=<your-API_KEY>, plans_preference=['premium', 'open'])

Bestimmen, welche Instanz ausgewählt wurde

Die ausgewählte Instanz wird als Warnung zurückgegeben. Zusätzlich kannst du service.active_instance() ausführen, um die aktive Instanz zu ermitteln.

Lokales Testen mit Qiskit Runtime

Die Klasse QiskitRuntimeService kann mit channel=local initialisiert werden, um lokale Simulation durchzuführen. In diesem Fall ist keine Authentifizierung erforderlich und es ist nicht erforderlich, Werte für token oder instance anzugeben. Daher wird nicht empfohlen, ein lokales Konto zu speichern. Stattdessen kannst du eine direkte Instanziierung durchführen:

from qiskit_ibm_runtime import QiskitRuntimeService

# Initialize for local testing

service = QiskitRuntimeService(channel="local")

Nächste Schritte