IBM Quantum Note di rilascio di Compute Client
0.49.0 (10 agosto 2026)
Note sull'aggiornamento
- Le classi di opzioni del pacchetto
options_modelssono ora basate su di PydanticBaseModelanziché sudataclass. ( 3042 ) - La versione predefinita dello schema per Executor è stata modificata in 2.0. ( 3043 )
- Il servizio " Qiskit Runtime " è stato rinominato " IBM Quantum Compute " e i riferimenti ad esso presenti nella documentazione sono stati aggiornati. Il corso
QiskitRuntimeServiceè ora disponibile comeIBMQuantumComputeService. ( 3070 )
Note di deprecazione
- L'uso di stdlib
asdictcon le classi di opzioni deloptions_modelspacchetto è ora deprecato, poiché ora si tratta di modelli Pydantic. Utilizza invece direttamenteoptions.model_dump()per serializzarli in un filedict. ( 3042 ) - L'opzione
post_selectionNoiseLearnerV3è ora deprecata e verrà rimossa in una versione futura. ( 3160 )
Nuove funzioni
- Aggiunte le istruzioni
MidCircuitResete il passaggio delConvertToMidCircuitResetAndMeasuretranspiler. Il nuovo pass amplia le funzionalitàConvertToMidCircuitMeasureesistenti sostituendo anche le istruzioniresetnon terminali con implementazioni di reset a metà circuito specifiche per l'hardware. ( 2903 ) - È stato aggiunto il campo bit_flip_checks a NoiseLearnerV3Options, consentendo agli utenti di richiedere controlli di bit flip sui risultati dei circuiti di apprendimento del rumore. ( 2907 )
- È stato aggiunto un
persistparametro facoltativo aFakeBackendV2.refresh(). Per impostazione predefinita (persist=True) il comportamento rimane invariato: la configurazione e le proprietà aggiornate sovrascrivono i file di dati inclusi nel pacchetto installato, in modo che l'aggiornamento rimanga attivo tra una sessione e l'altra. L'opzione “passing” scrive invecepersist=Falsei dati aggiornati in una directory temporanea, il che consenterefresh()l'esecuzione dell'operazione anche quando il pacchetto è installato in una posizione di sola lettura (ad esempio, unasite-packagesdirectory a livello di sistema) dove, altrimenti, la sovrascrittura dei file inclusi nel pacchetto causerebbe un errorePermissionError. In quella modalità, il backend viene aggiornato solo per la sessione corrente e le modifiche non vengono salvate su disco. ( 2977 ) IBMBackendora dispone di un attributophysical_qubitsche restituisce il numero di qubit fisici del backend (qubit programmabili, qubit di reset e accoppiatori considerati complessivamente). L'attributo è disponibile ancheFakeBackendV2per i backend che non sono stati ritirati. ( 3080 )- L' URL e IAM utilizzato da
QiskitRuntimeService.instances()può ora essere sovrascritto dalla variabile d'ambienteIAM_URL, seguendo la stessa convenzione delle variabiliGLOBAL_CATALOG_URLGLOBAL_SEARCH_URLe dell'SDK di IBM. Ciò consente di instradare il traffico IAM attraverso un endpoint privato (ad esempio,https://private.iam.cloud.ibm.com) negli ambienti VPE senza apportare alcuna modifica al codice. ( 3135 )
Correzioni di bug
- Migliorare il messaggio di avviso visualizzato quando un’attività recuperata è stata serializzata con una versione di Qiskit più recente rispetto a quella installata localmente. Prima di chiamare
qiskit.qpy.load, oraRuntimeDecoderviene visualizzato un messaggio chiaro che suggerisce di effettuare l'aggiornamento conpip install -U qiskitquando la versione del formato QPY incorporato è più recente di quella supportata da Qiskit installato. ( 2426 ) FakeProviderForBackendV2.backends()ora restituisce anche otto backend fittizi che erano importabili daqiskit_ibm_runtime.fake_providerma che mancavano dall'elenco dei backend del provider, oltre a quelli che restituiva già:FakeAachen,FakeBerlin,FakeBoston,FakeBrussels,FakeKingston,FakeMiami,FakePittsburgh, eFakeStrasbourg. In precedenza, l'esecuzione di (FakeProviderForBackendV2().backend(name="fake_kingston")e delle altre sette) generava unQiskitBackendNotFoundErroranche se le classi di backend esistevano. ( 3164 )
0.48.0 (14 luglio 2026)
Note sull'aggiornamento
- La versione minima richiesta di Qiskit è ora
2.3.0, mentre quella di Samplomatic è0.18.0. Gli utenti diExecutorpossono ora far ruotare i propri circuiti con il"local_c1"gruppo "twirling", supportato da Samplomatic versione0.17.0e successive. ( 2925 )
Note di deprecazione
-
Tutte le classi che rappresentano i risultati sono ora disponibili tramite il
qiskit_ibm_runtime.resultspacchetto; di conseguenza, le seguenti classi sono state spostate nel pacchetto results:PauliLindbladError,LayerError,NoiseLearnerResult(in precedenza facente parte diqiskit_ibm_runtime.utils.noise_learner_result)EstimatorPubResult(in precedenza parte diqiskit_ibm_runtime.utils.estimator_pub_result)
L'importazione dai percorsi precedenti è ormai obsoleta e i riferimenti verranno rimossi in una versione futura. ( 2835 )
-
L'esecuzione di
SamplerV2un’attività con valori diversipub.shotsnei vari PUB è sconsigliata. Allo stesso modo, l'esecuzione diEstimatorV2un’operazione con valori diversipub.precisiontra i vari PUB è sconsigliata. ( 2992 ) -
L'impostazione
MeasureNoiseLearningOptions.shots_per_randomizationsu unintvalore è deprecata e verrà rimossa nelle versioni future. Si prega di utilizzare"auto"al suo posto. ( 3004 )
Nuove funzioni
-
Il
RuntimeJobV2.usage()metodo ora supporta un parametro opzionalepartial( 2884 ):- Se il
partialflag èFalse, il metodo restituirà0fino al completamento del calcolo dell'utilizzo del lavoro. - Se il
partialflag èTrue, il metodo restituirà l'utilizzo parziale incrementale del lavoro indipendentemente dal fatto che il calcolo sia stato completato.
- Se il
-
Sono state aggiunte opzioni per richiedere i tempi previsti per i circuiti e per restituire le risoluzioni numeriche dei tratti relativi ai singoli circuiti durante l'esecuzione dei lavori di Executor. ( 2790 ) ( 2789 )
-
È stato aggiunto il supporto per
instance="auto"inQiskitRuntimeServiceeQiskitRuntimeService.save_account(). L'utilizzo dipassinginstance="auto"attiva esplicitamente la selezione automatica dell'istanza senza generare l'avviso "istanza non impostata" né gli avvisi "Caricamento/Utilizzo dell'istanza" durante il recupero dal backend. Il valore può essere salvato nel file di configurazione, in modo che venga applicato a ogni successiva istanza. ( 2854 ) -
È stato aggiunto un
use_fractional_gatesparametro aQiskitRuntimeService.least_busy(), in modo che il suo comportamento corrisponda a quello dello stesso parametro inQiskitRuntimeService.backend(). Se impostato suTrue, vengono presi in considerazione solo i backend che includono gate frazionari nei propri gate di base; i backend che non li includono vengono ignorati a favore del backend idoneo successivo meno occupato. ( 2855 ) -
È stato reintrodotto il supporto per il passaggio di più decodificatori di risultati a
RuntimeJobV2eRuntimeJobV2.result(). ( 2899 ) -
È stato aggiunto il supporto per
QuantumProgram.meas_level = "both", che può essere utilizzato per richiedere che nei risultati del programma quantistico siano presenti sia le misurazioni classificate che quelle con kernel. ( 2973 )
Correzioni di bug
- È stato risolto un bug nel passaggio
FoldRzzAngledel transpiler in cuiRzzi gate il cui angolo coincideva esattamente con il+-piconfine (ad esempio3*pi,-3*pi,7*pi) venivano raggruppati in un circuito che differiva da quello originale di una fase globale pari api. Il passaggio ora ricava la parità di avvolgimento persa2*pidirettamente dall'angolo di avvolgimento, in modo che il circuito ripiegato conservi l'unitarità completa (compresa la fase globale) per tutti gli angoli. ( 2856 ) - Quando si utilizzano backend provenienti da istanze diverse, il servizio utilizzato dai metodi
SamplerV2.run()diEstimatorV2.run(),, e altre primitive.run()garantisce ora che il client API utilizzato per l'invio del lavoro sia quello appartenente al backend, anziché utilizzare sempre il client API attivo. ( 2931 ) - È stato risolto il problema della piegatura degli angoli fuori dai limiti
rzzdurante la transpilazione. Con l'impostazione precedente era presente un bug per cui i passaggi di traduzione eseguiti dopo il passaggio “ FoldRzzAngle ” potevano modificare gli angoli rendendoli negativi o superiori api/2. Il bug viene risolto impostando nel targetangle_boundsdel backend su(0, pi/2)per ilrzzgate, e registrando unrzzwrapper nel passaggio delWrapAnglestranspiler. Questo meccanismo sostituisce l'uso delIBMDynamicFractionalTranslationPluginplugin e dellaFoldRzzAnglefase di transpiler. ( 2960 )
Altre note
- La libreria ora utilizza la versione
2026-04-15dell'API REST di Qiskit Runtime. ( 2845 ) - Il plugin
IBMFractionalTranslationPlugintranspiler, ormai obsoleto, è stato rimosso. ( 2880 ) - La versione predefinita dello schema per Executor è ora
1.1. ( 2911 )
0.47.0 (12 maggio 2026)
Nuove funzioni
-
Sono state aggiunte le classi
ExecutoreQuantumProgram, che consentono di sfruttare appieno le funzionalità offerte dal pacchetto Samplomatic. -
È stata aggiunta la classe
NoiseLearnerV3per rilevare il rumore delle istruzioni che contengono riquadri annotati. -
È stato aggiunto uno script per recuperare la configurazione e le proprietà di un backend reale.
-
È stato aggiunto un nuovo backend fittizio,
FakeKingston. Si tratta di un dispositivo Heron r2 da 156 qubit. ( 2711 ) -
global_searchLe interazioni con i servizi della piattaforma IBM Cloud (che avvengono duranteQiskitRuntimeServicel'istanziazione, con i nomi dei servizi,global_catalogeresource_controller) ora seguono i meccanismi di configurazione dell'SDK di IBM Cloud, consentendo di trasmettere configurazioni personalizzate tramite variabili d'ambiente o file di credenziali. ( 2712 ) -
Aggiunto
draw_chunk_timings()aqiskit_ibm_runtime.visualizationper rappresentare graficamente i tempi di esecuzione di una o più istanze della nuova classe contenitore dei tempi dei chunk,ChunkTiming, su un grafico a barre interattivo. È disponibile anche un metodo semplificatoChunkTiming.draw()per il caso di un unico risultato tramitejob.result().timing.draw(). ( 2727 ) -
-aPartendo dallo script per la creazione di snapshot del backend fittizio introdotto nel 2711, lo script ora genera__init__.pyanche i file efake_<backend_name>.pyper ogni backend e aggiunge un nuovo argomento /--accountper selezionare un account specifico quando si recuperano i dati del backend da diverse regioni cloud (ad esempio, us-east rispetto a eu-de).Utilizzando questo script aggiornato, sono stati aggiunti i seguenti backend fittizi mancanti:
FakeAachen,FakeBerlin,FakeBoston,FakeBrussels,FakeMiami,FakePittsburgh, eFakeStrasbourg. ( 2736 )
Note sull'aggiornamento
- I
RuntimeJobV2.result()metodi eRuntimeJobV2.wait_for_final_state()ora accettano un parametro facoltativopoll_interval, che consente di personalizzare l'intervallo tra le richieste al servizio. Il valore predefinito è ora0.5di secondi per i lavori non in sessione e di0.1secondi per i lavori in sessione. ( 2762 )
Note di deprecazione
-
I pacchetti
extrasdell' Python e sono stati rifattorizzati:commonedocumentationsono obsolete e verranno rimosse nella versionev0.48.performanceè stata introdotta per le dipendenze opzionali non relative allo sviluppo che offrono prestazioni o funzionalità aggiuntive.- Le dipendenze di sviluppo presentano ora una granularità più fine (
style,style_local,test,doc), mentre l'opzionedevextra continua a consentire l'installazione di una suite di sviluppo completa. ( 2707 )
Correzioni di bug
`GlobalSearchV2Gliproxiesargomenti essl_verificationperQiskitRuntimeServicevengono ora trasmessi alle richieste sottostanti di HTTP ai servizi,GlobalCatalogV1, eIAMAuthenticator, consentendo di istanziareQiskitRuntimeServicecorrettamente quando si utilizza un proxy. ( 2592 )- È stata aggiunta la possibilità di specificare
calibration_ideuse_fractional_gatesdurante l'inizializzazione di una sessione da unsession_id. Questo risolve alcuni bug noti, in particolare il fatto che l'istanziazione di unSessionoggetto tramitefrom_idnon preserva né il valore dicalibration_idimpostato durante l'istanziazione iniziale dell'oggetto originaleSession, né il valore diuse_fractional_gatesimpostato durante l'istanziazione iniziale del backend. ( 2652 ) filter``NoiseLearner.run()ora supporta correttamente i generatori,maple espressioni generatrici e altri iteratori a passaggio singolo. In precedenza, questi venivano esauriti dopo il controllo iniziale del tipo, causando l'invio di lavori con zero circuiti. ( 2759 )
0.46.1 (23 marzo 2026)
Correzioni di bug
- È stato risolto un problema per cui nella
setuptools_scmversione precedente era stato~=8.0erroneamente aggiunto a. È stato ripristinato il vincolo di versione a>=6.2.
0.46.0 (23 marzo 2026)
Altre note
- La versione minima richiesta di Qiskit è ora
2.2.0. ( 2689 )
0.45.1 (12 febbraio 2026)
Correzioni di bug
- Durante la creazione degli oggetti backend, .QiskitRuntimeService in precedenza controllava solo
rzzi gate nella base dei gate del backend per decidere se utilizzare la cache o creare un nuovo oggetto backend. Ora .QiskitRuntimeService controllerà sia i gaterzzcherxi gate nei gate di base del backend per decidere se aggiornare la configurazione o recuperarla dalla cache. ( 2524 ) - L'inizializzazione non fallisce più se non è possibile recuperare
QiskitRuntimeServicele informazioni del catalogo di un'istanza (ad esempio, perché l'istanza è stata archiviata). ( 2603 )
0.45.0 (8 gennaio 2026)
Nuove funzioni
qiskit-ibm-runtimeè ora compatibile con Qiskit v2.3.- Il
delete_job()metodo è stato reintrodotto. ( 2541 )
Correzioni di bug
- Correzione di un bug
QiskitRuntimeService.backend()relativo al caso in cui il flaguse_fractional_gates=Trueverifichi la presenza di uno o entrambiRxi gate eRzz, anziché soloRzzdei gate nella base del backend. ( 2520 )
Altre note
- La versione minima richiesta di Qiskit è ora
2.0.0, poiché la1.xserie Qiskit non è più supportata. ( 2543 )
0.44.1 (12 febbraio 2026)
Note di deprecazione
- L'invio di circuiti con valori non vuoti
circuit.calibrationsè deprecato e verrà rimosso nella versioneqiskit-ibm-runtimev0.45. ( 2574 )
Correzioni di bug
- Durante la creazione degli oggetti backend, .QiskitRuntimeService in precedenza controllava solo
rzzi gate nella base dei gate del backend per decidere se utilizzare la cache o creare un nuovo oggetto backend. Ora .QiskitRuntimeService controllerà sia i gaterzzcherxi gate nei gate di base del backend per decidere se aggiornare la configurazione o recuperarla dalla cache. ( 2524 ) - L'inizializzazione non fallisce più se non è possibile recuperare
QiskitRuntimeServicele informazioni del catalogo di un'istanza (ad esempio, perché l'istanza è stata archiviata). ( 2603 )
0.44.0 (16 dicembre 2025)
Note sull'aggiornamento
-
Se viene richiesto un backend che non supporta i gate frazionari impostando il flag
use_fractional_gates=TrueinQiskitRuntimeService.backend(),IBMInputValueErrorverrà generata un'eccezione. ( 2405 ) -
Il resolver di URL è stato aggiornato in modo che entrambi i canali
ibm_cloud``ibm_quantum_platforme generino ora lo stesso punto di ingresso di runtime URL (https://quantum.cloud.ibm.com/api/v[x]). In precedenza, ilibm_cloudcanale generava l'URL URL, ormai fuori uso, e si basava su reindirizzamenti. Questa modifica elimina tale dipendenza e uniforma la generazione dell' URL e su tutti i canali. Non sono previste modifiche visibili agli utenti. ( 2486 ) -
È stato ora imposto un
draw_circuit_schedule_timing()ordine dei canali sull'asse y per, in base all'ordine dei canali nell'argomentoincluded_channelsdi input. ( 2492 ) -
È stato aggiunto un nuovo argomento
merge_common_instructionsdi inputdraw_circuit_schedule_timing()che, se impostato suTrue, unirà le istruzioni dello stesso tipo in base alla continuità temporale.Esempio ( 2494 ):
from qiskit_ibm_runtime.visualization import draw_circuit_schedule_timing job_result: SamplerPubResult = job.result() circuit_schedule: str = job_result[0].metadata["compilation"]["scheduler_timing"]["timing"] fig = draw_circuit_schedule_timing( circuit_schedule=circuit_schedule, merge_common_instructions=True ) fig.show()
Nuove funzioni
-
Quando viene inviato un lavoro, ora verranno visualizzati degli avvisi se l'istanza utilizzata ha raggiunto il limite. ( 2458 )
-
È stato aggiunto un backend “Fake Nighthawk” (
FakeNighthawk) alfake_providermodulo.La sua mappa di accoppiamento e i suoi gate di base corrispondono a quelli di un backend Nighthawk reale, ma le proprietà non sono intese a rappresentare i valori di errore tipici di Nighthawk. È possibile utilizzare questo backend falso, ad esempio, per transpilare e ottimizzare i circuiti in preparazione dei prossimi backend Nighthawk. Per un circuito Ising a reticolo quadrato da 100 qubit con 10 passi di Trotter,
FakeNighthawkha mostrato un miglioramento del 600% nella profondità del circuito rispetto a un backend Heron. ( 2476 ) -
Il
qiskit_ibm_runtime.transpiler.passesmodulo è stato ampliato con un nuovo passaggio del transpiler:ConvertMidCircMeas. Questo passaggio individua le istruzioni non terminaliMeasurepresenti in un circuito e le converte in istruzioni di misurazione a circuito aperto supportate dal dispositivo di destinazione. Il pass è composto da due argomenti:-
target(obbligatorio): Il target di backend che definisce le istruzioni supportate. -
mcm_name(facoltativo): il nome dell'istruzione di misurazione a metà circuito da utilizzare.Il valore predefinito è
measure_2. Il nome deve seguire lo schemameasure_[X](ad esempio,measure_3,measure_reset).
Durante l'inizializzazione, il pass verifica che il target specificato supporti l'istruzione di misurazione a metà circuito indicata su almeno un qubit. In caso contrario, la costruzione fallisce. Una volta eseguito, il comando esegue le seguenti operazioni:
- Funziona su un circuito già cablato.
- Sostituisce solo le istruzioni
Measure`non terminali con l'istruzione di misurazione a metà circuito specificata, a condizione che il destinatario la supporti sul qubit fisico corrispondente.
Non fa quanto segue:
- Non sostituisce le misurazioni effettuate sul terminale.
- Non sostituisce le istruzioni esistenti relative alle misurazioni a metà circuito (ad esempio,
measure_2ameasure_3). - Non converte le misurazioni effettuate a metà circuito in misurazioni ai terminali.
Esempio di utilizzo ( 2317 ):
from qiskit import QuantumCircuit from qiskit.transpiler import PassManager from qiskit.providers.fake_provider import GenericBackendV2 from qiskit_ibm_runtime.circuit import MidCircuitMeasure from qiskit_ibm_runtime.transpiler.passes import ConvertToMidCircuitMeasure from qiskit.transpiler.target import Target # Fake target construction for demo purposes mcm = MidCircuitMeasure() target = GenericBackendV2(num_qubits=2, seed=0).target target.add_instruction(mcm, {(i,): None for i in range(2)}) # Example usage qc = QuantumCircuit(2, 2) qc.measure(0, 0) qc.cx(0,1) qc.measure(1, 1) my_pass = ConvertToMidCircuitMeasure(target) pm = PassManager([my_pass]) new_qc = pm.run(qc) print(new_qc)Output previsto:
┌────────────┐ q_0: ┤0 ├──■───── │ │┌─┴─┐┌─┐ q_1: ┤ Measure_2 ├┤ X ├┤M├ │ │└───┘└╥┘ c_0: ╡0 ╞══════╬═ └────────────┘ ║ c_1: ════════════════════╩═ -
Correzioni di bug
- Correzione del bug di autenticazione IAM quando si utilizza una configurazione proxy specificata in
QiskitRuntimeService. La patch inserisce gliproxiesattributiverifye daQiskitRuntimeServiceinIAMTokenManagerquando si utilizza l'autenticazione cloud (CloudAuth). ( 2344 )
Altre note
- I metodi
check_pending_jobs()``delete_job()deprecati e, insieme al supporto per Python 3.9, sono stati rimossi. ( 2439 ) - Aggiunto
CircuitSchedulecome input opzionale adraw_circuit_schedule_timing(). Ciò consente la pre-elaborazione manuale dei dati relativi alla temporizzazione del circuito al di fuori della sua funzione di disegno. ( 2457 )
0.43.1 (23 ottobre 2025)
Note sull'aggiornamento
- Durante l'inizializzazione
QiskitRuntimeServicecon un account salvato, iwarningmessaggi di log di livello relativi al nome dell'account salvato (o all'account predefinito) sono stati ridotti alinfolivello. ( 2445 )
0.43 (14 ottobre 2025)
Note di deprecazione
-
È stato aggiunto un nuovo
targetargomento all'inizializzatore dopo le fasi di analisi e di riempimento del transpiler:ALAPScheduleAnalysis,PadDelay,PadDynamicalDecoupling,BlockBasePadder. Questa modifica allinea tali fasi all'architettura più ampia del transpiler di Qiskit e sostituisce l'uso dell'argomentodurations.La
DynamicCircuitInstructionDurationsclasse, utilizzata nei cicli di pianificazione personalizzati, è stata dichiarata deprecata a partire dalla versioneqiskit-ibm-runtimev0.43. Questa classe era stata ottimizzata per la pianificazione delle operazioni sui processori Eagle, ma è ormai obsoleta rispetto all'attuale gamma di processori Heron. Questa classe è stata utilizzata per definire l'argomento`durationsnei cicli di pianificazione sopra elencati (ALAPScheduleAnalysis,PadDelay,PadDynamicalDecoupling,BlockBasePadder). Anche l'argomento è deprecato e verrà rimosso in una versione futura. Si invitano gli utenti a passare all'argomentotarget. ( 2403 ) -
La classe
RuntimeOptionsè deprecata. Questa classe era originariamente destinata a essere utilizzata solo con programmi personalizzati e non è più necessaria. (2435 )
Nuove funzioni
-
Il
qiskit_ibm_runtimepacchetto è stato ampliato con due nuovi moduli:circuitecircuit.library. Questi moduli sono progettati per rispecchiare la struttura dei corrispondentiqiskitmoduli SDK, fornendo al contempo implementazioni specifiche del fornitore per gli oggetti circuitali e le istruzioni.La prima aggiunta a questa nuova libreria di circuiti è la classe
MidCircuitMeasure. Questa classe consente di creare istruzioni che seguono la convenzione di denominazionemeasure_<identifier>, che vengono mappate su specifiche istruzioni hardware di misura a metà circuito che corrispondono a tale schema. Il nome predefinito di questa istruzione è"measure_2".Utilizzo di esempio:
from qiskit import QuantumCircuit from qiskit_ibm_runtime.circuit import MidCircuitMeasure measure_2 = MidCircuitMeasure() measure_3 = MidCircuitMeasure("measure_3") qc = QuantumCircuit(1, 1) qc.append(measure_2, [0], [0]) qc.append(measure_3, [0], [0]) qc.measure([0], [0])Output:
┌────────────┐┌────────────┐┌─┐ q: ┤0 ├┤0 ├┤M├ │ Measure_2 ││ Measure_3 │└╥┘ c: ╡0 ╞╡0 ╞═╩═ └────────────┘└────────────┘L'utilità
convert_to_target()è stata aggiornata per supportare un campo aggiuntivo"instruction_signatures"nei file di configurazione del backend (configuration.json). Questo campo è destinato a rappresentare istruzioni non unitarie e non standard segnalate dal backend e deve rispettare il seguente schema:"instruction_signatures" = [ { "name": "measure_2", "num_qubits": 1, "num_clbits": 1, "parameters": [], "return_type": "Bool", "description": "An alternative measurement. This can be used as a mid-circuit measurement in a dynamic circuit. ", }, { "name": "reset_2", "num_qubits": 1, "num_clbits": 1, "parameters": [], "return_type": "Bool", "description": "An alternative reset instruction.", } ]Oltre a questa modifica, la funzione
convert_to_target()accetta ora un argomentocustom_name_mappinged espone i flagadd_delayefilter_faultydell'implementazione originale del nucleo. (2316 ) -
QiskitRuntimeService.backends()eQiskitRuntimeService.backend()è stato introdotto un nuovo parametro,calibration_id. Questa calibrazione personalizzata verrà utilizzata per la creazione del target e anche durante l'esecuzione di operazioni primitive sul backend. ( 2432 ) -
Aggiunta una nuova funzione
visualization.draw_circuit_schedule_timing()per tracciare i dati di temporizzazione della programmazione dei circuiti restituiti nei metadati dei risultati dei lavori. Questa è attualmente una funzione beta e richiede che l'opzione"scheduler_timing"experimental sia impostata suTrue, come mostrato di seguito. Attualmente è disponibile solo per i lavori suSampler.sampler = SamplerV2(backend) sampler.options.experimental = { "execution": { "scheduler_timing": True, }, }I dati di pianificazione del circuito possono essere consultati dai metadati dei risultati del lavoro come segue:
job_result: SamplerPubResult = job.result() circuit_schedule = job_result[0].metadata["compilation"]["scheduler_timing"] circuit_schedule_timing = circuit_schedule["timing"]Questa funzione utilizza la nuova classe
CircuitScheduleper caricare, analizzare, preelaborare e tracciare i dati per il plottaggio utilizzando un'interfaccia supportata da Plotly. (2328 ) -
Sono ora supportati gli endpoint privati virtuali per IBM Quantum Platform. Per saperne di più, consultate la nostra guida sugli endpoint privati virtuali. (2367 )
-
Ora è possibile recuperare i tag di un lavoro senza doverlo effettivamente richiamare con
QiskitRuntimeService.job(). ( 2420 ) -
Il passaggio
ConvertISAToCliffordsupporta ora la cliffordizzazione dei circuiti contenenti porte frazionarie. (2427 )
0.42.0 (15/09/2025)
Correzioni di bug
- Il comportamento del
QiskitRuntimeService.least_busy()metodo era incoerente perché si aspettava una risposta fissa dall'API per il campo “reason”, che nello schema dell'API è indicato come facoltativo. Il problema è stato risolto eliminando la dipendenza da questo campo. ( 2411 )
Note sull'aggiornamento
-
Quando
QiskitRuntimeServiceviene inizializzato senza un'istanza e non è presente alcuna istanza di account salvata, verrà ora visualizzato un avviso che riporta in dettaglio i filtri attuali (tags,region, eplans_preference) e le istanze disponibili. Seplans_preferencenon è impostato, le istanze dei piani gratuiti e di prova hanno la priorità rispetto a quelle a pagamento.Sono stati inoltre aggiunti ulteriori avvisi per rendere più chiara l'istanza attiva corrente:
- Messaggi di avviso per indicare agli utenti se stanno utilizzando un account salvato o se stanno usando credenziali specificate manualmente.
- Quando Qiskit Runtime seleziona automaticamente un'istanza per il backend richiesto, viene visualizzato un avviso con il nome dell'istanza e il tipo di piano.
Ora è possibile effettuare l'inizializzazione
QiskitRuntimeServiceutilizzando solo un token API (chiave). Poiché ilibm_quantumnome del canale è stato rimosso ed entrambi iibm_cloudcanali eibm_quantum_platformpuntano alla stessa API, ilchannelparametro non è più necessario.ibm_quantum_platformè il canale predefinito. ( 2375 ) -
Poiché il supporto per lo streaming dei risultati è stato rimosso in
0.32.0, l'opzione d'ambientecallback, deprecata (0.38.0), e i parametriBaseRuntimeJob,client_paramseuser_callback, sono stati rimossi.Anche la classe
RuntimeJobè stata rimossa. Tutte le primitive restituiscono lavori comeRuntimeJobV2. I suggerimenti sui tipi in tutto il codice sono stati aggiornati per riflettere questa modifica. (2298 ) -
RuntimeJobV2.properties()ora recupererà le proprietà del backend relative al momento in cui il processo ha iniziato a essere eseguito, anziché al momento della sua creazione. ( 2369 ) -
È stata risolta un'incongruenza nella conversione delle unità da
rep_timesinQasmBackendConfigurationper garantire la coerenza tra l'inizializzazione e la serializzazione. Il parametro viene ora correttamente convertito da microsecondi a secondi durante l'inizializzazione e nuovamente in microsecondi quando viene serializzato tramiteto_dict(), in linea con il comportamento di altri parametri temporali:rep_delay_rangeedefault_rep_delay. ( 2386 ) -
D'ora in poi, durante l'inizializzazione del servizio, verrà generato un errore costante se viene fornito un token API non valido a
QiskitRuntimeService.Verrà inoltre sollevato un errore se l'account associato al token specificato non ha accesso all'istanza indicata. Questo è il comportamento precedentemente documentato nelle note di rilascio di
0.40.0. (2408 )
Nuove funzioni
-
Poiché i backend ora supportano l'esecuzione di lavori che contengono sia porte frazionarie che circuiti dinamici, le istruzioni del flusso di controllo non vengono più filtrate quando si utilizza
use_fractional_gates=True. Di conseguenza, esiste un nuovo plugin per gli stati di traduzione,IBMDynamicFractionalTranslationPlugin, per i circuiti con circuiti dinamici e porte frazionarie.IBMFractionalTranslationPluginè deprecato perché non è più necessario. (2366 )
0.41.1 (18 agosto 2025)
Correzioni di bug
-
Sono stati corretti diversi bug per cui la presenza di un'istanza salvata predefinita o il passaggio del nome dell'istanza causavano un
IBMInputValueErrordurante la creazione di unSession/BatchInoltre,
QiskitRuntimeService.least_busy()ora restituisce correttamente il backend meno carico nei casi in cui venga passato ilinstanceparametro e non sia presente un'istanza predefinita. ( 2359 )
0.41.0 (24/07/2025)
Preludio
Il rilascio qiskit-ibm-runtime v0.41.0 si concentra sulla rimozione di IBM Quantum Platform Classic e sul miglioramento dell'esperienza utente per la nuova IBM Quantum Platform. Tra le nuove funzionalità, i miglioramenti e le correzioni di bug minori, i punti salienti della release sono:
- Il canale
ibm_quantume IQP Classic non sono più supportati.QiskitRuntimeService.least_busy()è notevolmente più veloce.QiskitRuntimeService.usage()è stato aggiornato per fornire informazioni relative al limite di utilizzo corrente dell'istanza, al consumo e al tempo rimanente.
Note sull'aggiornamento
- A causa del tramonto di IBM Quantum Platform Classic, il canale
ibm_quantumnon è più supportato daqiskit-ibm-runtime. Gli account e i dati salvati del canaleibm_quantumnon saranno accessibili. Utilizzare invece il canaleibm_quantum_platform. Per maggiori dettagli, consultare la nostra guida alla migrazione. (2289 )
Nuove funzioni
-
È stato aggiunto un nuovo parametro,
tags, all'inizializzatore eQiskitRuntimeService.save_account()alQiskitRuntimeServicemetodo.tagspuò essere utilizzato per filtrare le istanze, in modo che vengano restituite solo quelle con i tag specificati.Inoltre, se non vengono restituite istanze valide quando si usano i filtri
tags,regionoplans_preference, ora viene sollevato un errore all'inizializzazione. Assicurarsi che i nomi ditagseregioninseriti corrispondano esattamente all'istanzatagsoregion(senza distinzione tra maiuscole e minuscole). Perplans_preference, finché viene passato un nome di piano corrispondente, le istanze con il nome di piano corrispondente avranno la priorità. (2277 ) -
Con la migrazione alla nuova IBM Quantum Platform, è stato necessario risolvere alcune incongruenze con IBM Quantum Platform Classic:
QiskitRuntimeService.usage()ora restituisce le informazioni sull'utilizzo dell'istanza di IBM Cloud attualmente attiva.QiskitRuntimeService.delete_job()non è supportato sulla nuova piattaforma, pertanto è stato dichiarato obsoleto.RuntimeJobV2.instance()restituirà ora l'istanza CRN di IBM Cloud.RuntimeJob.queue_usage()non è supportato dalla nuova piattaforma, quindi è stato deprecato. (2296 )
-
Il supporto per l'esecuzione di
qiskit-ibm-runtimecon Python 3.9 è stato deprecato e sarà rimosso in una prossima versione.Inoltre,
qiskit-ibm-runtimesupporta ufficialmente Python 3.13. (2314 ) -
Quando si salva un conto, ora viene eseguito un controllo di convalida per verificare che i parametri
region,plans_preferenceetagssiano validi. (2319 ) -
È disponibile un nuovo metodo che
QiskitRuntimeService.active_instance()restituisce l' IBM Cloud CRN dell'istanza attualmente attiva.Il
QiskitRuntimeService.jobs()metodo è stato aggiornato per accettare correttamente ilinstanceparametro, che può essere utilizzato per filtrare i lavori. ( 2325 ) -
QiskitRuntimeService.usage()è stato aggiornato per includere unusage_remaining_secondscampo. Questo campo include la differenza tra il valore riportatousage_limit_secondsousage_allocation_seconds(a seconda di come è configurata l'istanza) eusage_consumed_seconds. Per saperne di più sui limiti di allocazione delle istanze, clicca qui. ( 2329 ) -
refresh()ha un nuovo parametro,use_fractional_gates, che può essere impostato suTrueper consentire al backend falso di includere porte frazionarie. Si noti che questo metodo funziona solo se si ha accesso al backend reale. (2342 ) -
Il
QiskitRuntimeServiceè stato aggiornato per utilizzare una nuova versione dell'API. Con la nuova versione, ilQiskitRuntimeService.least_busy()metodo è stato aggiornato per sfruttare le funzionalità aggiornateBackendsResponseV2, il che lo rende notevolmente più veloce. ( 2323 ) -
La classe
TwirledSliceSpandispone di un nuovo membrodata_slice_versiondati di tipo intero, con valore predefinito 1. Se impostato su 2, le tuple delle sezioni di dati contengono informazioni relative alle immagini " PUB ", utilizzate perTwirledSliceSpan.mask()definire la struttura dell'array restituito. L'ultimo asse verrà troncato, in modo tale che la sua lunghezza venga ridotta apub_shots. ( 2312 ) -
Aggiunta la serializzazione per
qiskit.quantum_info.PauliLindbladMap. (2297 ) -
Esiste un nuovo metodo
convert_to_rzz_valid_pub(), che può essere utilizzato per trasformare un PUB in un PUB equivalente, compatibile con i vincoli Rzz. Attualmente il metodo non supporta i circuiti dinamici e non preserva la fase globale. (2126 )
Correzioni di bug
- È stato risolto un bug per
BasePrimitivecui le primitive istanziate all'interno di unSessiongestore di contesto oBatchsenza ilmodeparametro recuperavano il backend dal servizio (in base al nome) invece di utilizzare il backend passato a oSessionBatch. Ciò potrebbe causare problemi nel caso in cui ilSessionbackend oBatchfosse stato modificato dagli utenti (ad esempio, rimuovendo un gate), poiché le primitive recupererebbero invece dall'object service l'oggetto backend non modificato. Dopo la correzione, l'oggettoSessionbackend oBatchviene utilizzato direttamente. ( 2282 ) - È stato risolto un problema per
IBMBackendcui le modifiche alle proprietà, come quelle apportate abasis_gates, persistevano anche dopo l'aggiornamento dell'oggetto backend. ( 2283 ) - È stata corretta la serializzazione degli span di esecuzione, per garantire che le esecuzioni delle versioni precedenti di qiskit-ibm-runtime non vadano in crash quando si tenta di decodificare span di esecuzione codificati di recente. Tuttavia, la deserializzazione con le versioni precedenti restituirà ora gli span di esecuzione nel formato di un dizionario, e non sotto forma di oggetto
ExecutionSpans.TwirledSliceSpanV2Nell'ambito di questo lavoro, abbiamo anche rimosso ildata_slice_versioncampo daTwirledSliceSpan; gli span delle sezioni twirled che tengono conto dei pub shot sono ora gestiti da una nuova classe. ( 2347 )
Altre note
- Gli attributi obsoleti
IBMBackendemax_experiments``max_shotssono stati rimossi e ilIBMBackend.max_circuits()metodo ora restituisceNone. Per ulteriori dettagli, consulta la guida sui limiti di lavoro. ( 2235 ) - I metodi
defaults()eFakeBackendV2, ormai obsoletiIBMBackend, sono stati rimossi. Sono state deprecate nella versione v0.38.0. Sono state inoltre rimosse le impostazioni predefinite di Pulse da tutti i backend fittizi. ( 2238 ) - È stato migliorato il messaggio di errore restituito quando
ExecutionSpan.mask()viene chiamata la funzione per un elementoPUBche non è contenuto nell'elementospan. ( 2311 )
0.40.1 (4 giugno 2025)
Correzioni di bug
- È stato risolto un problema per cui, se al momento dell'inizializzazione non era stata salvata né passata alcuna istanza, il servizio non poteva effettuare alcuna chiamata API finché
QiskitRuntimeService.backend()non venisse prima chiamata la funzione oQiskitRuntimeService.backends(). - Corretto un bug per cui se
use_fractional_gatesè impostato ma la configurazione del backend è già nella cache, potrebbe essere restituita una configurazione errata. (2269 )
Altre note
- I messaggi di errore relativi agli angoli del gate
rzzal di fuori dell'intervallo consentito da 0 a durante la convalida del circuito sono stati aggiornati per chiarire che il problema era il valore dell'angolo richiesto nel circuito e non un valore dell'angolo fornito dal backend. (2276 )
0.40.0 (28/05/2025)
Nuove funzioni
-
Sono state apportate le seguenti modifiche per supportare l'imminente migrazione della piattaforma IBM Quantum :
-
È stato introdotto un nuovo tipo di canale,
ibm_quantum_platform, per l'inizializzazione del servizio (QiskitRuntimeService()). Si aggiunge ai canali esistentiibm_quantum(ora deprecato) eibm_cloud. Per impostazione predefinita, quando non viene specificato alcun canale, viene selezionatoibm_quantum_platform. Questo nuovo canale si collega alla nuova API di IBM Quantum Platform ed è destinato a sostituireibm_cloud. Nel frattempo, il canaleibm_cloudverrà reindirizzato alla nuova API, ma se ne sconsiglia l'uso continuato. -
Non è più necessario specificare
instanceun valore per il salvataggio (QiskitRuntimeService.save_account()) o l'inizializzazione (QiskitRuntimeService()) di un account sulla nuova piattaforma (ibm_quantum_platforme, temporaneamente,ibm_cloudsui canali). Se non viene passato alcun oggetto, al momento del recupero di un backend verranno controllati tutti gli oggetti (service.backend("backend_name")). Se invece viene passato un oggetto aQiskitRuntimeService.save_account(), oppure durante l'inizializzazione, esso verrà utilizzato come oggetto predefinito al momento del recupero dei backend. L'istanza passata durante l'inizializzazione avrà la precedenza su quella salvata nell'account. -
Si noti che il token API di IBM Cloud (
token) è necessario per salvare (QiskitRuntimeService.save_account()) o inizializzare (QiskitRuntimeService()) un account sulla nuova piattaforma. Viene considerato come l'identificatore dell'account e consentirà di sbloccare le risorse associate all'account in cui è stato creato il token. Qui è possibile trovare un elenco dei token disponibili per ogni account. È possibile utilizzare un solo account per ogni token API. Se desideri utilizzare più account, devi creare più token API. -
I
QiskitRuntimeService.backend()metodi eQiskitRuntimeService.backends()sono stati aggiornati per accettare uninstancepassato esplicitamente durante il recupero dei backend:service.backend(name="...", instance="..."). -
Sono stati aggiunti nuovi parametri,
region, eplans_preference, all'inizializzatoreQiskitRuntimeServiceeQiskitRuntimeService.save_account()al metodo. Questi possono essere utilizzati per assegnare priorità a determinate istanze sulla nuova piattaforma (eibm_quantum_platform, temporaneamente,ibm_cloudai canali) senza specificare esplicitamente l' CRN. Più nel dettaglio:region: Imposta la preferenza di una regione.us-eastoeu-de.plans_preference: È un elenco di tipi di conto, ordinati per preferenza. Un'istanza del primo tipo nell'elenco sarà prioritaria.
Ad esempio, se
regionviene salvato comeus-east, verranno controllate solo le istanze dius-east. Seplans_preferenceè impostato, le istanze saranno prioritarie nell'ordine indicato, quindi['Open', 'Premium']darà priorità a tutte le istanze di Open Plan, poi a tutte le istanze di Premium Plan e poi alle altre. Si noti che i nomi dei piani inplans_preferencedevono corrispondere esattamente ai nomi delle API (senza distinzione tra maiuscole e minuscole). -
Il
instanceparametro di input diQiskitRuntimeServiceè stato esteso per accettare nuovi tipi di input per iibm_quantum_platformcanali eibm_cloud. Oltre al nome della risorsa " IBM Cloud " ( CRN ), ora è possibile specificare il nome dell'istanza come valore dell'istanza. -
Il
instances()metodo è stato esteso per visualizzare tutte le istanze disponibili associate a un account per iibm_quantum_platformcanali eibm_cloud, oltre al canale già abilitatoibm_quantum.I seguenti frammenti di codice mostrano i nuovi modelli di utilizzo abilitati dalle modifiche descritte in precedenza (2239 ):
# save account service = QiskitRuntimeService.save_account( # No channel needs to be specified, ibm_quantum_platform is the default token=token, region="eu-de", # Optional plans_preference=['Open',...], #Optional set_as_default=True #Optional ) # initialize account service = QiskitRuntimeService() # defaults to ibm_quantum_platform account service.backend(name="...") # picks instance based on saved preferences service.backend(name="...", instance="...") # can also explicity pass in an instance to use # initialize account with instance service = QiskitRuntimeService(instance = "...") # sets instance as default instance service.backend(name="...") # only checks default instance, fails if the backend not in the instance service.backend(name="...", instance="...") # can still explicity pass in a different instance # OR # save account with instance service = QiskitRuntimeService.save_account( # No channel needs to be specified, ibm_quantum_platform is the default token=token, instance="..." # This will be the default instance region="us-east", # Optional plans_preference=['Open',...], #Optional set_as_default=True #Optional ) # initialize account service = QiskitRuntimeService() # defaults to ibm_quantum_platform account service.backend(name="...") # only checks saved default instance from save_account service.backend(name="...", instance="...") # can also explicity pass in an instance which takes precendence # initializing account with instance works the same way service = QiskitRuntimeService(instance = "...") # sets instance as default instance, overrides instance from save_account service.backend(name="...") # only checks default instance, fails if the backend not in the instance service.backend(name="...", instance="...") # can still explicity pass in a different instance
-
-
L'opzione
privateinEnvironmentOptionsè ora supportata sui canaliibm_cloudeibm_quantum_platform(nuova piattaforma IBM Quantum). Quando questa opzione è impostata suTrue, il lavoro verrà restituito senza parametri e i risultati potranno essere recuperati una sola volta.C'è anche una nuova proprietà
private()che restituisce se un lavoro è privato o meno. (2263 )
Correzioni di bug
- La chiamata a
defaults()intarget()è stata rimossa perché i valori predefiniti del backend non sono più utilizzati nella generazione del target. (2261 )
0.39.0 (13 maggio 2025)
Nuove funzioni
- La versione massima supportata dal servizio QPY è ora la 14. (2231 )
- Gli input dei
EstimatorV2pub sono ora soggetti a una nuova fase di convalida che verifica che gli osservabili siano costituiti da operazioni di Pauli contenenti esclusivamente {I, X, Y, Z}. ( 2254 )
Correzioni di bug
- È stato aggiunto un nuovo parametro
create_newalle classiBatcheSession. Questo parametro consente agli utenti di decidere se l'endpoint API della sessione POST debba essere richiamato al momento dell'inizializzazione della classe. L'impostazione predefinita è,Truepoiché è quella utilizzata nella maggior parte dei flussi di lavoro destinati agli utenti. Tuttavia, metodi comeSession.from_id()impostarlo suFalseper evitare di generare una nuova sessione quando quella originale è ancora attiva. Ciò ha risolto i problemi legati alla generazione simultanea di più sessioni durante la chiamata a.from_id(). ( 2195 ) - È stato rimosso il tipo di dato errato
Optionalper ilbackendparametro inSessioneBatch. ( 2222 ) Session.from_id()ora genera un errore se la sessione non dispone di un backend noto. Questo accade solitamente se nella sessione non è stato ancora eseguito alcun processo. ( 2226 )
Altre note
- IBM Cloud gli account utilizzeranno ora un token di accesso per chiamare l'API Qiskit Runtime, invece del token fornito dall'utente. (2102 )
IBMInputValueErrorora eredita daValueError, oltre alla classe madre esistenteIBMError. Alcune funzioni di convalida che prima sollevavano eccezioniValueErrorora sollevano eccezioniIBMInputValueError. (2250 )
0.38.0 (15/04/2025)
Note di deprecazione
RuntimeJobè ora obsoleto e verrà rimosso non prima di tre mesi dalla data di rilascio della presente versione.RuntimeJobè stato sostituito daRuntimeJobV2in tutte le implementazioni primitive, quindi la sua deprecazione non dovrebbe avere alcun impatto sugli utenti. La differenza principale tra le due classi è chestatus()la prima restituisce una stringa anziché l'enum di QiskitJobStatus. ( 2170 )- Poiché i pulse gate non sono più supportati, il
IBMBackendmetododefaults()eFakeBackendV2è stato dichiarato deprecato e verrà rimosso non prima di tre mesi dalla presente versione. Sebbene il metodo esista ancora, questi valori predefiniti degli impulsi non vengono più utilizzati per costruire il target del backend. ( 2186 ) - L'opzione di canale
ibm_quantumè deprecata e verrà abbandonata il 1° luglio. Dopo questa data,ibm_cloud,ibm_quantum_platformelocalsaranno gli unici canali validi. Per informazioni sulla migrazione al nuovo IBM Quantum Platform sul canaleibm_cloud, leggere la guida alla migrazione. (2205 )
Nuove funzioni
- Gli attributi della configurazione dei falsi backend possono ora essere recuperati direttamente con
backend.<attribute_name>. (2202 )
Correzioni di bug
- È stato risolto un bug per cui
DoubleSliceSpan.mask()eTwirledSliceSpan.mask()presentano un errore quando contengono una fetta monodimensionale. (2184 )
Note sull'aggiornamento
- Poiché il supporto per lo streaming dei risultati è stato rimosso in
0.32.0, il codice websocket rimanente è stato rimosso. Come parte di questo processo, l'opzione d'ambientecallbackè deprecata, così come i parametriclient_paramseuser_callbackinBaseRuntimeJob. (2143 )
0.37.0 (13/03/2025)
Note di deprecazione
- Gli attributi
IBMBackendmax_shotsemax_experimentse la proprietàmax_circuitssono stati deprecati. I valori di questi attributi rappresentavano il numero massimo di scatti e circuiti che potevano essere inviati in un lavoro, ma ora non è più così. Per maggiori dettagli, consultare la guida sui limiti di lavoro. (2166 )
Nuove funzioni
-
qiskit-ibm-runtimeè ora compatibile con Qiskit 2.0. Ciò significa che anche le classi e i metodi rimossi in Qiskit 2.0 sono stati rimossi o gestiti di conseguenza. Le modifiche relative apulseechannelsono evidenziate di seguito:ChannelinIBMBackendsono stati rimossi.- La classe di configurazione del backend
PulseBackendConfigurationè stata rimossa, quindi tutti i backend saranno ora restituiti comeQasmBackendConfiguration. PulseDefaults(default del backend) possono ancora essere recuperati, ma non sono più necessari quando si crea un backendTarget.
Per maggiori dettagli, consultare la guida alla migrazione di Pulse. (2116 )
-
Aggiunto un avviso quando una primitiva viene inizializzata al di fuori di un gestore di sessione o di contesto batch. In questo scenario, il lavoro verrà eseguito in modalità lavoro invece che in sessione o batch. (2152 )
Correzioni di bug
- Corretto il supporto per la programmazione personalizzata degli stadi del transpiler con Qiskit 2.x. (2153 )
- ConvertConditionsToIfOps ora funziona correttamente a tutti i livelli di ottimizzazione dei plugin di schedulazione per i circuiti dinamici, quando si utilizza Qiskit 1.x. (2154 )
- Quando si recuperano i lavori con
jobs(), non è possibile distinguere tra le primitive v1 e v2. Poiché le primitive di v1 sono state completamente rimosse più di 6 mesi fa in0.28.0, i lavori restituiti dajobs()verranno ora indirizzati per impostazione predefinita aRuntimeJobV2. ( 2156 )
0.36.1 (14/02/2025)
Correzioni di bug
- È stato risolto un problema per cui la mancata installazione di
qiskit-aercausava un errore di importazione. (2144 )
0.36.0 (14/02/2025)
Note sull'aggiornamento
-
La versione minima richiesta di
qiskitè ora 1.3. Qiskit 1.3 presenta la versione 13 di QPY. La versione minima richiesta di Qiskit è stata aumentata per consentire a Qiskit Runtime di utilizzare l'ultima versione di QPY per la serializzazione dei circuiti nei lavori inviati. (2096 ) -
Le seguenti deprecazioni obsolete sono state rimosse:
- È stato rimosso il supporto per l'opzione del simulatore
noise_modelsui simulatori cloud. Questa opzione funziona ancora in modalità di test locale. - Le proprietà
NoiseLearnerResultgeneratorseratessono state rimosse. È ancora possibile accedervi nella proprietàerror. - La funzione di utilità
get_runtime_api_base_url()è stata rimossa. (2124 )
- È stato rimosso il supporto per l'opzione del simulatore
0.35.0 (4 febbraio 2025)
Note sull'aggiornamento
- Python 3.8 ha raggiunto la fine del ciclo di vita il 7 ottobre 2024. Qiskit SDK ha abbandonato il supporto per 3.8 in
qiskit 1.3. Allo stesso modo,qiskit-ibm-runtimenon supporta più Python 3.8. (2097 ) - Il supporto per
backend.run()è stato rimosso. Fare riferimento alla guida alla migrazione per le istruzioni sulla migrazione del codice esistente che utilizzabackend.run()alla nuova interfaccia V2 primitives. (1962 ) - Le espressioni dei parametri con porte RZZ vengono verificate rispetto ai valori loro assegnati nel sito PUB. Viene sollevato un
IBMInputValueErrorse i valori dei parametri specificati in PUB fanno sì che un'espressione dei parametri valuti un angolo non valido (negativo o maggiore dipi/2). (2093 ) - In caso di interruzione della manutenzione, quando si cerca di inizializzare il sito
QiskitRuntimeServiceviene visualizzato un messaggio di errore appropriato. (2100 )
Nuove funzioni
- I lavori eseguiti in modalità di test locale ora restituiscono un'istanza di una nuova classe,
LocalRuntimeJob. Questa nuova classe eredita dalla classePrimitiveJobdi Qiskit e aggiunge i metodi e le proprietà presenti inBaseRuntimeJob. In questo modo, l'esecuzione di lavori in modalità di test locale sarà più simile all'esecuzione di lavori su un backend reale. (2057 ) - Sono stati aggiunti due nuovi backend falsi,
FakeFezeFakeMarrakesh. Si tratta di dispositivi Heron a 156 qubit. (2112 )
0.34.0 (5 dicembre 2024)
Nuove funzioni
-
Aggiunte le funzioni
draw_zne_evsedraw_zne_extrapolatorsper visualizzare i dati degli esperimenti con ZNE. AggiuntoEstimatorPubResultcon i metodidraw_zne_evsedraw_zne_extrapolators, che invocano le funzioni di visualizzazione corrispondenti. (1820 ) -
Aggiunto il supporto per il modello di rumore e i dati di livello 1 al campionatore locale
L'opzione
SamplerV2simulator.noise_modelviene ora trasmessa aBackendSamplerV2come opzione noise_model all'interno di run_options, a condizione che la primitiva supporti l'opzione run_options (il supporto è stato aggiunto in Qiskit v1.3 ).Allo stesso modo, l'opzione
execution.meas_typeviene ora tradotta nellemeas_levelopzioni emeas_returnall'internorun_optionsdi delBackendSamplerV2SamplerV2, se quest'ultimo supportarun_options. Questa modifica consente il supporto dei dati di livello 1 in modalità di test locale, dove in precedenza erano supportati solo i dati di livello 2 (classificati). ( 1990 ) -
È stata aggiunta una nuova funzione
validate_rzz_pubs. La funzione verifica che i parametrirzzsiano compresi nell'intervallo tra0epi/2, per i parametri numerici (ad esempio,rzz(np.pi/4, 0)) e per i parametri non vincolati (rzz(theta, 0)) con valori da sostituire forniti nel pub. Le espressioni dei parametri (ad esempio,rzz(theta + phi, 0)) non vengono ancora convalidate. (2021 ) -
FoldRzzAngleÈ stato aggiunto un nuovo pluginIBMFractionalTranslationPlugindi traduzione per il transpiler e un passaggio. Questo plugin viene applicato automaticamente ai backend recuperati tramite l'use_fractional_gatesopt-in, e il passaggio di folding viene aggiunto quando il backend di destinazione include ilRZZgate.Il nuovo passaggio modifica il circuito quantistico di ingresso, in modo che tutte le porte
RZZdel circuito abbiano un parametro angolare compreso tra [0, pi/2] che è supportato dai processori quantistici IBM. (2043 )
Note sull'aggiornamento
-
Le deprecazioni della versione
0.26.0sono state rimosse.- Il passaggio di un backend come stringa in
Session,Batch,SamplereEstimatornon è più valido. Utilizzare invece l'oggetto backend effettivo. - In precedenza, passando un backend come modalità in
SamplerV2oEstimatorV2, i lavori venivano eseguiti in modalità lavoro, anche se era aperto un gestore di contesto di sessione. Questi lavori verranno eseguiti all'interno della sessione aperta. Inoltre, se viene passato come modalità un backend diverso da quello della sessione, verrà sollevato un errore. Servicenon è più un parametro valido inSessioneBatch. (2027 )
- Il passaggio di un backend come stringa in
Correzioni di bug
- È stato risolto un problema per cui
FakeBackendV2.refresh()non aggiornava sempre le proprietà, le impostazioni predefinite e la configurazione del backend. (2020 ) CouplingMapè stato aggiunto aRuntimeEncoderin modo che ora possa essere passato al programmaNoiseLearner. ( 2026 )- Il comportamento dell'argomento
use_fractional_gatesdiQiskitRuntimeService.backend()è stato modificato. Quando l'opzione è impostata suFalse, ora filtra tutti i riferimenti ai gate frazionari dai dati di configurazione e dalle proprietà dell'API. Allo stesso modo, quando l'opzione è impostata suTrue, tutte le istruzioni relative ai circuiti dinamici vengono filtrate dai dati di configurazione e dalle proprietà. In precedenza, questa opzione influiva solo sulla creazione del target del backend, il che significava che le istruzioni contenute nel target non erano coerenti con quelle presenti nei dati di configurazione e nelle proprietà. In linea di massima, questa modifica dovrebbe passare inosservata agli utenti, ma se è presente del codice che fa affidamento sui dati di configurazione e sulle proprietà contenenti tutte le istruzioni, sarà necessario aggiornarlo (si noti che impostandouse_fractional_gatessuNoneverranno caricate tutte le istruzioni senza alcun filtro). ( 2031 ) - Le configurazioni di backend non valide o inesistenti sul server non impediscono più il recupero di tutti i backend con
service.backends(). (2048 ) - Appuntare la versione della dipendenza di
pydantica<2.10per evitare che una regressione interrompa il processo di compilazione. (2049 )
Altre note
-
I file
requirements.txtesetup.pysono stati rimossi in favore di un nuovo approccio alla gestione delle dipendenze che utilizzapyproject. Questa transizione semplifica il flusso di lavoro dello sviluppo. Le dipendenze sono ora gestite direttamente attraverso il file pyproject.toml.- Usare
pip install -e .per installare le dipendenze di qiskit-ibm-runtime. - Usare
pip install -e ".[dev]"per installare le dipendenze di sviluppo. - Usare
pip install -e ".[visualization]"per installare le dipendenze della visualizzazione. (2053 )
- Usare
0.33.2 (11 novembre 2024)
Correzioni di bug
- È stato risolto un problema per cui la convalida RZZ non gestiva correttamente le espressioni dei parametri. (2035 )
0.33.1 (8 novembre 2024)
Altre note
- Aggiunto un alias privato a
decode_backend_configuration(). (2028 )
0.33.0 (7 novembre 2024)
Nuove funzioni
- Aggiunta
draw_layer_errors_swarm()la funzione che disegna un grafico a sciame di uno o piùLayerErroroggetti. È stato inoltre aggiunto il metododraw_swarm()di convenienza per richiamare la funzione di disegno su una specifica istanza. ( 1988 ) - Aggiunto
TwirledSliceSpan, unExecutionSpanda utilizzare quando nel Sampler è abilitata la funzione "twirling". In particolare, tiene traccia di un asse di forma aggiuntivo corrispondente alle randomizzazioni di rotazione, nonché del fatto che tale asse si trovi all’inizio della tupla di forma o immediatamente prima dell’asse degli scatti. ( 2011 )
Note sull'aggiornamento
- I restanti backend falsi di V1 -
FakeMelbourne,FakePoughkeepsie,FakeTenerife,FakeTokyoeFakeRueschlikonsono stati rimossi. (2012 )
Correzioni di bug
- È stata corretta la posizione del testo in primo piano nella funzione
draw_execution_spans(). Prima di questa correzione, venivano disegnati sui marcatori sbagliati. (2014 )
0.32.0 (30 ottobre 2024)
Nuove funzioni
-
È stata aggiunta
draw_execution_spans()una funzione per la creazione di un grafico Plotly che visualizza uno o piùExecutionSpansoggetti. È stato inoltre aggiunto il metododraw()di convenienza per richiamare la funzione di disegno su una specifica istanza. ( 1923 )from qiskit_ibm_runtime.visualization import draw_execution_spans # use the drawing function on spans from sampler job data spans1 = sampler_job1.result().metadata["execution"]["execution_spans"] spans2 = sampler_job2.result().metadata["execution"]["execution_spans"] draw_execution_spans(spans1, spans2) # convenience to plot just spans1 spans1.draw() -
È stato aggiunto un nuovo metodo,
backend.refresh(), che aggiorna il target attuale del backend con gli ultimi aggiornamenti del server. (1955 ) -
Aggiunto
DoubleSliceSpanunExecutionSpanper l'elaborazione in batch con due sezioni. ( 1982 ) -
Ciascuno tra
SamplerV2,EstimatorV2, enoise_learner.NoiseLearnerdispone ora di unbackend()metodo che restituisce il backend con cui è configurata la classe. ( 1995 )
Note sull'aggiornamento
-
Le deprecazioni della versione
0.25.0sono state rimosse.optimization_levelnon è più un'opzione valida perEstimatorV2.- I metodi di lavoro
interim_results()estream_results()sono stati eliminati. (1965 )
-
Il parametro
channel_strategyinQiskitRuntimeServiceè stato rimosso. Per continuare a utilizzare Q-CTRL nel vostro flusso di lavoro, esplorate le seguenti opzioni:- Se l'organizzazione dispone di un'istanza esistente di IBM Quantum Premium Plan: migrare alla funzione Q-CTRL Performance Management, presente nel catalogo delle funzioni Qiskit.
- Per continuare a utilizzare Qiskit Runtime con IBM Cloud : esegui la migrazione a Q-CTRL Fire Opal, lo stesso prodotto di gestione delle prestazioni accessibile direttamente tramite Q-CTRL. È possibile collegare la chiave API di IBM Cloud e il CRN di Qiskit Runtime a Fire Opal. ( 1966 )
0.31.0 (15 ottobre 2024)
Nuove funzioni
- Aggiunto Noisy Estimator Analyzer Tool (NEAT), una classe che aiuta a capire le prestazioni previste dei lavori di Estimator. (1950 )
- Aggiornato il controllo ISA per verificare che l'angolo di
rzzsia compreso tra[0, pi/2]. (1953 )
Note sull'aggiornamento
- I backend falsi di V1 sono stati rimossi. (1946 )
Correzioni di bug
- È stato risolto un problema con la convalida ISA in cui una modifica relativa alla connettività all'interno delle operazioni di controllo non veniva applicata correttamente. (1954 )
0.30.0 (23/09/2024)
Note di deprecazione
-
La funzione di utilità
get_runtime_api_base_urlè stata deprecata. Utilizzare invecedefault_runtime_url_resolver. (1914 ) -
Il parametro
channel_strategyè stato deprecato. La strategia Q-CTRL Performance Management verrà rimossa il 18 ottobre 2024. Per continuare a utilizzare Q-CTRL nel vostro flusso di lavoro, esplorate le seguenti opzioni:- Se l'organizzazione dispone di un'istanza esistente di IBM Quantum Premium Plan: migrare alla funzione Q-CTRL Performance Management, presente nel catalogo delle funzioni Qiskit.
- Per continuare a utilizzare Qiskit Runtime con IBM Cloud : esegui la migrazione a Q-CTRL Fire Opal, lo stesso prodotto di gestione delle prestazioni accessibile direttamente tramite Q-CTRL. È possibile collegare la chiave API di IBM Cloud e il CRN di Qiskit Runtime a Fire Opal. ( 1931 )
-
In una versione futura,
RuntimeJob.status()sarà restituito come stringa invece che come istanza diJobStatus. (1933)
Nuove funzioni
-
Sono stati aggiunti i nuovi metodi
Session.usage(),Batch.usage()eJob.usage()che restituiscono informazioni sull'uso dei lavori e delle sessioni. Per maggiori informazioni, cliccare qui. (1827 ) -
Aggiunto passaggio di transpilazione
ConvertISAToCliffordper convertire le porte di un circuito in porte Clifford. (1887 ) -
È stato aggiunto
url_resolverun parametro facoltativo alQiskitRuntimeServicecostruttore per consentire la generazione personalizzata dell'API Qiskit Runtime URL in base ai valori fornitiurlper,instanceeprivate_endpoint. Se non specificato, verrà utilizzato il resolver predefinito.# Define a custom resolver. In this case returns the concatenation of the provided `url` and the `instance` def custom_url_resolver(url, instance, *args, **kwargs): return f"{url}/{instance}" service = QiskitRuntimeService(channel="ibm_quantum", instance="ibm-q/open/main", url="https://baseurl.org" url_resolver=custom_url_resolver) # resulting resolved url will be: `https://baseurl.org/ibm-q/open/main` -
Aggiunta la funzione di utilità
default_runtime_url_resolver. (1914 ) -
Il flag
use_fractional_gatesperQiskitRuntimeService.backend()eQiskitRuntimeService.backends()può ora essereNone. Quando è impostato suNone, non viene effettuato alcun filtraggio delle istruzioni e il target backend restituito può contenere sia porte frazionarie che operazioni di flusso di controllo. (1938 )
Note sull'aggiornamento
-
Le deprecazioni della versione
0.24.0sono state rimosse. Sono state apportate le seguenti modifiche.- Gli argomenti backend e session per Sampler e Estimator sono stati rimossi e sostituiti con "mode"
- La proprietà primitiva
Sessionè stata sostituita damode - La specificazione di opzioni senza la struttura completa del dizionario non è più supportata
Job.program_id()è stato sostituito conJob.primitive_id()Service.run()eSession.run()sono stati sostituiti da un metodo privato,_run()- In
Service.backend(), "nome" è ora un parametro obbligatorio Service.get_backend()è stato rimosso e sostituito conbackend()(1907 )
Correzioni di bug
- Corretto un errore per cui le primitive non potevano essere eseguite nel contesto della sessione con porte frazionarie. (1922)
0.29.1 (17/09/2024)
Nuove funzioni
- Aggiunta della logica per codificare e decodificare
NoiseLearnerResult. (1908 )
0.29.0 (4 settembre 2024)
Note di deprecazione
- L'opzione del simulatore
noise_modelè ora deprecata per i lavori eseguiti su dispositivi reali.noise_modelsarà ancora un'opzione accettabile quando si utilizza la modalità di test locale. (1892 )
Nuove funzioni
- Abbiamo aggiunto nuove classi,
ExecutionSpaneExecutionSpanSet. Queste classi vengono utilizzate nei metadati dei risultati primitivi per fornire informazioni sugli orari di inizio e di fine dei processi batch. ( 1833 ) - Aggiunta una nuova opzione
privatesottoEnvironmentOptions. (1888 ) - Aggiunta l'opzione
fallbackagli estrapolatori ZNE. (1902 )
Correzioni di bug
- Portato il metodo
Noise_model.from_dict()daqiskit-aerperché è stato rimosso in0.15.0. (1890 ) - Ripristina una modifica precedente a
backend.target, in cui la destinazione non veniva più memorizzata nella cache. (1891 ) - È stato risolto un problema per cui
Session.from_id()creava una nuova sessione vuota. (1896 )
0.28.0 (15 agosto 2024)
Nuove funzioni
ResilienceOptionsV2ha un nuovo campolayer_noise_model. Quando questo campo è impostato, tutte le strategie di mitigazione che richiedono dati sul rumore saltano la fase di apprendimento del rumore e raccolgono invece le informazioni necessarie dalayer_noise_model. (1858 )
Note sull'aggiornamento
- Le primitive " V1 " e
SamplerV1EstimatorV1sono state completamente rimosse. Consulta l’ Introduzione alle primitive per scoprire come utilizzare le primitive di “ V2 ”. ( 1857 ) - Il parametro
serviceè ora richiesto inSession.from_id(). (1868 )
0.27.1 (12 agosto 2024)
Nuove funzioni
- Aggiunta la logica per codificare e decodificare
PauliLindbladErroreLayerError. (1853 )
0.27.0 (8 agosto 2024)
Nuove funzioni
- Aggiunte le classi
PauliLindbladErroreLayerErrorper rappresentare i processi di rumore dei livelli. (1844 )
Correzioni di bug
- È stato risolto un problema relativo all'utilizzo del simulatore aer e della modalità di servizio locale con le sessioni. (1838 )
0.26.0 (31/07/2024)
Note di deprecazione
- Il passaggio di un backend come stringa in
Session,Batch,EstimatorV2eSamplerV2è stato deprecato. Utilizzare invece l'oggetto backend effettivo. (1804 ) - Passando un backend come modalità in
SamplerV2eEstimatorV2attualmente si esegue un lavoro in modalità lavoro anche se all'interno di un gestore di contestoSessionoBatch. Questo comportamento è deprecato e in una versione futura la Sessione/Batch avrà la precedenza. (1816 ) - Il passaggio di
serviceinSession,Batchè stato deprecato. Il parametroservicenon è più necessario perché il servizio può essere estratto dal backend. (1826 ) - Poiché i moduli backend di
qiskit.providers.models, compresiBackendPropertieseBackendConfiguration, sono deprecati in Qiskit 1.2, sono stati copiati inqiskit-ibm-runtime. Assicuratevi di aggiornare alla versione più recente,0.26.0, per utilizzare queste classi. (1803 )
Nuove funzioni
-
I metodi
properties,defaults,configurationecheck_faultysono stati aggiunti aFakeBackendV2. (1765 ) -
Se i lavori vengono eseguiti in una sessione creata con
QiskitRuntimeService.Session.from_id()e la sessione è già chiusa, i lavori vengono rifiutati immediatamente. (1780 ) -
I parametri di input per i lavori non saranno più memorizzati nella cache. Questi parametri possono includere circuiti di grandi dimensioni e non devono essere mantenuti automaticamente in memoria. (1783 )
-
QiskitRuntimeLocalServiceè stato creato per supportare una modalità di test locale. Per evitare di dover inizializzare una classe separata, è stato aggiunto "local" come canaleQiskitRuntimeServicevalido.service = QiskitRuntimeService(channel="local")restituirà un'istanza di
QiskitRuntimeLocalService. (1793 ) -
Quando si eseguono lavori sul piano aperto, ora viene visualizzato un avviso se è stato raggiunto il limite del numero massimo di lavori in attesa. Il servizio cercherà anche di attendere che i lavori in sospeso più vecchi finiscano di funzionare prima di inviare un nuovo lavoro. (1794 )
-
Aggiunti
NoiseLearnere le funzionalità correlate, comeNoiseLearnerOptionseNoiseLearnerResults. (1805 )
Correzioni di bug
- Ogni circuito viene controllato per verificarne la conformità all'ISA. Nell'ambito di questo controllo, se vengono rilevate istruzioni non supportate dal backend, viene generato un errore. In precedenza, un bug causava il salto di alcune istruzioni (quelle che risiedono all'interno dei corpi delle operazioni del flusso di controllo). Abbiamo risolto il bug in questa versione. (1784 )
- È stato risolto un problema per cui la chiamata a
IBMBackend.target_history()memorizzava nella cache l'obiettivo del backend e poi la chiamata aIBMBackend.target()restituiva erroneamente l'obiettivo memorizzato nella cache. (1791 ) - È stata rimossa la convalida delle opzioni per verificare se
zne_mitigationopec_mitigationsono impostate suTruequando si utilizzano altre opzioni correlate. (1792 ) - È stato risolto un problema per cui gli utenti non potevano recuperare i risultati dei lavori se nel loro ambiente era installata la libreria python
simplejson. (1800 )
0.25.0 (2024-07-02)
Note di deprecazione
- L'opzione
optimization_levelinEstimatorV2è deprecata. È invece possibile eseguire l'ottimizzazione dei circuiti utilizzando il transpiler Qiskit o il servizio transpiler Qiskit. (1748 ) qiskit_ibm_runtime.RuntimeJobV2.interim_results(),qiskit_ibm_runtime.RuntimeJobV2.stream_results(),qiskit_ibm_runtime.RuntimeJob.interim_results()eqiskit_ibm_runtime.RuntimeJob.stream_results()sono ora tutti deprecati. (1776 )
Nuove funzioni
- Aggiunti i metodi
backend,backendseleast_busyaQiskitRuntimeLocalService. (1764 ) - Aggiunta una proprietà
instanceaBaseRuntimeJobche restituisce l'istanza in cui è stato eseguito il lavoro. (1771 ) default_shotssono ora un'opzione supportata quando si usaEstimatorV2in modalità di test locale. (1773 )
0.24.1 (18/06/2024)
Correzioni di bug
- Disconoscimento delle porte frazionali per impostazione predefinita, in modo che il target del backend non escluda il flusso di controllo. (1755 )
0.24.0 (10 giugno 2024)
Note di deprecazione
-
namesarà ora un parametro obbligatorio in backend().backend()non restituirà più il primo backend tra tutti i backend senamenon viene fornito. (1147 ) -
Dopo la rimozione dei programmi personalizzati, i seguenti metodi sono stati deprecati e rinominati.
qiskit_ibm_runtime.QiskitRuntimeService.run()è deprecato e sarà sostituito da un metodo privatoqiskit_ibm_runtime.QiskitRuntimeService._run().qiskit_ibm_runtime.Session.run()è deprecato e sarà sostituito da un metodo privatoqiskit_ibm_runtime.Session._run().qiskit_ibm_runtime.RuntimeJob.program_id()è deprecato e sarà sostituito daqiskit_ibm_runtime.RuntimeJob.primitive_id(). (1238 ) -
backendL'argomento in Sampler e Estimator è stato deprecato. Si prega di utilizzaremodeinvece.sessionAnche l'argomento in Sampler e Estimator è stato deprecato. Si prega di utilizzaremodeinvece. ( 1556 ) -
qiskit_ibm_runtime.QiskitRuntimeService.get_backend()è deprecato. Si prega diqiskit_ibm_runtime.QiskitRuntimeService.backend()utilizzare invece questo.FakeBackendAnche i backend fittizi " V1 ", insieme aFakeProvider, sono stati dichiarati obsoleti a favore dei backend fittizi " V2 " eFakeProviderForBackendV2. ( 1689 ) -
La specificazione di opzioni senza la struttura completa del dizionario è deprecata. Invece, si deve passare un dizionario completamente strutturato. Ad esempio, utilizzare
{'environment': {'log_level': 'INFO'}}invece di{'log_level': 'INFO'}. (1731 )
Nuove funzioni
-
In relazione alle modalità di esecuzione, Sampler e Estimator includono ora un argomento
mode. Il parametromodepuò essere Backend, Sessione, Batch o Nessuno. Di conseguenza, il nome backend è stato deprecato e non sarà più supportato come modalità di esecuzione valida. (1556 ) -
È stata aggiunta l'opzione ZneOptions.amplifier, che può essere una delle seguenti stringhe:
"gate_folding"(predefinito) utilizza il gate folding a 2 qubit per amplificare il rumore. Se il fattore di rumore richiede l'amplificazione solo di un sottoinsieme di porte, queste vengono scelte in modo casuale."gate_folding_front"utilizza il gate folding a 2 qubit per amplificare il rumore. Se il fattore di rumore richiede l'amplificazione solo di un sottoinsieme di porte, queste vengono selezionate dal fronte del circuito DAG topologicamente ordinato."gate_folding_back"utilizza il gate folding a 2 qubit per amplificare il rumore. Se il fattore di rumore richiede l'amplificazione solo di un sottoinsieme di porte, queste porte vengono selezionate dal retro del circuito DAG topologicamente ordinato. (1679 )
-
Quando si salva un account, c'è un nuovo parametro,
private_endpointche, se impostato suTrue, consente agli utenti di connettersi a un'API privata IBM Cloud. Questo parametro può essere utilizzato anche quando il servizio viene inizializzato, ad esempio:QiskitRuntimeService(private_endpoint = True). (1699 ) -
È stata aggiunta una nuova funzionalità opzionale a supporto dei gate frazionari a
IBMBackend. IBM Attualmente i backend supportano esclusivamente circuiti dinamici e porte frazionarie, e queste due funzionalità non possono essere utilizzate nello stesso lavoro primitivo. Inoltre, alcuni protocolli di mitigazione degli errori utilizzabili con la primitiva di stima, come PEC o PEA, potrebbero non supportare il "gate twirling" con i gate frazionari. Poiché il modello Qiskit Target non tiene conto di tale vincolo, abbiamo adottato l’approccio “opt-in”, in base al quale il target del backend include solo gate frazionari (istruzioni di flusso di controllo) quando il backend è (non è) attivato. Questa funzionalità viene gestita quando si recupera il backend di destinazione dal fileQiskitRuntimeService.from qiskit_ibm_runtime import QiskitRuntimeService backend = QiskitRuntimeService(channel="ibm_quantum").backends( "name_of_your_backend", use_fractional_gates=True, )[0]Quando la funzione frazionaria è abilitata, i circuiti transpiled possono avere una profondità inferiore rispetto alle porte a base IBM convenzionali, ad esempio [sx, rz, ecr.]
Quando si utilizzano istruzioni sul flusso di controllo, ad esempio
if_else, nel circuito, è necessario disabilitare la funzione di porta frazionaria per ottenere circuiti ISA eseguibili. La scelta del set di istruzioni è ora responsabilità degli utenti.Si noti che questo schema può essere modificato o rimosso senza deprecazione quando il backend IBM sarà aggiornato in futuro. (1715 )
-
Ora è possibile utilizzare l'opzione sperimentale in
qiskit_ibm_runtime.options.EstimatorOptionsper abilitare il metodo di mitigazione degli errori denominato "Probabilistic Error Amplification" (PEA) per i propri processi di stima. ( 1728 ) -
La versione di Qiskit
1.1è ora supportata e richiesta. (1700 )
Note sull'aggiornamento
QiskitRuntimeService.backends()ora restituisce sempre una nuovaIBMBackendistanza, anche quando viene utilizzata la stessa query. Le proprietà del backend e i dati predefiniti vengono recuperati dal server per ogni istanza al primo accesso, mentre i dati di configurazione vengono memorizzati nella cache interna dell'istanza del servizio. ( 1732 )
Correzioni di bug
- È stato risolto un problema per cui il recupero dei lavori con job() e jobs() restituiva solo istanze di
RuntimeJob, anche se il lavoro era stato eseguito con una primitiva V2. Ora, i lavori primitivi di V2 verranno restituiti correttamente come istanze diRuntimeJobV2. (1471 ) - Per evitare interruzioni di rete durante i processi di lavoro più lunghi, gli errori websocket non verranno più segnalati. (1518 )
- È stata corretta la combinazione delle
insert_multiple_cyclesopzioni ecoupling_mapinPadDynamicalDecoupling. Questa combinazione consente di selezionare un disaccoppiamento dinamico sfalsato con più cicli di sequenza in ciascun ritardo che superi la soglia impostata dasequence_min_length_ratios. ( 1630 ) - È stato risolto un problema di serializzazione a causa del quale la decodifica dei metadati del lavoro risultava in un errore. (1682 )
- Corretta la docstring del twirling delle misure che indicava erroneamente che è abilitato di default per Sampler. (1722 )
- Fissa le sotto-opzioni sperimentali annidate che sovrascrivono le sotto-opzioni non sperimentali. (1731 )
- Il metodo di backend utils
convert_to_targetè stato sostituito con il metodo convert_to_target di Qiskit. Questo risolve alcuni problemi relativi alla generazione dei target e ai dati di calibrazione. (1600 )
0.23.0 (15/04/2024)
Note di deprecazione
- backend.run () è stato deprecato. Utilizzare invece le primitive. Per maggiori dettagli, consultare la guida alla migrazione. (1561 )
- In una versione futura, il parametro
servicein from_id() sarà richiesto. (1311 )
Nuove funzioni
- La stampa di
OptionseOptionsV2sarà ora formattata come una tabella. (1490 ) - Aggiungi
block_ordering_callablel'argomento aBlockBasePadder,PadDynamicalDecoupling,PadDelay, eBaseDynamicCircuitAnalysis. Ciò consente all'utente di costruire blocchi utilizzando un algoritmo a propria scelta. Non vengono effettuate ipotesi né verifiche sulla validità dell'output generato dalblock_ordering_callable. Alla base di questa argomentazione c'è il fatto che, per alcune famiglie di circuiti, la funzioneblock_order_op_nodesesistente può risultare molto lenta. ( 1531 ) - Le primitive Sampler e Estimator V2 sono state migliorate per incorporare procedure di validazione personalizzate quando la proprietà channel_strategy è impostata come "q-ctrl" Questa logica di convalida personalizzata corregge efficacemente le opzioni di immissione errate e protegge gli utenti dalla disattivazione involontaria dei miglioramenti delle prestazioni di Q-CTRL. (1550 )
SamplerV2ora supporta la rotazione. L'operazione di rotazione verrà applicata solo ai registri di misura non coinvolti in una logica condizionale. ( 1557 )- I dettagli della sessione() ora includono un nuovo campo,
usage_time. L'utilizzo è definito come il tempo in cui un sistema quantistico è impegnato a completare un lavoro. (1567 )
Correzioni di bug
RuntimeJobV2non genererà più un errore quando l'API restituisce uno stato sconosciuto. Verrà invece restituito direttamente lo stato proveniente dall'API. ( 1476 )- È stato risolto un problema per cui le intestazioni personalizzate non venivano inviate nella richiesta
/jobs. (1508 ) - Corretto un bug con la codifica/decodifica di
ParameterExpression. (1521 ) - È stato risolto un problema per cui il metodo in_final_state() in
RuntimeJobV2non aggiornava lo stato quando veniva chiamato. ( 1547 )
0.22.0 (21 marzo 2024)
Note sull'aggiornamento
- Modifica
skip_reset_qubitsil flag opzionale del costruttore perPadDynamicalDecoupling.FalseIn tal caso, il disaccoppiamento dinamico viene applicato ai qubit indipendentemente dal loro stato, anche in presenza di ritardi presenti all’inizio di un circuito. Questa opzione ora riproduce il comportamento di Qiskit. ( 1409 )
Nuove funzioni
- È stata aggiunta una nuova modalità di test locale. Consente di convalidare i quantum proram prima di inviarli a un sistema fisico. La modalità di test locale viene attivata se, durante l'istanziazione di una primitiva o di una sessione, viene utilizzato uno dei falsi backend di
qiskit_ibm_runtime.fake_providero un'istanza di Qiskit Aer backend. (1495 )
Correzioni di bug
- Correzione di un bug che faceva sì che l'impostazione di
resilience_level=0inEstimatorV2venisse ignorata (e venisse invece usato il valore predefinito). (1541 )
0.21.2 (18 marzo 2024)
Correzioni di bug
- Corretto un bug per cui
RuntimeDecoderpoteva importare classi arbitrarie. (1527 )
0.21.1
Correzioni di bug
- È stato risolto un problema che impediva l'importazione di
SamplerV1eEstimatorV1a causa di un problema nella definizione degli alias.
0.21.0
Note sull'aggiornamento
- I circuiti che non corrispondono alla definizione hardware di destinazione non sono più supportati dalle primitive di Qiskit Runtime, a meno che
channel_strategy="q-ctrl"non venga utilizzato. Consulta la documentazione sulla transpilazione ( transpile ) per le istruzioni su come trasformare i circuiti e gli esempi di primitive ( run/primitives-examples ) per vedere come ciò si combina con le trasformazioni degli operatori.
Note di deprecazione
-
In una versione futura,
backendsarà un parametro obbligatorio perqiskit_ibm_runtime.Samplereqiskit_ibm_runtime.Estimatorsesessionnon è specificato, anche se si utilizza il canaleibm_cloud.Sarà anche un parametro richiesto per
qiskit_ibm_runtime.Sessioneqiskit_ibm_runtime.Batch.
Correzioni di bug
- È stato risolto un problema con
IBMBackend.targetche escludeva erroneamente le operazioni di flusso di controllo supportate (IfElseOp,WhileLoop, ecc.) se un determinato backend li supporta. - È stato risolto un problema per cui il recupero di un backend falso tramite
FakeProviderForBackendV2.backend()provocava un errore di tipo. - Corregge il controllo dei circuiti ISA per consentire le porte a impulsi e i circuiti che non hanno un layout.
0.20.0
Nuove funzioni
-
Aggiungere l'ingresso opzionale
dd_barrieral PadDynamicalDecoupling per identificare le porzioni del circuito a cui applicare selettivamente il disaccoppiamento dinamico (dd). Se questa stringa è contenuta nell'etichetta di una barriera del circuito, dd viene applicata ai ritardi che terminano con essa (sugli stessi qubit); altrimenti, non viene applicata. -
Python 3.12 è ora supportato.
-
Le sessioni saranno ora avviate con un nuovo endpoint
/sessionsche consente diverse modalità di esecuzione. La modalità batch è ora supportata daBatch, mentre Sessione funzionerà come prima. Per ulteriori informazioni, consultare la sezione " Run/Sessions".Si noti che
SessioneBatchcreati daqiskit-ibm-runtimeprima di questa release non saranno più supportati dopo il 31 marzo 2024. Aggiornate la versione diqiskit-ibm-runtimeil prima possibile prima di questa data.Si noti inoltre che l'uso dei simulatori con le sessioni non è più supportato. Gli utenti possono comunque avviare le sessioni con i simulatori senza alcun problema, ma non verrà effettivamente creata una sessione. Non ci sarà un ID di sessione.
-
Le sessioni avviate con qiskit_ibm_runtime.IBMBackend.open_session () utilizzeranno il nuovo
/sessionspunto finale.La funzionalità delle sessioni non cambierà, ma si noti che le sessioni di
backend.run()precedenti a questa release non saranno più supportate dopo il 31 marzo 2024. Aggiornate la versione diqiskit-ibm-runtimeil prima possibile prima di questa data.
Note di deprecazione
- I circuiti che non corrispondono alla definizione dell'hardware di destinazione non saranno più supportati dopo il 1° marzo 2024. Consulta la documentazione sulla transpilazione ( transpile ) per le istruzioni su come trasformare i circuiti e gli esempi di primitive ( run/primitives-examples ) per vedere come ciò si combina con le trasformazioni degli operatori.
Correzioni di bug
- Fissare l'assegnazione delle durate delle istruzioni quando si schedulano circuiti con flusso di controllo. Prima di questa correzione, gli indici delle istruzioni sui blocchi interni non erano mappati sugli indici fisici del blocco esterno.
Altre note
- L'input delle durate di
InstructionDurationsè ora richiesto anche per il costruttore diPadDelay.
0.19.1
Note sull'aggiornamento
- Estendere
DynamicCircuitInstructions.from_backend()per estrarre e applicare le durate da entrambi gli oggettiBackendV1eBackendV2. Aggiungere ancheDynamicCircuitInstructions.from_target()per utilizzare un oggettoTarget.
Correzioni di bug
- Correggere il patching di
DynamicCircuitInstructionsper le istruzioni con durata diversa dadt. - È stato risolto un problema con la funzione
qpy.dump(): quando il flaguse_symengineera impostato su un oggetto vero che valutavaTruema non era in realtà il booleanoTrue, il payload QPY generato risultava corrotto.
0.19.0
Note sull'aggiornamento
- qiskit-ibm-provider è in attesa di essere deprecato e quindi non sarà più una dipendenza per qiskit-ibm-runtime.
- qiskit-ibm-runtime è ora compatibile con le versioni di Qiskit >= 0.45, compreso 1.0.0.
0.18.0
Nuove funzioni
- Aggiunto un nuovo parametro, dynamic\circuits a backends() per consentire il filtraggio dei backends che supportano i circuiti dinamici.
- Aggiunto il parametro
max_timeaIBMBackend.open_session(). - Aggiunto un metodo
RuntimeJob.queue_info()per ottenere le informazioni sulla coda dal backend. Questa funzione è stata trasferita daqiskit_ibm_provider.
Note di deprecazione
QiskitRuntimeService.runtime()è stato deprecato.
Correzioni di bug
- Molti metodi in RuntimeJob richiedono il recupero dei dati del lavoro dall'API con
job_get(). Questa chiamata API ora esclude il campoparamsper impostazione predefinita, perché è necessario solo in qiskit_ibm_runtime.RuntimeJob.inputs().
0.17.0
Nuove funzioni
- Aggiunto un nuovo metodo properties() che restituisce le proprietà di backend del lavoro al momento dell'esecuzione del lavoro.
- details() ha un nuovo campo, activated_at, che è il timestamp di quando la sessione è stata modificata in attiva.
Correzioni di bug
-
Quando si recupera un singolo backend con il parametro
instance,service.backend('ibm_torino', instance='ibm-q/open/main') # raises error if torino is not in ibm-q/open/main but in a different instance # the user has access to service = QiskitRuntimeService(channel="ibm_quantum", instance="ibm-q/open/main") service.backend('ibm_torino') # raises the same errorse il backend non si trova nell'istanza, ma in un'altra a cui l'utente ha accesso, verrà generato un errore. Lo stesso errore viene ora sollevato se viene passata un'istanza all'inizializzazione e poi viene recuperato un backend non presente in quell'istanza.
-
È stato risolto un problema a causa del quale il recupero della coupling_map di alcuni backend comportava un NameError.
0.16.0
Preludio
Le sessioni sono ora thread-safe e consentono di eseguire più esperimenti interattivi simultanei.
Nuove funzioni
- Le sessioni sono ora thread-safe.
Note sull'aggiornamento
- I metodi relativi all'utilizzo di programmi personalizzati sono stati rimossi.
Correzioni di bug
- Se viene utilizzata un'istanza cloud abilitata a
q-ctrlmentreq-ctrlnon viene passato comechannel_strategy, verrà generato un errore.
0.15.1
Correzioni di bug
- Ripristino delle modifiche di 0.15.0 a from_id(), perché si trattava di una modifica di rottura senza un'adeguata deprecazione.
0.15.0
Nuove funzioni
-
È stato aggiunto un nuovo modulo qiskit_ibm_runtime.fake_provider è stato aggiunto per fornire l'accesso a una serie di falsi backend derivati da istantanee dei dispositivi IBM Quantum. Questa funzionalità era originariamente fornita dal modulo
qiskit.providers.fake_provider, ma sarà presto deprecata a favore del modulo qiskit_ibm_runtime.fake_provider.Le istantanee fornite dai backend fasulli sono utili per testare localmente il transpiler ed eseguire simulazioni rumorose locali del sistema prima di eseguirlo su dispositivi reali. Ecco un esempio di utilizzo di un backend falso per la trasposizione e la simulazione:
from qiskit import QuantumCircuit from qiskit import transpile from qiskit_ibm_runtime.fake_provider import FakeManilaV2 # Get a fake backend from the fake provider backend = FakeManilaV2() # Create a simple circuit circuit = QuantumCircuit(3) circuit.h(0) circuit.cx(0,1) circuit.cx(0,2) circuit.measure_all() # Transpile the ideal circuit to a circuit that can be directly executed by the backend transpiled_circuit = transpile(circuit, backend) # Run the transpiled circuit using the simulated fake backend job = backend.run(transpiled_circuit) counts = job.result().get_counts() -
Aggiunto il supporto per
backend.run(). La funzionalità è simile a quella diqiskit-ibm-provider. -
Se
q-ctrlviene passato comechannel_strategye l'istanza del conto non haq-ctrlabilitato, verrà sollevato un errore durante l'inizializzazione. -
Rimosso il salvataggio del risultato in
RuntimeJob._results. Invece recupera i risultati ogni volta che viene chiamato il metodoresults().
Note di deprecazione
- L'uso del file
~/.qiskit/qiskitrc.jsonper le informazioni sul conto è stato deprecato. Utilizzare invece~/.qiskit/qiskit-ibm.json.
Correzioni di bug
- È stato risolto un problema per cui i lavori annullati e falliti restituivano un risultato non valido che risultava in un errore di tipo, impedendo all'utente di ricevere l'errore effettivo.
- Se si utilizza l'ambiente DE, viene emesso un avviso all'inizializzazione, poiché non tutte le funzionalità sono supportate.
- Il parametro
backendin from_id() è stato deprecato perché le sessioni non supportano più backend. Inoltre, il parametroservicenon è più facoltativo. - Gli input di esecuzione
circuit_indiceseobservable_indicesper Estimator e Sampler sono stati completamente rimossi.
Altre note
- Aggiunto codice di migrazione per l'esecuzione di
backend.runin qiskit_ibm_runtime invece che in qiskit_ibm_provider.
0.14.0
Nuove funzioni
- Esiste una nuova classe,
qiskit_ibm_runtime.Batch, che attualmente funziona allo stesso modo di qiskit_ibm_runtime.Session ma in seguito sarà aggiornata per supportare meglio l'invio di più lavori contemporaneamente. - Le chiavi e i valori arbitrari non sono più consentiti in
Options.
Note di deprecazione
- I programmi personalizzati sono stati contrassegnati come obsoleti a partire dalla versione qiskit-ibm-runtime 0.14.0 e saranno rimossi il 27 novembre 2023. Gli utenti possono invece convertire i propri programmi personalizzati per utilizzare le primitive di “ Qiskit Runtime ” con “ Qiskit Serverless ”.
0.13.0
Nuove funzioni
-
È stato aggiunto un nuovo metodo, details(), che restituisce informazioni su una sessione, tra cui: il tempo massimo della sessione, il tempo attivo rimanente, lo stato attuale e se la sessione sta accettando o meno lavori.
È stato aggiunto anche status(), che restituisce lo stato attuale della sessione.
-
All'inizializzazione, se non viene passato direttamente, il
instancepredefinito selezionato dal provider verrà registrato al livello "INFO". Quando si esegue un lavoro, se il backend selezionato non si trova nell'istanza predefinita ma in un'istanza diversa a cui l'utente ha accesso, anche tale istanza verrà registrata.
Note sull'aggiornamento
-
qiskit_ibm_runtime.Session.close () è stato aggiornato per contrassegnare un sito
Sessioncome non più in grado di accettare nuovi lavori. La sessione non accetterà altri lavori, ma continuerà a eseguire i lavori in coda finché non saranno terminati o finché non scadrà il tempo massimo. Ciò avverrà automaticamente anche all'uscita del gestore del contesto di sessione. Quando una sessione che non accetta lavori ha esaurito i lavori da eseguire, viene immediatamente chiusa, liberando il backend per eseguire altri lavori invece di aspettare il timeout interattivo.Il vecchio comportamento del metodo close è stato spostato in un nuovo metodo, qiskit_ibm_runtime.Session.cancel (), in cui tutti i processi in coda all'interno di una sessione vengono annullati e terminati.
Correzioni di bug
- Corretto un bug per cui
shotspassato come tipo numpy non veniva serializzato correttamente. - Corretto un bug in target_history() per cui il parametro datetime non veniva utilizzato per recuperare le proprietà del backend a partire dalla data specificata.
0.12.2
Nuove funzioni
- Se si usa un
channel_strategy, solo i backend che supportano quelchannel_strategysaranno accessibili all'utente. - Aggiunta l'opzione di definire un account predefinito nel file json dell'account. Per selezionare un conto come predefinito, definire
set_as_default=TrueinQiskitRuntimeService.save_account(). - Aggiunto il nuovo metodo
Session.from_idche crea una nuova sessione con un dato id. - Ora viene visualizzato un avviso se un utente invia un lavoro che si prevede superi la quota mensile di tempo di esecuzione del sistema di 10 minuti. Questo vale solo per i lavori eseguiti su hardware reale nell'istanza
ibm-q/open/main. Se il lavoro supera la quota, viene annullato.
Note sull'aggiornamento
- I messaggi di errore dei lavori includono ora il codice di errore. I codici di errore si trovano negli errori.
0.12.1
Nuove funzioni
- Gli utenti possono utilizzare una nuova variabile d'ambiente,
USAGE_DATA_OPT_OUT, per rinunciare al tracciamento dell'uso del modulo utente, impostando il valore suTrue. Inoltre, verranno monitorati solo alcuni moduli qiskit invece di tutti i moduli che iniziano con qiskit o qiskit_. - Gli utenti possono ora passare un valore di
defaultal parametrochannel_strategyin qiskit_ibm_runtime.QiskitRuntimeService. Ora, se un account è configurato con una certa strategia di canale, l'utente può sovrascriverla passandodefault. - Le primitive Sampler e Estimator sono state migliorate per incorporare procedure di convalida personalizzate quando la proprietà channel_strategy di :class:qiskit_ibm_runtime.QiskitRuntimeService è configurata come "q-ctrl" Questa logica di convalida personalizzata corregge efficacemente le opzioni di immissione errate e protegge gli utenti dalla disattivazione involontaria dei miglioramenti delle prestazioni di Q-CTRL.
Correzioni di bug
- Il recupero delle proprietà del backend con properties() ora supporta il passaggio di un parametro
datetimeper recuperare le proprietà da una data passata. - Le opzioni
noise_factorseextrapolatorinqiskit_ibm_runtime.options.ResilienceOptionsvengono ora impostate come predefinite suNone, a meno cheresilience_levelnon sia impostato a 2. Verranno impostate solo le opzioni rilevanti per il livello di resilienza, quindi quando si usaresilience_level2,noise_factorscontinuerà a essere impostato come predefinito su(1, 3, 5)eextrapolatorsuLinearExtrapolator. Inoltre, le opzioni con valoreNonenon saranno più inviate al server. - I messaggi di errore dei lavori non verranno più restituiti in maiuscolo.
- L'opzione tempo massimo di esecuzione si basa ora sul tempo di esecuzione del sistema invece che sull'ora dell'orologio a muro. Il tempo di esecuzione del sistema è la quantità di tempo che il sistema dedica all'elaborazione del lavoro. Se un lavoro supera questo limite di tempo, viene cancellato forzatamente. I lavori al simulatore continuano a utilizzare l'orario dell'orologio a muro.
0.12.0
Nuove funzioni
-
Aggiunto un
global_service, in modo che se l'utente definisce un QiskitRuntimeService, questo venga utilizzato dalle primitive, anche se il servizio non viene passato loro esplicitamente. Ad esempio:from qiskit_ibm_runtime import QiskitRuntimeService, Sampler service = QiskitRuntimeService(channel="ibm_quantum") # Sampler._service field will be initialized to ``service`` sampler = Sampler(backend="ibmq_qasm_simulator") -
Aggiunto un nuovo metodo, qiskit_ibm_runtime.QiskitRuntimeService.instances() che restituisce tutte le istanze (hub/gruppo/progetto) in cui si trova l'utente. Questo vale solo per il canale
ibm_quantum, poiché il canaleibm_cloudnon ha istanze multiple. -
Aggiunte le convalide per le opzioni del secondo livello del dict, cioè, per ciascuna delle opzioni resilienza, simulatore, esecuzione e transpilazione, verificare che le loro opzioni siano supportate. Altrimenti lancia un'eccezione.
-
C'è un nuovo parametro,
channel_strategyche può essere impostato nell'inizializzazione di qiskit_ibm_runtime.QiskitRuntimeService o salvato in qiskit_ibm_runtime.QiskitRuntimeService.save_account(). Sechannel_strategyè impostato suq-ctrl, tutti i lavori all'interno del servizio utilizzeranno la strategia di mitigazione degli errori Q-CTRL.
Note sull'aggiornamento
- I circuiti e altri parametri di input non verranno più memorizzati automaticamente nei lavori di runtime. Possono comunque essere recuperati con qiskit_ibm_runtime.RuntimeJob.inputs().
Note di deprecazione
- L'opzione di resilienza
noise_amplifierè deprecata. Dopo il periodo di deprecazione, sarà supportata solo l'amplificazione locale delle pieghe. Fare riferimento a https://github.com/qiskit-community/prototype-zne per l'amplificazione globale della piegatura.
Correzioni di bug
- Quando si esegue sul canale "ibm_cloud", è possibile non specificare il backend. In questo caso, il sistema seleziona uno dei backend disponibili per questo servizio. Il problema n. 625 https://github.com/Qiskit/qiskit-ibm-runtime/issues/625 segnalava che il backend restituito da
job.backend()non era sempre il backend effettivo su cui veniva eseguito il lavoro. Questa PR risolve questo bug. - Corregge una condizione di gara nel test_cancel_running_job() in test_job.py, dove la cancellazione del lavoro non poteva essere eseguita. Per maggiori dettagli, fare riferimento a #1019 <https://github.com/Qiskit/qiskit-ibm-runtime/issues/1019> _.
- In precedenza abbiamo aggiunto una convalida durante l'esecuzione dei lavori per assicurarci che il numero di circuiti non fosse superiore al massimo per quel backend,
backend.max_circuits. Questo limite non è necessario per i primitivi eseguiti all'interno di una sessione.
0.11.3
Nuove funzioni
- Aggiunto il motivo del fallimento quando si invoca il metodo error_message().
- È stata aggiunta una nuova proprietà, usage_estimation() che restituisce il tempo di esecuzione stimato del sistema,
quantum_seconds. Il tempo di esecuzione del sistema rappresenta la quantità di tempo che il sistema dedica all'elaborazione del lavoro. - Solleva un'eccezione se il numero di circuiti passati a
_run_primitive()supera il numero di circuiti supportati dal backend. - Esiste un nuovo metodo update_tags() che può essere utilizzato per aggiornare il sito
job_tagsdi un lavoro. - Se
instanceè fornito come parametro a qiskit_ibm_runtime.QiskitRuntimeService, viene utilizzato come filtro inQiskitRuntimeService.backends(). Seinstancenon è riconosciuto come una delle istanze del provider, verrà sollevata un'eccezione. In precedenza, avevamo emesso solo un avvertimento.
0.11.2
Nuove funzioni
-
Se un lavoro è stato annullato e viene richiesto job.result (), lanciare un'eccezione anziché restituire None.
-
Un nuovo metodo, qiskit_ibm_runtime.options.SimulatorOptions.set_backend(), consente agli utenti di impostare più facilmente le opzioni del simulatore per un backend.
from qiskit.providers.fake_provider import FakeManila from qiskit_aer.noise import NoiseModel # Make a noise model fake_backend = FakeManila() # Set options to include the noise model options = Options() options.simulator.set_backend(fake_backend) options.simulator.seed_simulator = 42
Correzioni di bug
- Corretta la ricorsione infinita quando si tenta di copiare in profondità un IBMBackend. Aggiunto un metodo
qiskit_ibm_runtime.IBMBackend.deepcopy(). - È stato risolto un problema per cui i metadati del circuito non venivano serializzati correttamente, causando un errore di tipo.
0.11.1
Note di deprecazione
- In qiskit_ibm_runtime.RuntimeJob.metrics(), il campo bss sarà sostituito da usage.
0.11.0
Nuove funzioni
-
Quando si recupera un lavoro con
qiskit_ibm_runtime.IBMRuntimeService.job(),paramsnon verrà più restituito dall'API. Saranno invece caricati in modo casuale quando saranno effettivamente necessari in qiskit_ibm_runtime.RuntimeJob.inputs(). -
Aggiunto un avviso quando il backend non è attivo in QiskitRuntimeService.run.
-
Supporta l'input di tipo
CouplingMapquando viene dato come opzione del simulatore. In precedenza abbiamo sostenuto, ad esempio:options.simulator = {"coupling_map": [[0, 1], [1, 0]]}Ora supportiamo anche quanto segue:
options.simulator = {"coupling_map": CouplingMap.from_line(10)}
Note sull'aggiornamento
- Una sessione predefinita non viene più aperta se si passa un nome di backend o un'istanza di backend a qiskit_ibm_runtime.Sampler o qiskit_ibm_runtime.Estimator ai costruttori. La primitiva verrà invece eseguita senza sessione. Inoltre, ora si deve usare il parametro
backendper passare un nome o un'istanza di backend, invece del parametrosession(che può continuare a essere usato per passare una sessione). - Il primo parametro dei metodi qiskit_ibm_runtime.Sampler e qiskit_ibm_runtime.Estimator è ora
backendinvece disession.
Note di deprecazione
- Passare un nome di backend o un'istanza di backend al parametro
sessionquando si inizializza un oggetto qiskit_ibm_runtime.Sampler o qiskit_ibm_runtime.Estimator è stato deprecato. Utilizzare invece il parametrobackend. È possibile continuare a passare una sessione utilizzando il parametrosession.
0.10.0
Nuove funzioni
- Python 3.11 è ora supportato.
Note sull'aggiornamento
- Aggiunti messaggi di errore nel caso in cui l'utente definisca valori non supportati per 'max\execution_time'. In precedenza, questa convalida veniva eseguita sul lato server.
Correzioni di bug
- Aggiunta la deserializzazione dei parametri di RuntimeJob.inputs. In precedenza, i circuiti venivano restituiti in formato seriale. Corregge il problema #829.
- Consentire agli utenti di recuperare tutti i backend anche se uno di essi ha una configurazione mancante. Il backend senza configurazione non verrà restituito.
0.9.4
Nuove funzioni
- Aggiunti metodi per convalidare le opzioni di input alle opzioni
transpilationeenvironment.
Note sull'aggiornamento
- Quando si costruisce un backend
qiskit.transpiler.Target, i qubit e le porte difettose della configurazione del backend vengono filtrati.
Note di deprecazione
-
Gli argomenti deprecati
circuits,parameters,serviceeskip_transpilationsono stati rimossi da Sampler.Allo stesso modo, gli argomenti deprecati
circuits,observables,parameters,serviceeskip_transpilationsono stati rimossi da Estimator.In QiskitRuntimeService, il parametro
authè stato rimosso. Inoltre, i parametriinstance,job_tagsemax_execution_timesono stati rimossi da qiskit_ibm_runtime.QiskitRuntimeService.run(). Possono invece essere passati attraversoRuntimeOptions.All'interno di
RuntimeOptionsbackend_namenon è più supportato. Utilizzare invecebackend.
Correzioni di bug
- È stato risolto un bug per cui il recupero di un lavoro da un backend senza le opzioni
noise_modeloseed_simulatordava luogo a un errore di chiave.
0.9.3
Note sull'aggiornamento
- Aggiunti messaggi di errore nel caso in cui l'utente definisca valori non supportati per 'optimization\level' o per 'resilience\level'. È stato aggiunto un controllo di convalida per le opzioni fornite come input a
resilience. In precedenza, questa convalida veniva eseguita sul lato server. Aggiungendoli sul lato client, la risposta sarà molto più veloce in caso di errore. La variabile d'ambienteQISKIT_RUNTIME_SKIP_OPTIONS_VALIDATIONviene utilizzata per controllare la convalida. Se impostato, la convalida verrà saltata. - Le configurazioni del backend non vengono più caricate quando QiskitRuntimeService viene inizializzato. Invece, la configurazione viene caricata e memorizzata nella cache solo durante get_backend() e backends().
Correzioni di bug
- Quando si crea un oggetto Opzione e si passa un'opzione di input a
resilience_options, questa opzione viene inclusa inresilience_options, ma le altre opzioni predefinite vengono rimosse. Questo problema è stato risolto, quindi ora gli input sono gestiti correttamente, come gli altri tipi di opzione.
0.9.2
Nuove funzioni
- Aggiunto un nuovo argomento chiamato
session_timeal metodo program\run eqiskit_ibm_runtime.RuntimeOptions. Ora i valori inseriti dall'utente per la sessionemax_timesaranno inviati al server comesession_time. Ciò consente agli utenti di specificare valori diversi per le sessionimax_timeemax_execution_time. - Aggiunto il metodo target_history(). Questo metodo è simile a target(). La differenza è che il nuovo metodo consente all'utente di passare un parametro datetime, per recuperare i dati storici dal backend.
Note sull'aggiornamento
- Accettare tutte le opzioni date al livello 1 e assegnarle al tipo di opzione gerarchica appropriata. Ad esempio, se l'utente fornisce
options = {"shots": 10}come input a Sampler/Estimator, questo verrà interpretato comeoptions = {"execution: {"shots": 10}}. - Se un lavoro viene restituito senza backend, il recupero del backend tramite qiskit_ibm_runtime.RuntimeJob.backend() recupera nuovamente i dati dal server e tenta di aggiornare il backend. Inoltre,
job_idebackend, che erano attributi deprecati di qiskit_ibm_runtime.RuntimeJob sono stati rimossi. - È stato aggiunto un avviso all'utente quando quest'ultimo passa un'opzione non supportata da Opzioni.
Correzioni di bug
- È stato risolto un problema a causa del quale i valori predefiniti per
optimization_levele perresilience_levelnon venivano impostati correttamente. - È stato risolto un problema per cui, se non era selezionato alcun backend,
optimization_leveleresilience_levelvenivano impostati come predefiniti suNone, causando il fallimento del lavoro. - Se un'istanza viene passata a qiskit_ibm_runtime.QiskitRuntimeService.get_backend() e poi il backend viene usato in una sessione, tutti i lavori all'interno della sessione verranno eseguiti dall'istanza originale passata.
- Rimossa la scomposizione aggiuntiva di
BlueprintCircuits nel codificatore JSON. Questo problema è stato introdotto come correzione di un bug, ma nel frattempo è stato risolto. La decomposizione portava comunque a possibili problemi se il circuito decomposto non era più nell'insieme di basi corretto del backend.
0.9.1
Note sull'aggiornamento
-
qiskit_ibm_runtime.QiskitRuntimeService.jobs() ha ora un parametro
backend_nameche può essere usato per restituire solo i lavori eseguiti con il backend specificato. -
Consente all'utente di memorizzare i dettagli del conto in un file specificato dall'utente nel parametro.
filename. L'impostazione predefinita rimane ~/.qiskit/qiskit-ibm.json. Esempio di utilizzo: Es:QiskitRuntimeService.save_account(channel="ibm_quantum", filename="~/my_account_file.json", name = "my_account", token="my_token") service = QiskitRuntimeService(channel="ibm_quantum", filename="~/my_account_file.json", name = "my_account",)
Note di deprecazione
backendnon è più un'opzione supportata quando si utilizza qiskit_ibm_runtime.Session.run (). Le sessioni non supportano più backend incrociati. Inoltre, verrà sollevata un'eccezione se un backend passato attraverso le opzioni non corrisponde al backend della sessione originale in una sessione attiva.
Correzioni di bug
ECRGateeCZGatesono state aggiunte al costruttoreTargetper risolvere un bug di compilazione.
Altre note
- Poiché i messaggi di errore di un lavoro non riuscito possono essere lunghi, li abbiamo accorciati in modo che inizino dall'ultimo
Tracebackdel messaggio.
0.9.0
Note sull'aggiornamento
- Modificati i valori predefiniti per
optimization_levele perresilience_levelinqiskit_ibm_runtime.Options. Se i loro valori sono definiti dall'utente, non vengono modificati. Se non è impostato, se il backend è un simulatore senza rumore,optimization_levelè impostato su 1 eresilience_levelsu 0; altrimenti, sono impostati rispettivamente su 3 e 1. - sono stati aggiunti session_id() e tags() per restituire facilmente il session_id e i job_tags di un lavoro.
Correzioni di bug
- È stato risolto un problema per cui i lavori non eseguiti prima della chiusura di una sessione non vengono effettivamente eseguiti come parte di quella sessione. I lavori devono essere eseguiti come parte di una sessione, anche se questa viene chiusa dall'uscita del gestore del contesto.
- Corregge il problema per cui l'invio di un lavoro di grandi dimensioni non riesce a causa del timeout dell'operazione di scrittura.
0.8.0
Nuove funzioni
- Python 3.10 è ora supportato.
- Le opzioni di resilienza avanzate possono ora essere impostate in
options.resilience. Vedereqiskit_ibm_runtime.options.ResilienceOptionsper tutte le opzioni disponibili. - È ora possibile specificare una coppia di decodificatori di risultati per il parametro
result_decoderdel metodo qiskit_ibm_runtime.QiskitRuntimeService.run(). Se viene specificata una coppia, la prima viene utilizzata per decodificare i risultati intermedi e la seconda i risultati finali.
Note sull'aggiornamento
- L'opzione predefinita
resilience_levelper è stata modificata da 0 a 1. Inoltre, l'opzione predefinita dioptimization_levelè stata cambiata da 1 a 3.
Note di deprecazione
- Le opzioni di transpilazione
translation_methodetiming_constraintssono state deprecate.
Correzioni di bug
- Se un'istanza qiskit_ibm_runtime.IBMBackend viene passata al costruttore qiskit_ibm_runtime.Session il servizio usato per inizializzare l'istanza di
IBMBackendviene usato per la sessione, invece del servizio di account predefinito.
0.7.0
Nuove funzioni
qiskit_ibm_runtime.Optionsaccetta ora argomenti di parole chiave arbitrarie. Ciò consente agli utenti di specificare nuove opzioni per i programmi primitivi senza aggiornareqiskit_ibm_runtime. Questi argomenti di parole chiave arbitrarie, tuttavia, non vengono convalidati.- La classe qiskit_ibm_runtime.options.EnvironmentOptions accetta ora un parametro
callback. Questo parametro può essere usato per trasmettere i risultati intermedi e finali delle primitive. - La classe
qiskit_ibm_runtime.Optionsaccetta oramax_execution_timecome opzione di primo livello ejob_tagscome opzione sottoenvironment.qiskit_ibm_runtime.RuntimeOptionsè stato aggiornato per includere questi due parametri.
Note sull'aggiornamento
- Questa versione di qiskit-ibm-runtime richiede la versione di qiskit-terra 0.22 o superiore. Il file
requirements.txtè stato aggiornato di conseguenza.
Note di deprecazione
- Qiskit Runtime i programmi
torch-train,torch-infer,sample-expval,sample-programequantum_kernal_alignmentsono stati deprecati a causa del loro scarso utilizzo. - Il passaggio del parametro
instanceal metodo qiskit_ibm_runtime.QiskitRuntimeService.run() è stato deprecato. Si può invece passare il parametroinstanceall'interno del parametrooptions. - Il passaggio di
job_tagsemax_execution_timecome parametri a qiskit_ibm_runtime.QiskitRuntimeService è stato deprecato. Per favore, passateli all'interno dioptions.
Correzioni di bug
- Corregge la sezione mancante sul recupero dei lavori nella guida alle istruzioni.
0.7.0rc2
Note sull'aggiornamento
- Aggiunto un controllo di validazione a
Sampler.run(). Se non c'è un bit classico, viene generato un errore. - Il campionatore viene aggiornato per restituire
SamplerResultconSamplerResult.quasi_distscome elenco diQuasiDistrbution. Si usava impostare un elenco didictcomeSamplerResult.quasi_dists, ma non si seguiva il progetto diSamplerResult. - La classe RuntimeJob è ora una sottoclasse di
qiskit.providers.Job.
Note di deprecazione
job_ide gli attributibackenddi qiskit_ibm_runtime.RuntimeJob sono stati deprecati. Utilizzare invece i metodi qiskit_ibm_runtime.RuntimeJob.job_id() e qiskit_ibm_runtime.RuntimeJob.backend().- L'attributo
backend_namediqiskit_ibm_runtime.RuntimeOptionsè deprecato e sostituito dabackend.
0.7.0rc1
Preludio
Sono state apportate modifiche significative al modo in cui le primitive vengono invocate all'interno di una sessione e alle opzioni disponibili per le primitive. Per informazioni complete, consultare il resto delle note di rilascio e le esercitazioni.
Nuove funzioni
-
È ora possibile richiamare lo stesso programma primitivo o programmi diversi più volte all'interno di una sessione. Ad esempio:
from qiskit_ibm_runtime import QiskitRuntimeService, Session, Sampler, Estimator, Options from qiskit.test.reference_circuits import ReferenceCircuits from qiskit.circuit.library import RealAmplitudes from qiskit.quantum_info import SparsePauliOp # Initialize account. service = QiskitRuntimeService() # Set options, which can be overwritten at job level. options = Options(optimization_level=1) # Prepare inputs. bell = ReferenceCircuits.bell() psi = RealAmplitudes(num_qubits=2, reps=2) H1 = SparsePauliOp.from_list([("II", 1), ("IZ", 2), ("XI", 3)]) theta = [0, 1, 1, 2, 3, 5] with Session(service=service, backend="ibmq_qasm_simulator") as session: # Submit a request to the Sampler primitive within the session. sampler = Sampler(session=session, options=options) job = sampler.run(circuits=bell) print(f"Sampler results: {job.result()}") # Submit a request to the Estimator primitive within the session. estimator = Estimator(session=session, options=options) job = estimator.run( circuits=[psi], observables=[H1], parameter_values=[theta] ) print(f"Estimator results: {job.result()}") -
Viene introdotta una nuova classe
qiskit_ibm_runtime.Options. Questa classe consente il completamento automatico delle opzioni relative ai programmi primitivi. Ad esempio:from qiskit_ibm_runtime import Session, Sampler, Options from qiskit.test.reference_circuits import ReferenceCircuits options = Options() options.optimization_level = 3 # This can be done using auto-complete. with Session(backend="ibmq_qasm_simulator") as session: # Pass the options to Sampler. sampler = Sampler(session=session, options=options) # Or at job level. job = sampler.run(circuits=ReferenceCircuits.bell(), shots=4000) -
qiskit_ibm_runtime.RuntimeJob ha un nuovo metodo metrics(). Questo metodo restituisce le metriche di un lavoro, che includono informazioni sul timestamp.
-
Il qiskit_ibm_runtime.QiskitRuntimeService
channelpuò ora essere memorizzata come variabile d'ambiente,QISKIT_IBM_CHANNEL. In questo modo, quando si usano le Runtime Primitives, il servizio non deve essere istanziato manualmente e può essere creato direttamente dalle variabili d'ambiente.
Note sull'aggiornamento
-
Sollevare
RuntimeJobMaxTimeoutErrorquando un lavoro si protrae troppo a lungo, in modo che i programmi possano gestirlo in modo appropriato. -
Sono stati rimossi i parametri sperimentali
transpilation_settings,resilience_settingsemax_timeai costruttori :class:` qiskit_ibm_runtime.Sampler e qiskit_ibm_runtime.Estimator sono stati rimossi. È invece possibile utilizzare la classeqiskit_ibm_runtime.Optionsper specificare le impostazioni emax_timepuò essere specificato all'avvio di una nuova sessione. Ad esempio:from qiskit_ibm_runtime import Session, Sampler, Options options = Options() # This can be done using auto-complete. option.optimization_level = 3 options.resilience_level = 1 with Session(max_time="2h") as session: # Pass the options to Sampler. sampler = Sampler(session=session, options=options) -
Poiché alcuni account hanno molti programmi in esecuzione, è stata rimossa la memorizzazione nella cache dell'elenco di tutti i programmi alla prima chiamata di
programs(). Invece, i programmi saranno memorizzati nella cache solo fino all'indirizzolimit, il cui valore predefinito è 20.
Note di deprecazione
-
Invocare qiskit_ibm_runtime.Sampler e qiskit_ibm_runtime.Estimator come gestori di contesto è stato deprecato. Si può invece utilizzare la classe qiskit_ibm_runtime.Session per creare una nuova sessione e invocare una o più primitive all'interno della sessione.
Di conseguenza, è stato deprecato anche il passaggio di parametri di ingresso, come
circuits,observables, eparameter_values, nonchéserviceai costruttori diSamplereEstimator. Gli input possono ora essere passati al metodorun()delle classi primitive eservicepuò essere passato a qiskit_ibm_runtime.Session quando si avvia una nuova sessione. -
Il passaggio di
skip_transpilationai costruttori :class:` qiskit_ibm_runtime.Sampler e qiskit_ibm_runtime.Estimator è stato deprecato. Si può invece usare la classeqiskit_ibm_runtime.Optionsper specificare questa opzione. Ad esempio:from qiskit_ibm_runtime import Options options = Options() # This can be done using auto-complete. options.transpilation.skip_transpilation = True
Correzioni di bug
- Risolve il problema #428 aumentando la versione minima richiesta di
qiskit-terraa0.21.0, poiché l'ultima versione diqiskit-ibm-runtimenon è compatibile con0.20.0o con le precedenti diqiskit-terra.
0.6.0
Note sull'aggiornamento
-
Durante la migrazione da
qiskit-ibmq-providerle credenziali del canaleibm_quantumverranno automaticamente copiate dal file qiskitrc e verrà creato un file qiskit-ibm.json se non esiste. È sufficiente inizializzare la classe QiskitRuntimeService senza passare alcun parametro per usare questo account copiato da quello predefinito diibm_quantum.Es:
from qiskit_ibm_runtime import QiskitRuntimeService service = QiskitRuntimeService() -
IBMEstimatorche era stata deprecata in precedenza, ora è stata rimossa. Utilizzare la classe Estimator in futuro. -
IBMRuntimeServiceche era stata deprecata in precedenza, ora è stata rimossa. Uso QiskitRuntimeService in futuro.
0.5.0
Preludio
Questa versione sfrutta i miglioramenti dell'API e della coda per diventare più consapevole della sessione di runtime. Di conseguenza, quando si utilizzano le primitive (campionatore e stimatore), i lavori di runtime nella stessa sessione passeranno in testa alla coda, accelerando così la sessione di runtime, una volta avviata.
Nuove funzioni
-
L'oggetto
service, che è un'istanza della classe QiskitRuntimeService è ora accessibile dalla classe IBMBackend utilizzando la proprietàservice.Es:
backend = service.get_backend("ibmq_qasm_simulator") backend.service # QiskitRuntimeService instance used to instantiate the backend
Note sull'aggiornamento
-
jobs() ha due nuovi parametri,
created_afterecreated_before. Questi possono essere utilizzati per filtrare i lavori in base alla data di creazione in ora locale. -
I parametri
circuit_indiceseobservable_indicesquando si chiamaestimatorsono ora deprecati e saranno rimossi in una versione futura. È ora possibile passare indici o oggetti usando i parametricircuitseobservables.Es:
with Estimator( circuits=[qc1, qc2], observables=[H1, H2, H3], service=service, options=options ) as estimator: # pass circuits and observables as indices result = estimator(circuits=[0, 1], observables=[0, 1], parameter_values=[theta1, theta2]) # pass circuits and observables as objects result = estimator(circuits=[qc1, qc2], observables=[H1, H3], parameter_values=[theta1, theta3]) -
I parametri
circuit_indiceseobservable_indicesquando si chiamaestimatorsono ora deprecati e saranno rimossi in una versione futura. È ora possibile passare indici o oggetti usando i parametricircuitseobservables.Es:
with Sampler( circuits=[qc1, qc2], service=service, options=options ) as sampler: # pass circuits as indices result = sampler(circuits=[0, 1], parameter_values=[theta1, theta2]) # pass circuit as objects result = sampler(circuits=[qc1, qc2], parameter_values=[theta2, theta3]) -
session_id, che è l'ID del lavoro del primo lavoro in una sessione di runtime, può ora essere usato come filtro in jobs() con il parametrosession_id. -
run() supporta ora un nuovo parametro,
job_tags. Questi tag possono essere usati per filtrare i lavori con jobs(). -
run() supporta ora un nuovo parametro,
max_execution_time, che può essere usato per sovrascrivere il tempo massimo di esecuzione predefinito del programma. Deve essere inferiore o uguale al tempo massimo di esecuzione del programma. -
jobs() ha un nuovo parametro,
descending. Per impostazione predefinita, questo parametro èTrue, dove i lavori verranno restituiti in ordine decrescente in base alla data di creazione. -
RuntimeJobTimeoutErrorviene ora sollevato quando scade il valoretimeoutimpostato in result() o wait_for_final_state(). -
Quando si inizializza QiskitRuntimeService e viene utilizzato un token non valido, verrà sollevato
IBMNotAuthorizedErrorinvece diRequestsApiError. -
IBMSamplerche era stata deprecata in precedenza, ora è stata rimossa. Utilizzare la classe Sampler in futuro. -
qubit_properties() restituirà ora una sottoclasse di
QubitPropertieschiamataIBMQubitPropertiesche esporrà l'anarmonicità in aggiunta a t1, t2 e alla frequenza già esposte dalla classeQubitProperties.
0.4.0
Note sull'aggiornamento
-
IBMRuntimeServiceè stato rinominato inQiskitRuntimeSerice. La classeIBMRuntimeServiceè ora deprecata e sarà rimossa in una prossima versione.Esempio:
Prima:
from qiskit_ibm_runtime import IBMRuntimeService service = IBMRuntimeService(channel="ibm_cloud", token="...", instance="...")Dopo:
from qiskit_ibm_runtime import QiskitRuntimeService service = QiskitRuntimeService(channel="ibm_cloud", token="...", instance="...") -
IBMEstimatorè ormai deprecata e sarà rimossa in una prossima versione. Utilizzare la classe Estimator in futuro.Esempio:
Prima:
from qiskit_ibm_runtime import IBMRuntimeService, IBMEstimator service = IBMRuntimeService(channel="ibm_cloud", token="...", instance="...") estimator_factory = IBMEstimator(service=service, backend="ibmq_qasm_simulator") with estimator_factory(circuits=[qc], observables="...", parameters="...") as estimator: result = estimator(circuit_indices=[0], ...)Dopo:
from qiskit_ibm_runtime import QiskitRuntimeService, Estimator service = QiskitRuntimeService(channel="ibm_cloud", token="...", instance="...") with Estimator( circuits=[qc], observables="...", parameters="...", service=service, options={ "backend": "ibmq_qasm_simulator" }, # or IBMBackend<"ibmq_qasm_simulator"> ) as estimator: result = estimator(circuit_indices=[0], ...) -
IBMSamplerè ormai deprecata e sarà rimossa in una prossima versione. Utilizzare la classe Sampler in futuro.Esempio:
Prima:
from qiskit_ibm_runtime import IBMRuntimeService, IBMSampler service = IBMRuntimeService(channel="ibm_cloud", token="...", instance="...") sampler_factory = IBMSampler(service=service, backend="ibmq_qasm_simulator") with sampler_factory(circuits=[qc], parameters="...") as sampler: result = sampler(circuit_indices=[0], ...)Dopo:
from qiskit_ibm_runtime import QiskitRuntimeService, Sampler service = QiskitRuntimeService(channel="ibm_cloud", token="...", instance="...") with Sampler( circuits=[qc], parameters="...", service=service, options={ "backend": "ibmq_qasm_simulator" }, # or IBMBackend<"ibmq_qasm_simulator"> ) as sampler: result = sampler(circuit_indices=[0], ...)
Note di deprecazione
IBMRuntimeService,IBMEstimatoreIBMSamplersono state deprecate e saranno rimosse in una prossima versione. Utilizzare invece le classi QiskitRuntimeService, Estimator e Sampler. Per una spiegazione dettagliata con esempi, consultare la sezione Note sull'aggiornamento.
0.3.0
Note sull'aggiornamento
- Un nuovo parametro
channelè stato aggiunto alla classeqiskit_ibm_runtime.IBMRuntimeServicee anche a metodi comesave_account(),saved_accounts()edelete_account(). Può essere impostato suibm_quantumoibm_cloudper autenticarsi a uno dei due diversi canali attraverso i quali viene attualmente offerto il servizio Qiskit Runtime.channelsostituisce il parametroauth, ormai deprecato.
Note di deprecazione
- Il parametro
authdella classeqiskit_ibm_runtime.IBMRuntimeServicee anche di metodi comesave_account(),saved_accounts()edelete_account()è stato deprecato e sarà rimosso in una prossima versione. Utilizzare invece il nuovo parametrochannel.
Correzioni di bug
- Corretto il problema #291 per cui il passaggio di un singolo
QuantumCircuitalle primitive del campionatore o dello stimatore generava un errore.
0.2.0
Nuove funzioni
qiskit_ibm_runtime.IBMEstimatoreqiskit_ibm_runtime.IBMSamplerpermettono ora di interagire facilmente con i programmi primitiviestimatoresampler. Per saperne di più su come utilizzarli, si vedano gli esempi contenuti nei documenti delle rispettive classi.
Correzioni di bug
- Corretto un bug per cui qiskit_ibm_runtime.RuntimeJob.wait_for_final_state() dava luogo a un errore NoneType se il lavoro era già stato completato e qiskit_ibm_runtime.RuntimeJob.status() era stato chiamato prima.
0.1.0
Preludio
qiskit-ibm-runtime è un nuovo client API Python per accedere ai programmi, ai sistemi e ai simulatori quantistici di IBM Quantum tramite il servizio Qiskit Runtime.
Questo nuovo pacchetto si basa sul lavoro già svolto dal modulo qiskit.providers.ibmq.runtime nel pacchetto qiskit-ibmq-provider e lo sostituisce in futuro. Il modulo runtime del pacchetto qiskit-ibmq-provider è ora deprecato.
qiskit-ibm-runtime non è incluso nel metapacchetto Qiskit e quindi deve essere installato separatamente usando pip install qiskit-ibm-runtime.
Nuove funzioni
qiskit_ibm_runtime.IBMRuntimeService.least_busy()consentirà di trovare il backend meno trafficato.
Note sull'aggiornamento
-
il pacchetto qiskit-ibm-runtime non utilizza più il file $ HOME/.qiskit/qiskitrc usato da qiskit-ibmq-provider per salvare le credenziali. Le credenziali sono ora memorizzate in formato JSON nel file HOME/.qiskit/qiskit-ibm.json quando si utilizza il metodo
qiskit_ibm_runtime.IBMRuntimeService.save_account().È ora possibile salvare più credenziali e assegnare un nome opzionale a ciascuna credenziale.
-
Qiskit Runtime il servizio è accessibile tramite un account IBM Quantum (legacy) o un account IBM Cloud (cloud). qiskit-ibm-runtime consente di collegarsi a uno di questi account:
# Legacy from qiskit_ibm_runtime import IBMRuntimeService service = IBMRuntimeService(auth="legacy", token="abc") # Cloud from qiskit_ibm_runtime import IBMRuntimeService service = IBMRuntimeService(auth="cloud", token="abc", instance="IBM Cloud CRN or Service instance name") -
qiskit_ibm_runtime.IBMBackend ora implementa l'interfaccia
qiskit.providers.BackendV2e fornisce un accesso più semplice alla configurazione di un backend, ad esempio:# BackendV1: backend.configuration().n_qubits # BackendV2: backend.num_qubitsL'unico cambiamento rispetto a BackendV1 è che backend.name è ora un attributo anziché un metodo.
Per un elenco di tutti gli attributi disponibili, fare riferimento alla stringa qiskit_ibm_runtime.IBMBackend per un elenco di tutti gli attributi disponibili.
-
Se si è utilizzato il metodo qiskit.providers.ibmq.AccountProvider.get_backend (ad esempio,
provider.get_backend("ibmq_qasm_simulator")) nel pacchetto qiskit-ibmq-provider, il metodo equivalente in questo nuovo pacchetto èqiskit_ibm_runtime.IBMRuntimeService.backend():service = IBMRuntimeService() backend = service.backend("ibmq_qasm_simulator") -
È ora facoltativo specificare un hub/gruppo/progetto in anticipo quando ci si connette all'account legacy IBM Quantum. L'hub/gruppo/progetto viene selezionato nel seguente ordine.
- hub/gruppo/progetto se passato tramite il parametro
instancedurante l'inizializzazioneqiskit_ibm_runtime.IBMRuntimeService - lo specifico hub/gruppo/progetto richiesto dal backend specificato quando si chiama
qiskit_ibm_runtime.IBMRuntimeService.run() - il valore predefinito impostato in precedenza tramite
qiskit_ibm_runtime.IBMRuntimeService.save_account() - un hub/gruppo/progetto premium nel vostro account
- hub/gruppo/progetto ad accesso libero
- hub/gruppo/progetto se passato tramite il parametro
-
È ora facoltativo specificare il nome del backend nelle opzioni durante l'esecuzione del metodo
qiskit_ibm_runtime.IBMRuntimeService.run()quando si utilizza il runtime cloud (solo IBM Cloud ). Il server sceglierà automaticamente un backend e ne restituirà il nome. -
qiskit.providers.ibmq.runtime.IBMRuntimeService il metodo.logout di qiskit-ibmq-provider, utilizzato per cancellare la cache delle autorizzazioni sul server, è stato rimosso.
-
Python 3.6 ha raggiunto la fine del ciclo di vita e non sarà più supportato nel nuovo pacchetto qiskit-ibm-runtime.
-
qiskit.providers.ibmq.runtime.IBMRuntimeService il metodo.run_circuits in qiskit-ibmq-provider è stato rimosso e sarà sostituito dal programma primitivo
Sampler. -
qiskit_ibm_runtime.IBMRuntimeService.run()accetta ora le opzioni di esecuzione in tempo reale come classeqiskit_ibm_runtime.RuntimeOptions, oltre al già supportato Dict. nome_backend, immagine e livello_log sono le opzioni attualmente disponibili. -
Il risultato finale viene ora trasmesso anche dopo i risultati intermedi quando si specifica un
callbackaqiskit_ibm_runtime.IBMRuntimeService.run()o qiskit_ibm_runtime.RuntimeJob.stream_results().
0.1.0rc2
Nuove funzioni
- Per comodità, è ora possibile impostare
IBM Cloud service namecome valore del parametroinstance. Se si sceglie di impostare il nome anzichéCRN, il tempo di inizializzazione della classeqiskit_ibm_runtime.IBMRuntimeServiceè leggermente superiore, perché il valore richiestoCRNviene risolto internamente tramite le API IBM Cloud.
Correzioni di bug
- qiskit_ibm_runtime.utils.json.RuntimeEncoder e qiskit_ibm_runtime.utils.json.RuntimeDecoder sono stati aggiornati per gestire le istanze della classe Istruzione.
- Corretto un problema per cui gli ndarray numpy con tipi di oggetti non potevano essere serializzati. qiskit_ibm_runtime.utils.json.RuntimeEncoder e qiskit_ibm_runtime.utils.json.RuntimeDecoder sono stati aggiornati per gestire questi ndarray.
0.1.0rc1
Nuove funzioni
- È ora possibile passare il parametro
instancenel formato hub/gruppo/progetto aqiskit_ibm_runtime.IBMRuntimeService.jobs()per filtrare i lavori. Attualmente è supportato solo per l'autenticazione legacy. - È ora possibile utilizzare il metodo qiskit_ibm_runtime.RuntimeJob.interim_results() per recuperare i risultati intermedi del programma in fase di esecuzione. Si noti che i risultati intermedi saranno disponibili solo per un massimo di due giorni.
Note sull'aggiornamento
- Per essere coerenti con le altre proprietà della qiskit_ibm_runtime.RuntimeJob i metodi job_id e backend sono stati convertiti in proprietà.
- Quando si carica un programma con
qiskit_ibm_runtime.IBMRuntimeService.upload_program(), la descrizione del programma è ora facoltativa. - Quando si stampano programmi con
qiskit_ibm_runtime.IBMRuntimeService.pprint_programs(), ora viene elencatobackend_requirements.
Correzioni di bug
- È stato risolto un problema con la codifica e la decodifica di JSON quando si utilizza
ParameterExpressions in combinazione con Qiskit Terra 0.19.1 e successivi. In precedenza, le istanze diParameterricostruite dall'output JSON avevano identificatori univoci diversi, che le facevano sembrare non uguali all'input. Ora avranno le identità di supporto corrette.