Inizializza il tuo account del servizio di elaborazione IBM Quantum
Prima di utilizzare il servizio di elaborazione IBM Quantum®, è necessario inizializzare (istanziare) il proprio account inviando (caricando) le credenziali. Queste credenziali possono essere inserite manualmente ogni volta che si avvia un servizio Comput IBM Quantum, oppure è possibile salvarle per riutilizzarle in seguito.
- Se si utilizza un computer pubblico o un altro ambiente non attendibile, seguire invece le istruzioni in Inizializza il servizio in un ambiente non attendibile.
- Seguire queste istruzioni se si desidera connettersi utilizzando l'API REST invece di utilizzare Qiskit.
- Se necessario, utilizzare queste informazioni per configurare il firewall in modo da abilitare l'accesso agli endpoint API IBM Quantum.
Prima di iniziare
Assicuratevi di aver completato questi passaggi:
- Assicuratevi di essere membri di un account IBM Cloud. Per istruzioni, vedere Configurazione dell'account IBM Cloud.
- Creare (o avere accesso) ad almeno un'istanza. Seguite questi passaggi per verificare:
- Accedere a IBM Quantum Platform.
- Assicuratevi che il conto e la regione corretti siano selezionati nel selettore dei conti nell'intestazione.
- Se vengono visualizzate una o più istanze, questo passaggio è completato. Altrimenti, crea un'istanza.
- Assicurati di lavorare in un ambiente Python attivo con l' Qiskit SDK e e installati
qiskit-ibm-runtime. - Attivare l'ambiente virtuale Python ed eseguire Python nell'ambiente virtuale.
Trova le tue credenziali di accesso
- Trovate la vostra chiave API (detta anche token API ). Dalla dashboard, creare la chiave API e copiarla in un luogo sicuro per poterla utilizzare per l'autenticazione. Il token non sarà più visibile. Si noti che è possibile utilizzare una singola chiave API per connettersi a qualsiasi regione.
- Facoltativo: Individuare l'istanza che si desidera utilizzare dalla pagina Istanze. Passare il mouse sul CRN, fare clic sull'icona per copiarlo e salvarlo in un luogo sicuro per poterlo utilizzare per identificare l'istanza.
Collega Qiskit alla tua istanza di Compute Service su IBM Quantum
Queste istruzioni sono state concepite per il sito qiskit_ibm_runtime v0.42 o successivo. Alcune funzioni non sono abilitate nelle versioni precedenti di qiskit_ibm_runtime. In questi casi, occorre sempre fornire un valore per channel, token, e instance, esplicitamente o tramite un conto salvato.
Di seguito è riportato il codice di base per collegare Qiskit alla tua istanza di Quantum Compute. Tuttavia, esistono diversi modi per personalizzare le opzioni QiskitRuntimeService , a seconda delle proprie esigenze. Queste opzioni sono descritte nelle seguenti sezioni.
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>)Il canale predefinito è ibm_quantum_platform. Poiché questo è quasi sempre il canale appropriato, non è stato incluso negli esempi.
Percorso di avvio rapido: specificare esplicitamente le credenziali
Il modo più veloce per avviare un'istanza QiskitRuntimeService è il metodo di istanziazione diretta: fornire esplicitamente il token API (chiave) e l' CRN (identificatore dell'istanza) ogni volta che è necessario inizializzare un IBM Quantum Compute Service. Se necessario, consulta la sezione " Trova le tue credenziali di accesso ".
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>)Questo percorso è affidabile, ma può essere noioso se si devono caricare ripetutamente gli stessi dettagli. Per evitare di caricare più volte le credenziali, se si lavora in un ambiente fidato Python (ad esempio su un portatile o una workstation personale), è possibile utilizzare le credenziali dell'account salvate, come descritto nella sezione seguente.
Sebbene il parametro di input instance sia facoltativo, si consiglia di fornire sempre questa informazione, a meno che non si voglia utilizzare un singolo servizio per lavorare con diverse istanze. In questa situazione, vedere la sezione Selezione automatica dell'istanza.
Percorso di avvio rapido: specificare le credenziali salvate
Se hai già salvato le tue credenziali, utilizza il codice seguente per applicare le credenziali predefinite. Per 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 si è dato un nome a uno o più set di credenziali, ad esempio per l'accesso open e premium, utilizzare il seguente codice per utilizzare un set di credenziali nominate.
from qiskit_ibm_runtime import QiskitRuntimeService
# run every time you need the service
service = QiskitRuntimeService(name="<name_of_saved_credentials>")
...Considerazioni relative al caricamento delle credenziali salvate
-
Se si inizializza un servizio con
tokenename, l'accounttokenviene ignorato e vengono caricati i dettagli salvati dall'accountname.Nell'esempio seguente, il servizio carica i dettagli da
account_Ae non utilizzatoken_B:from qiskit_ibm_runtime import QiskitRuntimeService service = QiskitRuntimeService(token="token_B", name="account_A") -
Se si forniscono un
namee uninstancequando si inizializza un servizio, il servizio cerca di caricare l'accountnamee di connettersi alinstancespecificato. In caso di conflitto, viene emesso un avviso.Nell'esempio seguente, il servizio cerca di caricare le credenziali di
account_Ae di utilizzare l'istanzaCRN_B, anche se esiste un'istanza diversa specificata inaccount_A:from qiskit_ibm_runtime import QiskitRuntimeService service = QiskitRuntimeService(instance="CRN_B", name="account_A") -
Il servizio tenta di caricare l'account salvato di default solo se non si fornisce un
tokeno unnamequando si inizializza un servizio. Tuttavia, se viene fornito esplicitamente uninstance, il servizio tenta di connettersi a tale istanza utilizzando le credenziali predefinite. In caso di conflitto, viene emesso un avviso.Nell'esempio seguente, il servizio tenta di caricare le credenziali predefinite e di utilizzare 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 si salvano più set di credenziali ma non se ne specifica uno al momento dell'inizializzazione del servizio e non c'è un account predefinito salvato, viene utilizzato quello il cui nome è l'ultimo in ordine alfabetico.
Nell'esempio seguente, l'utente ha salvato gli account denominati "my_premium" e "my_open", ma non ha contrassegnato nessuno dei due come dfault. Hanno quindi inizializzato il servizio utilizzando il seguente codice. In questo caso, vengono utilizzate le credenziali "my_premium":
from qiskit_ibm_runtime import QiskitRuntimeService service = QiskitRuntimeService() -
Se ricevi continuamente l'errore "401 Non autorizzato", potresti stare cercando di utilizzare un token bearer invece della tua chiave API.
Seleziona automaticamente l'istanza
Se si fornisce un token ma non un CRN di istanza quando si istanzia il servizio, QiskitRuntimeService si autentica all'account identificato dal token e utilizza la selezione automatica dell'istanza per scegliere l'istanza più pertinente per l'attività richiesta. Se sono disponibili più istanze all'interno del proprio account, il servizio sceglie automaticamente tra le istanze disponibili, in base alla risorsa richiesta e alle opzioni QiskitRuntimeService (se impostate): plans_preference, region, tags.
plans_preference: I tipi di piani di istanza a cui dare priorità. Ad esempio, se si inserisce [open] è stato inserito, sono disponibili solo le istanze di Open Plan. I valori accettati sonoopen,premium,pay-as-you-go,flexeon-prem. Seplans_preferencenon è specificato, i piani gratuiti hanno la priorità su quelli a pagamento.region: La regione dell'istanza. I valori accettati sonous-easteeu-de.tags: I tag dell'istanza. Accetta un elenco di stringhe di nomi di tag.
È possibile impostare le credenziali salvate per selezionare automaticamente un'istanza.
L'istanza viene trovata e utilizzata in questo ordine:
- Se l'account ha accesso a una sola istanza, questa viene selezionata per impostazione predefinita.
- Se vengono utilizzate credenziali salvate e un'istanza è stata specificata con le credenziali, viene utilizzata tale istanza. Vedere Considerazioni durante il caricamento delle credenziali salvate.
- Se il tuo account dispone di più istanze in grado di accedere alla QPU richiesta, il sistema utilizza le preferenze relative al piano da te specificate per scegliere un piano e un'istanza. Per v0.42
qiskit-ibm-runtimee versioni successive, i piani gratuiti hanno la priorità per impostazione predefinita. - Se l'account ha accesso a più istanze ma solo una può accedere alla QPU richiesta, viene selezionata l'istanza con accesso. Se l'istanza non è associata a un piano gratuito, si dovrà sostenere un costo.
Esempi
In questo esempio, il servizio cerca tutte le istanze disponibili per l'account per trovare quelle che possono accedere al backend specificato:
service = QiskitRuntimeService(token=<your-API_KEY>)In questo esempio, il servizio cerca tutte le istanze disponibili per l'account nell'area UE per trovare quelle che possono accedere al backend specificato:
service = QiskitRuntimeService(token=<your-API_KEY>, region="eu-de")In questo esempio, il servizio cerca tutte le istanze disponibili per l'account e contrassegnate come services per trovare quelle che possono accedere al backend specificato:
service = QiskitRuntimeService(token=<your-API_KEY>, tags=['services'])In questo esempio, il servizio cerca tutte le istanze premium e aperte disponibili per l'account per trovare quelle che possono accedere al backend specificato. Se un backend si trova sia in un'istanza Premium che in un'istanza Open Plan, l'istanza Premium Plan 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, è possibile eseguire service.active_instance() per determinare l'istanza attiva.
Test a livello locale con qiskit-ibm-runtime
La classe QiskitRuntimeService può essere inizializzata con channel=local per eseguire una simulazione locale. In questo caso, l'autenticazione non è richiesta e non è necessario fornire valori per token o instance. Pertanto, non è consigliabile salvare un account locale. Si può invece procedere all'istanziazione diretta:
from qiskit_ibm_runtime import QiskitRuntimeService
# Initialize for local testing
service = QiskitRuntimeService(channel="local")Passi successivi
- Creare e gestire istanze.
- Inizializza il servizio in un ambiente non attendibile.
- Configurazione per l'utilizzo di IBM Quantum Platform con REST API.
- Segui i passaggi indicati nella guida Esegui il tuo primo circuito su hardware per scrivere ed eseguire un programma quantistico.