Sari la conținutul principal

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.

Note

Înainte să începi

Asigură-te că ai finalizat acești pași:

  1. Asigură-te că ești membru al unui cont IBM Cloud. Consultă Configurează-ți contul IBM Cloud pentru instrucțiuni.
  2. Creează (sau ai acces la) cel puțin o instanță. Urmează acești pași pentru a verifica:
    1. Autentifică-te în IBM Quantum Platform.
    2. Asigură-te că în selectorul de conturi din antet sunt selectate contul și regiunea corecte.
    3. Dacă ai una sau mai multe instanțe afișate, ai terminat cu acest pas. Altfel, creează o instanță.
  3. Asigură-te că lucrezi într-un mediu Python activ cu Qiskit SDK și Qiskit Runtime instalate.
  4. Activează mediul virtual Python și rulează Python în mediul tău virtual.

Găsește-ți credențialele de acces

  1. 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.
  2. 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

notă

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>)
notă

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 și name, token este ignorat și detaliile salvate din contul name sunt încărcate.

    În exemplul următor, serviciul încarcă detaliile din account_A și nu folosește token_B:

    from qiskit_ibm_runtime import QiskitRuntimeService

    service = QiskitRuntimeService(token="token_B", name="account_A")
  • Dacă furnizezi un name și o instance la inițializarea unui serviciu, serviciul încearcă să încarce contul name și să se conecteze la instance specificată. 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ța CRN_B - chiar dacă în account_A este 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 token sau name la inițializarea unui serviciu. Totuși, dacă o instance este 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 sunt open, premium, pay-as-you-go, flex și on-prem. Dacă plans_preference nu este specificat, planurile gratuite sunt prioritizate față de planurile plătite.
  • region: Regiunea instanței. Valorile acceptate sunt us-east și eu-de.
  • tags: Tag-urile instanței. Acceptă o listă de șiruri de caractere cu denumiri de tag-uri.
notă

Poți să-ți configurezi credențialele salvate pentru a selecta automat o instanță.

Instanța este găsită și utilizată în această ordine:

  1. Dacă contul tău are acces la o singură instanță, aceasta este selectată implicit.
  2. 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.
  3. 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.
  4. 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