Inizializza il tuo account del servizio Qiskit Runtime
Prima di utilizzare Qiskit Runtime, devi inizializzare (istanziare) il tuo account inviando (caricando) le credenziali. Queste credenziali possono essere inviate manualmente ogni volta che inizializzi il servizio Qiskit Runtime, oppure puoi salvarle per riutilizzarle.
- Se stai usando un computer pubblico o un altro ambiente non attendibile, segui invece le istruzioni in Inizializzare il servizio in un ambiente non attendibile.
- Segui queste istruzioni se vuoi connetterti tramite la REST API invece di usare Qiskit.
- Se necessario, usa queste informazioni per configurare il tuo firewall e abilitare l'accesso agli endpoint API di IBM Quantum.
Prima di iniziare​
Assicurati di aver completato questi passaggi:
- Assicurati di essere membro di un account IBM Cloud. Consulta Configura il tuo account IBM Cloud per le istruzioni.
- Crea (o accedi a) almeno un'istanza. Segui questi passaggi per verificare:
- Accedi a IBM Quantum Platform.
- Assicurati che l'account e la regione corretti siano selezionati nel selettore account nell'intestazione.
- Se hai una o più istanze visualizzate, hai completato questo passaggio. Altrimenti, crea un'istanza.
- Assicurati di lavorare in un ambiente Python attivo con Qiskit SDK e Qiskit Runtime installati.
- Attiva l'ambiente virtuale Python ed esegui Python nel tuo ambiente virtuale.
Trova le tue credenziali di accesso​
- Trova la tua chiave API (chiamata anche token API). Dal dashboard, crea la tua chiave API, poi copiala in un luogo sicuro in modo da poterla usare per l'autenticazione. Il token non sarà più visibile in seguito. Nota che puoi usare una singola chiave API per connetterti a qualsiasi regione.
- Facoltativo: trova l'istanza che vuoi usare dalla pagina Istanze. Passa il cursore sul suo CRN, clicca l'icona per copiarlo, poi salvalo in un luogo sicuro per poterlo usare per identificare l'istanza.
Connetti Qiskit alla tua istanza del servizio Qiskit Runtime​
Queste istruzioni sono pensate per qiskit_ibm_runtime v0.42 o versioni successive. Alcune funzionalità non sono disponibili nelle versioni precedenti di qiskit_ibm_runtime. In questi casi, devi sempre fornire un valore per channel, token e instance, in modo esplicito o tramite un account salvato.
Il codice base per connettere Qiskit alla tua istanza del servizio Qiskit Runtime è il seguente. Tuttavia, esistono diversi modi per personalizzare le opzioni di QiskitRuntimeService, a seconda delle tue esigenze. Queste opzioni sono descritte nelle sezioni seguenti.
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>)
Il canale predefinito è ibm_quantum_platform. Poiché questo è quasi sempre il canale appropriato, non è incluso negli esempi.
Percorso rapido: specifica le credenziali in modo esplicito​
Il modo più rapido per avviare un'istanza di QiskitRuntimeService è il metodo di istanziazione diretta: fornire esplicitamente il token API (chiave) e il CRN (identificatore di istanza) ogni volta che devi inizializzare il servizio Qiskit Runtime. Consulta Trova le tue credenziali di accesso se necessario.
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>)
Questo percorso è affidabile, ma può diventare tedioso se devi caricare gli stessi dati ripetutamente. Per evitare di caricare le credenziali più volte, se lavori in un ambiente Python attendibile (ad esempio su un laptop o una workstation personale), puoi usare le credenziali dell'account salvato, come descritto nella sezione seguente.
Sebbene il parametro di input instance sia facoltativo, è consigliabile fornire sempre queste informazioni, a meno che tu non voglia usare un unico servizio per lavorare con più istanze. In questo caso, consulta la sezione selezione automatica dell'istanza.
Percorso rapido: specifica le credenziali salvate​
Se hai già salvato le tue credenziali, usa il seguente codice per applicare le credenziali predefinite. Per le istruzioni su come salvare le credenziali, consulta Salva le tue credenziali di accesso.
from qiskit_ibm_runtime import QiskitRuntimeService
# run every time you need the service
service = QiskitRuntimeService()
...
Se hai assegnato un nome a uno o più insiemi di credenziali — ad esempio, per l'accesso open e premium — usa il seguente codice per utilizzare un insieme di credenziali con nome.
from qiskit_ibm_runtime import QiskitRuntimeService
# run every time you need the service
service = QiskitRuntimeService(name="<name_of_saved_credentials>")
...
Considerazioni sul caricamento delle credenziali salvate​
-
Se inizializzi un servizio con
tokenename, iltokenviene ignorato e vengono caricati i dettagli salvati dell'accountname.Nell'esempio seguente, il servizio carica i dettagli da
account_Ae non usatoken_B:from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService(token="token_B", name="account_A") -
Se fornisci un
namee uninstancequando inizializzi un servizio, il servizio cerca di caricare l'accountnamee connettersi all'instancespecificata. Se c'è un conflitto, viene emesso un avviso.Nell'esempio seguente, il servizio cerca di caricare le credenziali per
account_Ae usare l'istanzaCRN_B— anche se nell'account_Aè specificata un'istanza diversa:from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService(instance="CRN_B", name="account_A") -
Il servizio cerca di caricare l'account salvato predefinito solo se non fornisci un
tokeno unnamequando inizializzi un servizio. Tuttavia, se viene fornita esplicitamente un'instance, il servizio cerca di connettersi a quell'istanza usando le credenziali predefinite. Se c'è un conflitto, viene emesso un avviso.Nell'esempio seguente, il servizio cerca di caricare le credenziali predefinite e usare l'istanza
CRN_B— anche se nell'account predefinito è specificata un'istanza diversa:from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService(instance="CRN_B") -
Se salvi più insiemi di credenziali ma non ne specifichi uno quando inizializzi il servizio e non esiste un account salvato predefinito, viene usato quello il cui nome viene per ultimo in ordine alfabetico.
Nell'esempio seguente, l'utente ha salvato account con nome "my_premium" e "my_open" senza contrassegnarne nessuno come predefinito. Ha poi inizializzato il servizio con il seguente codice. In questo caso, vengono usate le credenziali "my_premium":
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService() -
Se continui a ricevere l'errore "401 Unauthorized", potresti star cercando di usare un bearer token invece della tua chiave API.
Selezione automatica dell'istanza​
Se fornisci un token ma non fornisci un CRN di istanza quando istanzi il servizio, QiskitRuntimeService si autentica all'account identificato dal token e usa la selezione automatica dell'istanza per scegliere l'istanza più adatta per il task richiesto. Se hai più istanze disponibili nel tuo account, il servizio sceglie automaticamente tra le istanze disponibili, in base alla risorsa richiesta e alle seguenti opzioni di QiskitRuntimeService (se impostate): plans_preference, region, tags.
plans_preference: I tipi di piani di istanza da privilegiare. Ad esempio, se viene passato [open], sono disponibili solo le istanze con piano Open. I valori accettati sonoopen,premium,pay-as-you-go,flexeon-prem. Seplans_preferencenon è specificato, i piani gratuiti hanno la priorità rispetto ai piani a pagamento.region: La regione dell'istanza. I valori accettati sonous-easteeu-de.tags: I tag dell'istanza. Accetta un elenco di stringhe con i nomi dei tag.
Puoi configurare le tue credenziali salvate per selezionare automaticamente un'istanza.
L'istanza viene trovata e usata nel seguente ordine:
- Se il tuo account ha accesso a una sola istanza, questa viene selezionata per impostazione predefinita.
- Se vengono usate credenziali salvate e un'istanza era specificata con le credenziali, quella istanza viene usata. Consulta Considerazioni sul caricamento delle credenziali salvate.
- Se il tuo account ha più istanze che possono accedere alla QPU richiesta, il sistema usa le preferenze di piano specificate per scegliere un piano e un'istanza. Per Qiskit Runtime v0.42 e versioni successive, i piani gratuiti hanno la priorità per impostazione predefinita.
- Se il tuo account ha accesso a più istanze ma solo una può accedere alla QPU richiesta, viene selezionata l'istanza con accesso. Se questa istanza non è associata a un piano gratuito, verrà addebitato un costo.
Esempi​
In questo esempio, il servizio cerca tra tutte le istanze disponibili per l'account quelle che possono accedere al backend specificato:
service = QiskitRuntimeService(token=<your-API_KEY>)
In questo esempio, il servizio cerca tra tutte le istanze disponibili per l'account nella regione UE quelle che possono accedere al backend specificato:
service = QiskitRuntimeService(token=<your-API_KEY>, region="eu-de")
In questo esempio, il servizio cerca tra tutte le istanze disponibili per l'account con tag services quelle che possono accedere al backend specificato:
service = QiskitRuntimeService(token=<your-API_KEY>, tags=['services'])
In questo esempio, il servizio cerca tra tutte le istanze premium e open disponibili per l'account quelle che possono accedere al backend specificato. Se un backend è presente sia in un'istanza con piano Premium che in una con piano Open, l'istanza con piano Premium ha la priorità perché premium è specificato per primo in plans_preference.
service = QiskitRuntimeService(token=<your-API_KEY>, plans_preference=['premium', 'open'])
Determinare quale istanza è stata scelta​
L'istanza selezionata viene restituita come avviso. Inoltre, puoi eseguire service.active_instance() per determinare l'istanza attiva.
Test locali con Qiskit Runtime​
La classe QiskitRuntimeService può essere inizializzata con channel=local per eseguire simulazioni locali. In questo caso, l'autenticazione non è richiesta e non è necessario fornire valori per token o instance. Pertanto, non è consigliabile salvare un account locale. Puoi invece usare l'istanziazione diretta:
from qiskit_ibm_runtime import QiskitRuntimeService
# Initialize for local testing
service = QiskitRuntimeService(channel="local")
Passi successivi​
- Crea e gestisci le istanze.
- Inizializza il servizio in un ambiente non attendibile.
- Configura l'uso di IBM Quantum Platform con la REST API.
- Segui i passaggi in Hello world per scrivere ed eseguire un programma quantistico.