Richten Sie Ihr „ IBM Quantum Compute Service“-Konto ein
Bevor Sie den „ IBM Quantum® Compute Service“ nutzen können, müssen Sie Ihr Konto initialisieren (instanziieren), indem Sie Ihre Anmeldedaten übermitteln (laden). Diese Anmeldedaten können bei jeder Initialisierung des „ IBM Quantum Compute Service“ manuell eingegeben werden, oder Sie können sie zur Wiederverwendung speichern.
- Wenn Sie einen öffentlichen Computer oder eine andere nicht vertrauenswürdige Umgebung verwenden, befolgen Sie stattdessen die Anweisungen unter Initialisieren des Dienstes in einer nicht vertrauenswürdigen Umgebung.
- Folgen Sie diesen Anweisungen, wenn Sie eine Verbindung über die REST-API herstellen möchten, anstatt Qiskit zu verwenden.
- Verwenden Sie diese Informationen gegebenenfalls, um Ihre Firewall so zu konfigurieren, dass der Zugriff auf die IBM Quantum API-Endpunkte möglich ist.
Vorbereitende Schritte
Vergewissern Sie sich, dass Sie diese Schritte durchgeführt haben:
- Vergewissern Sie sich, dass Sie Mitglied in einem IBM Cloud Konto sind. Anweisungen finden Sie unter Einrichten Ihres IBM Cloud Kontos.
- Erstellen Sie mindestens eine Instanz (oder haben Sie Zugang dazu). Befolgen Sie diese Schritte zur Überprüfung:
- Anmelden bei IBM Quantum Platform.
- Vergewissern Sie sich, dass das richtige Konto und die richtige Region im Kontowechsler in der Kopfzeile ausgewählt sind.
- Wenn eine oder mehrere Instanzen angezeigt werden, sind Sie mit diesem Schritt fertig. Andernfalls erstellen Sie eine Instanz.
- Stellen Sie sicher, dass Sie in einer aktiven Umgebung Python mit dem Qiskit SDK und installiert
qiskit-ibm-runtime. arbeiten. - Aktivieren Sie die virtuelle Umgebung Python und führen Sie Python in Ihrer virtuellen Umgebung aus.
Finden Sie Ihre Zugangsdaten
- Finden Sie Ihren API-Schlüssel (auch als API-Token bezeichnet). Erstellen Sie auf dem Dashboard Ihren API-Schlüssel und kopieren Sie ihn an einen sicheren Ort, damit Sie ihn zur Authentifizierung verwenden können. Das Token wird nicht mehr sichtbar sein. Beachten Sie, dass Sie einen einzigen API-Schlüssel verwenden können, um sich mit jeder Region zu verbinden.
- Optional: Suchen Sie die gewünschte Instanz auf der Seite Instanzen. Bewegen Sie den Mauszeiger über die CRN, klicken Sie auf das Symbol, um sie zu kopieren, und speichern Sie sie an einem sicheren Ort, damit Sie sie zur Identifizierung der Instanz verwenden können.
Verbinden Sie Qiskit mit Ihrer „ IBM Quantum “-Compute-Service-Instanz
Diese Anleitung ist 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 sollten Sie immer einen Wert für channel, token und instance angeben, entweder explizit oder über ein gespeichertes Konto.
Im Folgenden finden Sie den Basiscode zur Verbindung von Qiskit mit Ihrer Quantum Compute-Instanz. Es gibt jedoch je nach Ihren Anforderungen verschiedene Möglichkeiten, die Optionen QiskitRuntimeService anzupassen. Diese Optionen sind in den nachfolgenden Abschnitten beschrieben.
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService(channel=<channel>,
# For `token`, use the 44-character API_KEY you created
# and saved from the IBM Quantum Platform dashboard
token=<your-API_KEY>,
instance=<instance_CRN>)Der Standardkanal ist ibm_quantum_platform. Da dies fast immer der richtige Kanal ist, wird er in den Beispielen nicht berücksichtigt.
Schnellstartpfad: Anmeldeinformationen explizit angeben
Der schnellste Weg, eine Instanz QiskitRuntimeService zum Laufen zu bringen, ist die direkte Instanziierung: Geben Sie bei jeder Initialisierung des „ IBM Quantum -Compute-Service“ explizit den API-Token (Schlüssel) und den „ CRN “ (Instanz-ID) an. Siehe „Zugangsdaten abrufen“, falls erforderlich.
from qiskit_ibm_runtime import QiskitRuntimeService
# For `token`, use the 44-character API_KEY you created
# and saved from the IBM Quantum Platform dashboard
service = QiskitRuntimeService(token=<cloud_api_key>,
instance=<instance_CRN>)Dieser Weg ist zuverlässig, kann aber mühsam sein, wenn Sie dieselben Details wiederholt laden müssen. Wenn Sie in einer vertrauenswürdigen Umgebung ( Python ) arbeiten (z. B. auf einem persönlichen Laptop oder einer Workstation), können Sie gespeicherte Anmeldedaten verwenden, um das mehrfache Laden Ihrer Anmeldedaten zu vermeiden, wie im folgenden Abschnitt beschrieben.
Obwohl der Eingabeparameter instance optional ist, wird empfohlen, diese Information immer anzugeben, es sei denn, Sie möchten einen einzigen Dienst für die Arbeit mit mehreren Instanzen verwenden. In diesem Fall lesen Sie bitte den Abschnitt über die automatische Instanzauswahl.
Schnellstartpfad: Gespeicherte Anmeldedaten angeben
Wenn Sie Ihre Anmeldedaten bereits gespeichert haben, verwenden Sie den folgenden Code, um Ihre Standard-Anmeldedaten anzuwenden. Anweisungen zum Speichern von Anmeldedaten finden Sie unter Speichern Ihrer Anmeldedaten.
from qiskit_ibm_runtime import QiskitRuntimeService
# run every time you need the service
service = QiskitRuntimeService()
...Wenn Sie einen oder mehrere Sätze von Zugangsdaten benannt haben - zum Beispiel für offenen und Premium-Zugang - verwenden Sie den folgenden Code, um einen Satz benannter Zugangsdaten 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 Sie einen Dienst mit
tokenundnameinitialisieren, wirdtokenignoriert und die gespeicherten Details aus dem Kontonamewerden geladen.Im folgenden Beispiel lädt der Dienst die Details von
account_Aund verwendet nichttoken_B:from qiskit_ibm_runtime import QiskitRuntimeService service = QiskitRuntimeService(token="token_B", name="account_A") -
Wenn Sie bei der Initialisierung eines Dienstes ein
nameund eininstanceangeben, versucht der Dienst, das Kontonamezu laden und sich mit dem angegebeneninstancezu verbinden. Wenn es einen Konflikt gibt, wird eine Warnung ausgegeben.Im folgenden Beispiel versucht der Dienst, die Anmeldeinformationen für
account_Azu laden und die InstanzCRN_Bzu verwenden - auch wenn inaccount_Aeine andere Instanz angegeben ist:from qiskit_ibm_runtime import QiskitRuntimeService service = QiskitRuntimeService(instance="CRN_B", name="account_A") -
Der Dienst versucht nur dann, das standardmäßig gespeicherte Konto zu laden, wenn Sie beim Initialisieren eines Dienstes keine
tokenodernameangeben. Wenn jedoch eineinstanceexplizit angegeben wird, versucht der Dienst, eine Verbindung zu dieser Instanz herzustellen, indem er die Standardanmeldeinformationen verwendet. Wenn es einen Konflikt gibt, wird eine Warnung ausgegeben.Im folgenden Beispiel versucht der Dienst, die Standardanmeldeinformationen zu laden und die Instanz
CRN_Bzu verwenden, auch wenn im Standardkonto eine andere Instanz angegeben ist:from qiskit_ibm_runtime import QiskitRuntimeService service = QiskitRuntimeService(instance="CRN_B") -
Wenn Sie mehrere Sätze von Anmeldeinformationen speichern, aber bei der Initialisierung des Dienstes keine angeben und es kein standardmäßig gespeichertes Konto gibt, wird dasjenige verwendet, dessen Name in alphabetischer Reihenfolge an letzter Stelle steht.
Im folgenden Beispiel hat der Benutzer Konten mit den Namen "my_premium" und "my_open" gespeichert, aber keines von beiden als dfault markiert. Anschließend initialisierten sie den Dienst mit dem folgenden Code. In diesem Fall werden die Anmeldedaten "my_premium" verwendet:
from qiskit_ibm_runtime import QiskitRuntimeService service = QiskitRuntimeService() -
Wenn Sie ständig die Fehlermeldung „401 Unauthorized“ erhalten, versuchen Sie möglicherweise, ein Bearer-Token anstelle Ihres API-Schlüssels zu verwenden.
Instanz automatisch auswählen
Wenn Sie bei der Instanziierung des Dienstes ein Token, aber keine Instanz-CRN angeben, authentifiziert sich QiskitRuntimeService bei dem durch das Token identifizierten Konto und wählt mithilfe der automatischen Instanzauswahl die relevanteste Instanz für die angeforderte Aufgabe. Wenn in Ihrem Konto mehrere Instanzen verfügbar sind, wählt der Dienst automatisch eine der verfügbaren Instanzen aus, abhängig von der angeforderten Ressource und den folgenden QiskitRuntimeService Optionen (falls eingestellt): plans_preference, region, tags.
plans_preference: Die zu priorisierenden Arten von Instanzplänen. Zum Beispiel, wenn [open] übergeben wird, sind nur Open-Plan-Instanzen verfügbar. Akzeptierte Werte sindopen,premium,pay-as-you-go,flexundon-prem. Wennplans_preferencenicht angegeben ist, werden kostenlose Pläne gegenüber kostenpflichtigen Plänen bevorzugt.region: Die Instanzregion. Akzeptierte Werte sindus-eastundeu-de.tags: Die Instanz-Tags. Akzeptiert eine Liste von Tag-Namenstrings.
Sie können Ihre gespeicherten Anmeldeinformationen so einrichten, dass automatisch eine Instanz ausgewählt wird.
Die Instanz wird in dieser Reihenfolge gefunden und verwendet:
- Wenn Ihr Konto nur Zugang zu einer Instanz hat, ist diese standardmäßig ausgewählt.
- Wenn gespeicherte Anmeldedaten verwendet werden und eine Instanz mit den Anmeldedaten angegeben wurde, wird diese Instanz verwendet. Siehe Überlegungen beim Laden gespeicherter Anmeldedaten.
- Wenn Ihr Konto über mehrere Instanzen verfügt, die auf die angeforderte QPU zugreifen können, wählt das System anhand der von Ihnen festgelegten Planpräferenzen einen Plan und eine Instanz aus. Bei „ v0.42
qiskit-ibm-runtime“ und späteren Versionen werden kostenlose Tarife standardmäßig bevorzugt. - Wenn Ihr 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 verbunden ist, fallen Kosten an.
Beispiele
In diesem Beispiel durchsucht der Dienst alle Instanzen, die für das Konto verfügbar sind, 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 Instanzen, die für das Konto in der EU-Region verfügbar sind, 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 Instanzen, die für das Konto verfügbar sind und als services gekennzeichnet 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 offenen Instanzen, die für das Konto verfügbar sind, um diejenigen zu finden, die auf das angegebene Backend zugreifen können. Wenn sich ein Backend sowohl in einer Premium- als auch in einer Open-Plan-Instanz befindet, hat die Premium-Plan-Instanz Vorrang, da premium in plans_preference zuerst angegeben wird.
service = QiskitRuntimeService(token=<your-API_KEY>,
plans_preference=['premium', 'open'])Bestimmen Sie, welche Instanz ausgewählt wurde
Die ausgewählte Instanz wird als Warnung zurückgegeben. Außerdem können Sie service.active_instance() ausführen, um die aktive Instanz zu ermitteln.
Lokale Tests mit qiskit-ibm-runtime
Die Klasse QiskitRuntimeService kann mit channel=local initialisiert werden, um eine lokale Simulation durchzuführen. In diesem Fall ist keine Authentifizierung erforderlich und es müssen keine Werte für token oder instance angegeben werden. Es wird daher nicht empfohlen, ein lokales Konto zu speichern. Stattdessen können Sie eine direkte Instanziierung vornehmen:
from qiskit_ibm_runtime import QiskitRuntimeService
# Initialize for local testing
service = QiskitRuntimeService(channel="local")Nächste Schritte
- Instanzen erstellen und verwalten.
- Initialisieren Sie den Dienst in einer nicht vertrauenswürdigen Umgebung.
- Einrichten der Verwendung von IBM Quantum Platform mit REST-API.
- Befolgen Sie die Schritte in der Anleitung „Ausführen Ihres ersten Schaltkreises auf Hardware“, um ein Quantenprogramm zu schreiben und auszuführen.