Inițializează-ți contul de serviciu Qiskit Runtime
Înainte de a utiliza Qiskit Runtime, trebuie să-ți inițializezi (instanțiezi) contul prin trimiterea (încărcarea) credențialelor. Aceste credențiale pot fi trimise manual de fiecare dată când inițializezi serviciul Qiskit Runtime, sau le poți salva pentru reutilizare.
- Dacă folosești un computer public sau alt mediu neîncrezut, urmează instrucțiunile din Inițializează serviciul într-un mediu neîncrezut în schimb.
- Urmează aceste instrucțiuni dacă vrei să te conectezi folosind REST API în loc de Qiskit.
- Dacă este necesar, folosește aceste informații pentru a-ți configura firewall-ul și a permite accesul la endpoint-urile IBM Quantum API.
Înainte să începi
Asigură-te că ai finalizat acești pași:
- Asigură-te că ești membru al unui cont IBM Cloud. Consultă Configurează-ți contul IBM Cloud pentru instrucțiuni.
- Creează (sau ai acces la) cel puțin o instanță. Urmează acești pași pentru a verifica:
- Autentifică-te în IBM Quantum Platform.
- Asigură-te că în selectorul de conturi din antet sunt selectate contul și regiunea corecte.
- Dacă ai una sau mai multe instanțe afișate, ai terminat cu acest pas. Altfel, creează o instanță.
- Asigură-te că lucrezi într-un mediu Python activ cu Qiskit SDK și Qiskit Runtime instalate.
- Activează mediul virtual Python și rulează Python în mediul tău virtual.
Găsește-ți credențialele de acces
- Găsește-ți cheia API (numită și token API). Din tabloul de bord, creează-ți cheia API, apoi copiaz-o într-o locație sigură pentru a o putea folosi la autentificare. Token-ul nu va mai fi vizibil. Reține că poți folosi o singură cheie API pentru a te conecta la orice regiune.
- Opțional: Găsește instanța pe care vrei să o folosești din pagina Instanțe. Plasează cursorul peste CRN-ul ei, dă clic pe pictogramă pentru a-l copia, apoi salvează-l într-o locație sigură pentru a-l putea folosi pentru a identifica instanța.
Conectează Qiskit cu instanța ta de serviciu Qiskit Runtime
Aceste instrucțiuni sunt concepute pentru qiskit_ibm_runtime v0.42 sau versiuni ulterioare. Unele funcționalități nu sunt disponibile în versiunile anterioare ale qiskit_ibm_runtime. În aceste cazuri, trebuie să furnizezi întotdeauna o valoare pentru channel, token și instance, fie explicit, fie printr-un cont salvat.
Codul de bază pentru conectarea Qiskit cu instanța ta de serviciu Qiskit Runtime este prezentat mai jos. Totuși, există mai multe moduri de a personaliza opțiunile QiskitRuntimeService, în funcție de nevoile tale. Aceste opțiuni sunt descrise în secțiunile următoare.
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>)
Canalul implicit este ibm_quantum_platform. Deoarece acesta este aproape întotdeauna canalul potrivit, nu este inclus în exemple.
Cale rapidă de pornire: Specifică credențialele explicit
Cel mai rapid mod de a obține o instanță QiskitRuntimeService funcțională este metoda instanțierii directe: furnizezi explicit token-ul API (cheia) și CRN-ul (identificatorul instanței) de fiecare dată când trebuie să inițializezi serviciul Qiskit Runtime. Consultă Găsește-ți credențialele de acces dacă este necesar.
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>)
Această cale este fiabilă, dar poate fi obositoare dacă trebuie să încarci aceleași detalii în mod repetat. Pentru a evita încărcarea credențialelor de mai multe ori, dacă lucrezi într-un mediu Python de încredere (de exemplu, pe un laptop personal sau o stație de lucru), poți folosi credențialele de cont salvate, așa cum este descris în secțiunea următoare.
Deși parametrul de intrare instance este opțional, se recomandă să furnizezi întotdeauna aceste informații, cu excepția cazului în care vrei să folosești un singur serviciu pentru a lucra cu mai multe instanțe. În această situație, consultă secțiunea selectare automată a instanței.
Cale rapidă de pornire: Specifică credențialele salvate
Dacă ți-ai salvat deja credențialele, folosește codul următor pentru a aplica credențialele implicite. Pentru instrucțiuni despre salvarea credențialelor, consultă Salvează-ți credențialele de acces.
from qiskit_ibm_runtime import QiskitRuntimeService
# run every time you need the service
service = QiskitRuntimeService()
...
Dacă ai denumit unul sau mai multe seturi de credențiale - de exemplu, pentru acces deschis și premium - folosește codul următor pentru a utiliza un set de credențiale cu denumire.
from qiskit_ibm_runtime import QiskitRuntimeService
# run every time you need the service
service = QiskitRuntimeService(name="<name_of_saved_credentials>")
...
Considerații la încărcarea credențialelor salvate
-
Dacă inițializezi un serviciu cu
tokenșiname,tokeneste ignorat și detaliile salvate din contulnamesunt încărcate.În exemplul următor, serviciul încarcă detaliile din
account_Ași nu foloseștetoken_B:from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService(token="token_B", name="account_A") -
Dacă furnizezi un
nameși oinstancela inițializarea unui serviciu, serviciul încearcă să încarce contulnameși să se conecteze lainstancespecificată. Dacă există vreun conflict, este afișat un avertisment.În exemplul următor, serviciul încearcă să încarce credențialele pentru
account_Ași să folosească instanțaCRN_B- chiar dacă înaccount_Aeste specificată o altă instanță:from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService(instance="CRN_B", name="account_A") -
Serviciul încearcă să încarce contul salvat implicit numai dacă nu furnizezi un
tokensaunamela inițializarea unui serviciu. Totuși, dacă oinstanceeste furnizată explicit, serviciul încearcă să se conecteze la acea instanță folosind credențialele implicite. Dacă există vreun conflict, este afișat un avertisment.În exemplul următor, serviciul încearcă să încarce credențialele implicite și să folosească instanța
CRN_B- chiar dacă în contul implicit este specificată o altă instanță:from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService(instance="CRN_B") -
Dacă salvezi mai multe seturi de credențiale, dar nu specifici unul la inițializarea serviciului și nu există un cont salvat implicit, cel al cărui nume vine ultimul în ordine alfabetică este utilizat.
În exemplul următor, utilizatorul a salvat conturi denumite "my_premium" și "my_open", dar nu a marcat niciunul ca implicit. Apoi a inițializat serviciul folosind codul următor. În acest caz, sunt folosite credențialele "my_premium":
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService() -
Dacă primești persistent eroarea "401 Unauthorized", este posibil să încerci să folosești un bearer token în loc de cheia ta API.
Selectează automat instanța
Dacă furnizezi un token, dar nu furnizezi un CRN de instanță la instanțierea serviciului, QiskitRuntimeService se autentifică la contul identificat prin token și folosește selecția automată a instanței pentru a alege instanța cea mai relevantă pentru sarcina solicitată. Dacă ai mai multe instanțe disponibile în contul tău, serviciul alege automat dintre instanțele disponibile, în funcție de resursa solicitată și de aceste opțiuni QiskitRuntimeService (dacă sunt setate): plans_preference, region, tags.
plans_preference: Tipurile de planuri de instanță de prioritizat. De exemplu, dacă [open] este transmis, sunt disponibile doar instanțele cu Plan Deschis. Valorile acceptate suntopen,premium,pay-as-you-go,flexșion-prem. Dacăplans_preferencenu este specificat, planurile gratuite sunt prioritizate față de planurile plătite.region: Regiunea instanței. Valorile acceptate suntus-eastșieu-de.tags: Tag-urile instanței. Acceptă o listă de șiruri de caractere cu denumiri de tag-uri.
Poți să-ți configurezi credențialele salvate pentru a selecta automat o instanță.
Instanța este găsită și utilizată în această ordine:
- Dacă contul tău are acces la o singură instanță, aceasta este selectată implicit.
- Dacă sunt folosite credențiale salvate și o instanță a fost specificată împreună cu credențialele, acea instanță este utilizată. Consultă Considerații la încărcarea credențialelor salvate.
- Dacă contul tău are mai multe instanțe care pot accesa QPU-ul solicitat, sistemul folosește preferințele tale de plan specificate pentru a alege un plan și o instanță. Pentru Qiskit Runtime v0.42 și versiunile ulterioare, planurile gratuite sunt prioritizate implicit.
- Dacă contul tău are acces la mai multe instanțe, dar doar una poate accesa QPU-ul solicitat, instanța cu acces este selectată. Dacă această instanță nu este asociată cu un plan gratuit, se va suporta un cost.
Exemple
În acest exemplu, serviciul caută în toate instanțele disponibile pentru cont pentru a găsi cele care pot accesa Backend-ul specificat:
service = QiskitRuntimeService(token=<your-API_KEY>)
În acest exemplu, serviciul caută în toate instanțele disponibile pentru cont în regiunea UE pentru a găsi cele care pot accesa Backend-ul specificat:
service = QiskitRuntimeService(token=<your-API_KEY>, region="eu-de")
În acest exemplu, serviciul caută în toate instanțele disponibile pentru cont care sunt etichetate cu services pentru a găsi cele care pot accesa Backend-ul specificat:
service = QiskitRuntimeService(token=<your-API_KEY>, tags=['services'])
În acest exemplu, serviciul caută în toate instanțele premium și deschise disponibile pentru cont pentru a găsi cele care pot accesa Backend-ul specificat. Dacă un Backend se află atât într-o instanță cu Plan Premium, cât și într-una cu Plan Deschis, instanța cu Plan Premium este prioritizată deoarece premium este specificat primul în plans_preference.
service = QiskitRuntimeService(token=<your-API_KEY>, plans_preference=['premium', 'open'])
Determină care instanță a fost aleasă
Instanța selectată este returnată ca avertisment. În plus, poți rula service.active_instance() pentru a determina instanța activă.
Testare locală cu Qiskit Runtime
Clasa QiskitRuntimeService poate fi inițializată cu channel=local pentru a efectua simulare locală. În acest caz, autentificarea nu este necesară și nu este nevoie să furnizezi valori pentru token sau instance. Prin urmare, nu se recomandă să salvezi un cont local. În schimb, poți folosi instanțierea directă:
from qiskit_ibm_runtime import QiskitRuntimeService
# Initialize for local testing
service = QiskitRuntimeService(channel="local")
Pași următori
- Creează și gestionează instanțe.
- Inițializează serviciul într-un mediu neîncrezut.
- Configurează utilizarea IBM Quantum Platform cu REST API.
- Urmează pașii din Hello world pentru a scrie și rula un program cuantic.