Initialiser ton compte de service Qiskit Runtime
Avant d'utiliser Qiskit Runtime, tu dois initialiser (instancier) ton compte en soumettant (chargeant) tes identifiants. Ces identifiants peuvent être soumis manuellement à chaque fois que tu initialises le service Qiskit Runtime, ou tu peux les enregistrer pour les réutiliser.
- Si tu utilises un ordinateur public ou un autre environnement non fiable, suis plutôt les instructions de la page Initialiser le service dans un environnement non fiable.
- Suis ces instructions si tu souhaites te connecter via l'API REST plutôt qu'avec Qiskit.
- Si nécessaire, utilise ces informations pour configurer ton pare-feu afin d'activer l'accès aux points de terminaison de l'API IBM Quantum.
Avant de commencer
Assure-toi d'avoir effectué les étapes suivantes :
- Assure-toi d'être membre d'un compte IBM Cloud. Consulte Configurer ton compte IBM Cloud pour les instructions.
- Crée (ou accède à) au moins une instance. Suis ces étapes pour vérifier :
- Connecte-toi à IBM Quantum Platform.
- Assure-toi que le bon compte et la bonne région sont sélectionnés dans le sélecteur de compte dans l'en-tête.
- Si une ou plusieurs instances sont affichées, cette étape est terminée. Sinon, crée une instance.
- Assure-toi de travailler dans un environnement Python actif avec le SDK Qiskit et Qiskit Runtime installés.
- Active l'environnement virtuel Python et exécute Python dans ton environnement virtuel.
Trouver tes identifiants d'accès
- Trouve ta clé API (également appelée jeton API). Depuis le tableau de bord, crée ta clé API, puis copie-la dans un endroit sécurisé pour pouvoir l'utiliser pour l'authentification. Le jeton ne sera plus visible par la suite. Note que tu peux utiliser une seule clé API pour te connecter à n'importe quelle région.
- Facultatif : Trouve l'instance que tu souhaites utiliser depuis la page Instances. Survole son CRN, clique sur l'icône pour le copier, puis enregistre-le dans un endroit sécurisé pour pouvoir l'utiliser pour identifier l'instance.
Connecter Qiskit à ton instance de service Qiskit Runtime
Ces instructions sont conçues pour qiskit_ibm_runtime v0.42 ou une version ultérieure. Certaines fonctionnalités ne sont pas disponibles dans les versions antérieures de qiskit_ibm_runtime. Dans ces cas, tu dois toujours fournir une valeur pour channel, token et instance, soit explicitement, soit via un compte enregistré.
Voici le code de base pour connecter Qiskit à ton instance de service Qiskit Runtime. Il existe cependant plusieurs façons de personnaliser les options de QiskitRuntimeService selon tes besoins. Ces options sont décrites dans les sections suivantes.
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>)
Le canal par défaut est ibm_quantum_platform. Comme c'est presque toujours le canal approprié, il n'est pas inclus dans les exemples.
Démarrage rapide : Spécifier les identifiants explicitement
La façon la plus rapide d'obtenir une instance QiskitRuntimeService opérationnelle est la méthode d'instanciation directe : fournir explicitement le jeton API (clé) et le CRN (identifiant d'instance) à chaque fois que tu as besoin d'initialiser le service Qiskit Runtime. Consulte Trouver tes identifiants d'accès si nécessaire.
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>)
Cette approche est fiable, mais peut être fastidieuse si tu dois charger les mêmes informations à plusieurs reprises. Pour éviter de charger tes identifiants plusieurs fois, si tu travailles dans un environnement Python de confiance (par exemple sur un ordinateur portable personnel ou un poste de travail), tu peux utiliser des identifiants de compte enregistrés, comme décrit dans la section suivante.
Bien que le paramètre d'entrée instance soit facultatif, il est recommandé de toujours fournir cette information, sauf si tu souhaites utiliser un seul service pour travailler avec plusieurs instances. Dans ce cas, consulte la section sélection automatique d'instance.
Démarrage rapide : Spécifier des identifiants enregistrés
Si tu as déjà enregistré tes identifiants, utilise le code suivant pour appliquer tes identifiants par défaut. Pour les instructions d'enregistrement des identifiants, consulte Enregistrer tes identifiants d'accès.
from qiskit_ibm_runtime import QiskitRuntimeService
# run every time you need the service
service = QiskitRuntimeService()
...
Si tu as nommé un ou plusieurs ensembles d'identifiants — par exemple pour l'accès ouvert et l'accès premium — utilise le code suivant pour utiliser un ensemble d'identifiants nommé.
from qiskit_ibm_runtime import QiskitRuntimeService
# run every time you need the service
service = QiskitRuntimeService(name="<name_of_saved_credentials>")
...
Considérations lors du chargement des identifiants enregistrés
-
Si tu initialises un service avec
tokenetname, letokenest ignoré et les détails enregistrés du comptenamesont chargés.Dans l'exemple suivant, le service charge les détails de
account_Aet n'utilise pastoken_B:from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService(token="token_B", name="account_A") -
Si tu fournis un
nameet uneinstancelors de l'initialisation d'un service, le service essaie de charger le comptenameet de se connecter à l'instancespécifiée. En cas de conflit, un avertissement est émis.Dans l'exemple suivant, le service tente de charger les identifiants pour
account_Aet d'utiliser l'instanceCRN_B— même si une instance différente est spécifiée dansaccount_A:from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService(instance="CRN_B", name="account_A") -
Le service tente de charger le compte enregistré par défaut uniquement si tu ne fournis ni
tokenninamelors de l'initialisation. Cependant, si uneinstanceest fournie explicitement, le service tente de se connecter à cette instance en utilisant les identifiants par défaut. En cas de conflit, un avertissement est émis.Dans l'exemple suivant, le service tente de charger les identifiants par défaut et d'utiliser l'instance
CRN_B— même si une instance différente est spécifiée dans le compte par défaut :from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService(instance="CRN_B") -
Si tu enregistres plusieurs ensembles d'identifiants sans en spécifier un lors de l'initialisation du service et qu'il n'y a pas de compte par défaut enregistré, celui dont le nom vient en dernier dans l'ordre alphabétique est utilisé.
Dans l'exemple suivant, l'utilisateur a enregistré des comptes nommés « my_premium » et « my_open » sans en marquer aucun comme défaut. Il a ensuite initialisé le service avec le code suivant. Dans ce cas, les identifiants « my_premium » sont utilisés :
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService() -
Si tu obtiens de façon persistante l'erreur « 401 Unauthorized », tu essaies peut-être d'utiliser un jeton bearer au lieu de ta clé API.
Sélectionner automatiquement l'instance
Si tu fournis un jeton mais ne fournis pas de CRN d'instance lors de l'instanciation du service, QiskitRuntimeService s'authentifie auprès du compte identifié par le jeton et utilise la sélection automatique d'instance pour choisir l'instance la plus pertinente pour la tâche demandée. Si tu disposes de plusieurs instances dans ton compte, le service choisit automatiquement parmi les instances disponibles, en fonction de la ressource demandée et de ces options QiskitRuntimeService (si définies) : plans_preference, region, tags.
plans_preference: Les types de plans d'instance à prioriser. Par exemple, si [open] est passé, seules les instances du plan Open sont disponibles. Les valeurs acceptées sontopen,premium,pay-as-you-go,flexeton-prem. Siplans_preferencen'est pas spécifié, les plans gratuits sont prioritaires sur les plans payants.region: La région de l'instance. Les valeurs acceptées sontus-easteteu-de.tags: Les tags de l'instance. Accepte une liste de chaînes de noms de tags.
Tu peux configurer tes identifiants enregistrés pour sélectionner automatiquement une instance.
L'instance est trouvée et utilisée dans cet ordre :
- Si ton compte n'a accès qu'à une seule instance, elle est sélectionnée par défaut.
- Si des identifiants enregistrés sont utilisés et qu'une instance a été spécifiée avec les identifiants, cette instance est utilisée. Consulte Considérations lors du chargement des identifiants enregistrés.
- Si ton compte dispose de plusieurs instances pouvant accéder au QPU demandé, le système utilise tes préférences de plan spécifiées pour choisir un plan et une instance. Pour Qiskit Runtime v0.42 et versions ultérieures, les plans gratuits sont prioritaires par défaut.
- Si ton compte a accès à plusieurs instances mais qu'une seule peut accéder au QPU demandé, l'instance disposant de l'accès est sélectionnée. Si cette instance n'est pas associée à un plan gratuit, des frais seront engagés.
Exemples
Dans cet exemple, le service recherche toutes les instances disponibles pour le compte afin de trouver celles qui peuvent accéder au backend spécifié :
service = QiskitRuntimeService(token=<your-API_KEY>)
Dans cet exemple, le service recherche toutes les instances disponibles pour le compte dans la région UE afin de trouver celles qui peuvent accéder au backend spécifié :
service = QiskitRuntimeService(token=<your-API_KEY>, region="eu-de")
Dans cet exemple, le service recherche toutes les instances disponibles pour le compte et étiquetées services afin de trouver celles qui peuvent accéder au backend spécifié :
service = QiskitRuntimeService(token=<your-API_KEY>, tags=['services'])
Dans cet exemple, le service recherche toutes les instances premium et open disponibles pour le compte afin de trouver celles qui peuvent accéder au backend spécifié. Si un backend est disponible à la fois dans une instance Premium et une instance Open Plan, l'instance Premium Plan est prioritaire car premium est spécifié en premier dans plans_preference.
service = QiskitRuntimeService(token=<your-API_KEY>, plans_preference=['premium', 'open'])
Déterminer quelle instance a été choisie
L'instance sélectionnée est retournée sous forme d'avertissement. De plus, tu peux exécuter service.active_instance() pour déterminer l'instance active.
Tests locaux avec Qiskit Runtime
La classe QiskitRuntimeService peut être initialisée avec channel=local pour effectuer une simulation locale. Dans ce cas, l'authentification n'est pas requise et il n'est pas nécessaire de fournir des valeurs pour token ou instance. Il n'est donc pas recommandé d'enregistrer un compte local. Tu peux plutôt faire une instanciation directe :
from qiskit_ibm_runtime import QiskitRuntimeService
# Initialize for local testing
service = QiskitRuntimeService(channel="local")
Prochaines étapes
- Créer et gérer des instances.
- Initialiser le service dans un environnement non fiable.
- Configurer l'utilisation d'IBM Quantum Platform avec l'API REST.
- Suis les étapes de Hello world pour écrire et exécuter un programme quantique.