Skip to main content
IBM Quantum Platform

IBM Quantum Note di rilascio di Compute Client


0.49.0 (10 agosto 2026)

Note sull'aggiornamento

  • Le classi di opzioni del pacchetto options_models sono ora basate su di Pydantic BaseModel anziché su dataclass. ( 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 come IBMQuantumComputeService. ( 3070 )

Note di deprecazione

  • L'uso di stdlib asdict con le classi di opzioni del options_models pacchetto è ora deprecato, poiché ora si tratta di modelli Pydantic. Utilizza invece direttamente options.model_dump() per serializzarli in un file dict. ( 3042 )
  • L'opzione post_selection NoiseLearnerV3 è ora deprecata e verrà rimossa in una versione futura. ( 3160 )

Nuove funzioni

  • Aggiunte le istruzioni MidCircuitReset e il passaggio del ConvertToMidCircuitResetAndMeasure transpiler. Il nuovo pass amplia le funzionalità ConvertToMidCircuitMeasure esistenti sostituendo anche le istruzioni reset non 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 persist parametro facoltativo a FakeBackendV2.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 invece persist=False i dati aggiornati in una directory temporanea, il che consente refresh() l'esecuzione dell'operazione anche quando il pacchetto è installato in una posizione di sola lettura (ad esempio, una site-packages directory a livello di sistema) dove, altrimenti, la sovrascrittura dei file inclusi nel pacchetto causerebbe un errore PermissionError. In quella modalità, il backend viene aggiornato solo per la sessione corrente e le modifiche non vengono salvate su disco. ( 2977 )
  • IBMBackend ora dispone di un attributo physical_qubits che restituisce il numero di qubit fisici del backend (qubit programmabili, qubit di reset e accoppiatori considerati complessivamente). L'attributo è disponibile anche FakeBackendV2 per i backend che non sono stati ritirati. ( 3080 )
  • L' URL e IAM utilizzato da QiskitRuntimeService.instances() può ora essere sovrascritto dalla variabile d'ambiente IAM_URL , seguendo la stessa convenzione delle variabili GLOBAL_CATALOG_URL GLOBAL_SEARCH_URL e 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, ora RuntimeDecoder viene visualizzato un messaggio chiaro che suggerisce di effettuare l'aggiornamento con pip install -U qiskit quando 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 da qiskit_ibm_runtime.fake_provider ma che mancavano dall'elenco dei backend del provider, oltre a quelli che restituiva già: FakeAachen, FakeBerlin, FakeBoston, FakeBrussels, FakeKingston, FakeMiami, FakePittsburgh, e FakeStrasbourg. In precedenza, l'esecuzione di ( FakeProviderForBackendV2().backend(name="fake_kingston") e delle altre sette) generava un QiskitBackendNotFoundError anche 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 di Executor possono ora far ruotare i propri circuiti con il "local_c1" gruppo "twirling", supportato da Samplomatic versione 0.17.0 e successive. ( 2925 )

Note di deprecazione

  • Tutte le classi che rappresentano i risultati sono ora disponibili tramite il qiskit_ibm_runtime.results pacchetto; di conseguenza, le seguenti classi sono state spostate nel pacchetto results:

    • PauliLindbladError, LayerError, NoiseLearnerResult (in precedenza facente parte di qiskit_ibm_runtime.utils.noise_learner_result)
    • EstimatorPubResult (in precedenza parte di qiskit_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 SamplerV2 un’attività con valori diversi pub.shots nei vari PUB è sconsigliata. Allo stesso modo, l'esecuzione di EstimatorV2 un’operazione con valori diversi pub.precision tra i vari PUB è sconsigliata. ( 2992 )

  • L'impostazione MeasureNoiseLearningOptions.shots_per_randomization su un int valore è 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 opzionale partial ( 2884 ):

    • Se il partial flag è False, il metodo restituirà 0 fino al completamento del calcolo dell'utilizzo del lavoro.
    • Se il partial flag è True, il metodo restituirà l'utilizzo parziale incrementale del lavoro indipendentemente dal fatto che il calcolo sia stato completato.
  • 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" in QiskitRuntimeService e QiskitRuntimeService.save_account(). L'utilizzo di passing instance="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_gates parametro a QiskitRuntimeService.least_busy(), in modo che il suo comportamento corrisponda a quello dello stesso parametro in QiskitRuntimeService.backend(). Se impostato su True, 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 RuntimeJobV2 e RuntimeJobV2.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 FoldRzzAngle del transpiler in cui Rzz i gate il cui angolo coincideva esattamente con il +-pi confine (ad esempio 3*pi, -3*pi, 7*pi) venivano raggruppati in un circuito che differiva da quello originale di una fase globale pari a pi. Il passaggio ora ricava la parità di avvolgimento persa 2*pi direttamente 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()di EstimatorV2.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 rzz durante 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 a pi/2. Il bug viene risolto impostando nel target angle_bounds del backend su (0, pi/2) per il rzz gate, e registrando un rzz wrapper nel passaggio del WrapAngles transpiler. Questo meccanismo sostituisce l'uso del IBMDynamicFractionalTranslationPlugin plugin e della FoldRzzAngle fase di transpiler. ( 2960 )

Altre note

  • La libreria ora utilizza la versione 2026-04-15 dell'API REST di Qiskit Runtime. ( 2845 )
  • Il plugin IBMFractionalTranslationPlugin transpiler, 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 Executor e QuantumProgram, che consentono di sfruttare appieno le funzionalità offerte dal pacchetto Samplomatic.

  • È stata aggiunta la classe NoiseLearnerV3 per 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 durante QiskitRuntimeService l'istanziazione, con i nomi dei servizi, global_catalog e resource_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() a qiskit_ibm_runtime.visualization per 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 semplificato ChunkTiming.draw() per il caso di un unico risultato tramite job.result().timing.draw(). ( 2727 )

  • -aPartendo dallo script per la creazione di snapshot del backend fittizio introdotto nel 2711, lo script ora genera __init__.py anche i file e fake_<backend_name>.py per ogni backend e aggiunge un nuovo argomento /--account per 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, e FakeStrasbourg. ( 2736 )

Note sull'aggiornamento

  • I RuntimeJobV2.result() metodi e RuntimeJobV2.wait_for_final_state() ora accettano un parametro facoltativo poll_interval , che consente di personalizzare l'intervallo tra le richieste al servizio. Il valore predefinito è ora 0.5 di secondi per i lavori non in sessione e di 0.1 secondi per i lavori in sessione. ( 2762 )

Note di deprecazione

  • I pacchetti extras dell' Python e sono stati rifattorizzati:

    • common e documentation sono obsolete e verranno rimosse nella versione v0.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'opzione dev extra continua a consentire l'installazione di una suite di sviluppo completa. ( 2707 )

Correzioni di bug

  • `GlobalSearchV2Gli proxies argomenti e ssl_verification per QiskitRuntimeService vengono ora trasmessi alle richieste sottostanti di HTTP ai servizi, GlobalCatalogV1, e IAMAuthenticator , consentendo di istanziare QiskitRuntimeService correttamente quando si utilizza un proxy. ( 2592 )
  • È stata aggiunta la possibilità di specificare calibration_id e use_fractional_gates durante l'inizializzazione di una sessione da un session_id. Questo risolve alcuni bug noti, in particolare il fatto che l'istanziazione di un Session oggetto tramite from_id non preserva né il valore di calibration_id impostato durante l'istanziazione iniziale dell'oggetto originale Session , né il valore di use_fractional_gates impostato durante l'istanziazione iniziale del backend. ( 2652 )
  • filter``NoiseLearner.run() ora supporta correttamente i generatori, map le 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_scm versione precedente era stato ~=8.0 erroneamente 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 rzz i gate nella base dei gate del backend per decidere se utilizzare la cache o creare un nuovo oggetto backend. Ora .QiskitRuntimeService controllerà sia i gate rzz che rx i 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 QiskitRuntimeService le 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 flag use_fractional_gates=True verifichi la presenza di uno o entrambi Rx i gate e Rzz , anziché solo Rzz dei gate nella base del backend. ( 2520 )

Altre note

  • La versione minima richiesta di Qiskit è ora 2.0.0, poiché la 1.x serie 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 versione qiskit-ibm-runtimev0.45. ( 2574 )

Correzioni di bug

  • Durante la creazione degli oggetti backend, .QiskitRuntimeService in precedenza controllava solo rzz i gate nella base dei gate del backend per decidere se utilizzare la cache o creare un nuovo oggetto backend. Ora .QiskitRuntimeService controllerà sia i gate rzz che rx i 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 QiskitRuntimeService le 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=True in QiskitRuntimeService.backend(), IBMInputValueError verrà generata un'eccezione. ( 2405 )

  • Il resolver di URL è stato aggiornato in modo che entrambi i canali ibm_cloud``ibm_quantum_platform e generino ora lo stesso punto di ingresso di runtime URL (https://quantum.cloud.ibm.com/api/v[x]). In precedenza, il ibm_cloud canale 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'argomento included_channels di input. ( 2492 )

  • È stato aggiunto un nuovo argomento merge_common_instructions di input draw_circuit_schedule_timing() che, se impostato su True, 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) al fake_provider modulo.

    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, FakeNighthawk ha mostrato un miglioramento del 600% nella profondità del circuito rispetto a un backend Heron. ( 2476 )

  • Il qiskit_ibm_runtime.transpiler.passes modulo è stato ampliato con un nuovo passaggio del transpiler: ConvertMidCircMeas. Questo passaggio individua le istruzioni non terminali Measure presenti 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 schema measure_[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_2 a measure_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 gli proxies attributi verify e da QiskitRuntimeService in IAMTokenManager quando 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 CircuitSchedule come input opzionale a draw_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 QiskitRuntimeService con un account salvato, i warning messaggi di log di livello relativi al nome dell'account salvato (o all'account predefinito) sono stati ridotti al info livello. ( 2445 )

0.43 (14 ottobre 2025)

Note di deprecazione

  • È stato aggiunto un nuovo target argomento 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'argomento durations .

    La DynamicCircuitInstructionDurations classe, utilizzata nei cicli di pianificazione personalizzati, è stata dichiarata deprecata a partire dalla versione qiskit-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 `durations nei 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'argomento target . ( 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_runtime pacchetto è stato ampliato con due nuovi moduli: circuit e circuit.library. Questi moduli sono progettati per rispecchiare la struttura dei corrispondenti qiskit moduli 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 denominazione measure_<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 argomento custom_name_mapping ed espone i flag add_delay e filter_faulty dell'implementazione originale del nucleo. (2316 )

  • QiskitRuntimeService.backends() e QiskitRuntimeService.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 su True, come mostrato di seguito. Attualmente è disponibile solo per i lavori su Sampler .

    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 CircuitSchedule per 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 ConvertISAToClifford supporta 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 QiskitRuntimeService viene 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, e plans_preference) e le istanze disponibili. Se plans_preference non è 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 QiskitRuntimeService utilizzando solo un token API (chiave). Poiché il ibm_quantum nome del canale è stato rimosso ed entrambi i ibm_cloud canali e ibm_quantum_platform puntano alla stessa API, il channel parametro 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'ambiente callback, deprecata (0.38.0), e i parametri BaseRuntimeJob , client_params e user_callback, sono stati rimossi.

    Anche la classe RuntimeJob è stata rimossa. Tutte le primitive restituiscono lavori come RuntimeJobV2. 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_times in QasmBackendConfiguration per 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 tramite to_dict(), in linea con il comportamento di altri parametri temporali: rep_delay_range e default_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 IBMInputValueError durante la creazione di un Session / Batch

    Inoltre, QiskitRuntimeService.least_busy() ora restituisce correttamente il backend meno carico nei casi in cui venga passato il instance parametro 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:

Note sull'aggiornamento

  • A causa del tramonto di IBM Quantum Platform Classic, il canale ibm_quantum non è più supportato da qiskit-ibm-runtime. Gli account e i dati salvati del canale ibm_quantum non saranno accessibili. Utilizzare invece il canale ibm_quantum_platform . Per maggiori dettagli, consultare la nostra guida alla migrazione. (2289 )

Nuove funzioni

  • È stato aggiunto un nuovo parametro, tags, all'inizializzatore e QiskitRuntimeService.save_account() al QiskitRuntimeService metodo. tags può 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, region o plans_preference , ora viene sollevato un errore all'inizializzazione. Assicurarsi che i nomi di tags e region inseriti corrispondano esattamente all'istanza tags o region (senza distinzione tra maiuscole e minuscole). Per plans_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-runtime con Python 3.9 è stato deprecato e sarà rimosso in una prossima versione.

    Inoltre, qiskit-ibm-runtime supporta ufficialmente Python 3.13. (2314 )

  • Quando si salva un conto, ora viene eseguito un controllo di convalida per verificare che i parametri region, plans_preference e tags siano 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 il instance parametro, che può essere utilizzato per filtrare i lavori. ( 2325 )

  • QiskitRuntimeService.usage() è stato aggiornato per includere un usage_remaining_seconds campo. Questo campo include la differenza tra il valore riportato usage_limit_seconds o usage_allocation_seconds (a seconda di come è configurata l'istanza) e usage_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 su True per 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, il QiskitRuntimeService.least_busy() metodo è stato aggiornato per sfruttare le funzionalità aggiornate BackendsResponseV2 , il che lo rende notevolmente più veloce. ( 2323 )

  • La classe TwirledSliceSpan dispone di un nuovo membro data_slice_version dati di tipo intero, con valore predefinito 1. Se impostato su 2, le tuple delle sezioni di dati contengono informazioni relative alle immagini " PUB ", utilizzate per TwirledSliceSpan.mask() definire la struttura dell'array restituito. L'ultimo asse verrà troncato, in modo tale che la sua lunghezza venga ridotta a pub_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 BasePrimitive cui le primitive istanziate all'interno di un Session gestore di contesto o Batch senza il mode parametro recuperavano il backend dal servizio (in base al nome) invece di utilizzare il backend passato a o Session Batch. Ciò potrebbe causare problemi nel caso in cui il Session backend o Batch fosse 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'oggetto Session backend o Batch viene utilizzato direttamente. ( 2282 )
  • È stato risolto un problema per IBMBackend cui le modifiche alle proprietà, come quelle apportate a basis_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 il data_slice_version campo da TwirledSliceSpan; gli span delle sezioni twirled che tengono conto dei pub shot sono ora gestiti da una nuova classe. ( 2347 )

Altre note

  • Gli attributi obsoleti IBMBackend e max_experiments``max_shots sono stati rimossi e il IBMBackend.max_circuits() metodo ora restituisce None. Per ulteriori dettagli, consulta la guida sui limiti di lavoro. ( 2235 )
  • I metodi defaults() e FakeBackendV2 , ormai obsoleti IBMBackend , 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 elemento PUB che non è contenuto nell'elemento span. ( 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 o QiskitRuntimeService.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 rzz al di fuori dell'intervallo consentito da 0 a π/2\pi/2 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 esistenti ibm_quantum (ora deprecato) e ibm_cloud . Per impostazione predefinita, quando non viene specificato alcun canale, viene selezionato ibm_quantum_platform . Questo nuovo canale si collega alla nuova API di IBM Quantum Platform ed è destinato a sostituire ibm_cloud. Nel frattempo, il canale ibm_cloud verrà reindirizzato alla nuova API, ma se ne sconsiglia l'uso continuato.

    • Non è più necessario specificare instance un valore per il salvataggio (QiskitRuntimeService.save_account()) o l'inizializzazione (QiskitRuntimeService()) di un account sulla nuova piattaforma (ibm_quantum_platforme, temporaneamente, ibm_cloud sui 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 a QiskitRuntimeService.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 e QiskitRuntimeService.backends() sono stati aggiornati per accettare un instance passato esplicitamente durante il recupero dei backend: service.backend(name="...", instance="...").

    • Sono stati aggiunti nuovi parametri, region, e plans_preference, all'inizializzatore QiskitRuntimeService e QiskitRuntimeService.save_account() al metodo. Questi possono essere utilizzati per assegnare priorità a determinate istanze sulla nuova piattaforma (eibm_quantum_platform, temporaneamente, ibm_cloud ai canali) senza specificare esplicitamente l' CRN. Più nel dettaglio:

      • region: Imposta la preferenza di una regione. us-east o eu-de.
      • plans_preference: È un elenco di tipi di conto, ordinati per preferenza. Un'istanza del primo tipo nell'elenco sarà prioritaria.

      Ad esempio, se region viene salvato come us-east, verranno controllate solo le istanze di us-east . Se plans_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 in plans_preference devono corrispondere esattamente ai nomi delle API (senza distinzione tra maiuscole e minuscole).

    • Il instance parametro di input di QiskitRuntimeService è stato esteso per accettare nuovi tipi di input per i ibm_quantum_platform canali e ibm_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 i ibm_quantum_platform canali e ibm_cloud , oltre al canale già abilitato ibm_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 private in EnvironmentOptions è ora supportata sui canali ibm_cloud e ibm_quantum_platform (nuova piattaforma IBM Quantum). Quando questa opzione è impostata su True, 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() in target() è 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 EstimatorV2 pub 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_new alle classi Batch e Session . 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 è, True poiché è quella utilizzata nella maggior parte dei flussi di lavoro destinati agli utenti. Tuttavia, metodi come Session.from_id() impostarlo su False per 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 Optional per il backend parametro in Session e Batch. ( 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 )
  • IBMInputValueError ora eredita da ValueError, oltre alla classe madre esistente IBMError. Alcune funzioni di convalida che prima sollevavano eccezioni ValueError ora sollevano eccezioni IBMInputValueError . (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 da RuntimeJobV2 in tutte le implementazioni primitive, quindi la sua deprecazione non dovrebbe avere alcun impatto sugli utenti. La differenza principale tra le due classi è che status() la prima restituisce una stringa anziché l'enum di Qiskit JobStatus . ( 2170 )
  • Poiché i pulse gate non sono più supportati, il IBMBackend metodo defaults() e FakeBackendV2 è 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_platform e local saranno gli unici canali validi. Per informazioni sulla migrazione al nuovo IBM Quantum Platform sul canale ibm_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() e TwirledSliceSpan.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'ambiente callback è deprecata, così come i parametri client_params e user_callback in BaseRuntimeJob. (2143 )

0.37.0 (13/03/2025)

Note di deprecazione

  • Gli attributi IBMBackend max_shots e max_experiments e la proprietà max_circuits sono 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 a pulse e channel sono evidenziate di seguito:

    • Channel in IBMBackend sono stati rimossi.
    • La classe di configurazione del backend PulseBackendConfiguration è stata rimossa, quindi tutti i backend saranno ora restituiti come QasmBackendConfiguration.
    • PulseDefaults (default del backend) possono ancora essere recuperati, ma non sono più necessari quando si crea un backend Target.

    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 in 0.28.0, i lavori restituiti da jobs() verranno ora indirizzati per impostazione predefinita a RuntimeJobV2. ( 2156 )

0.36.1 (14/02/2025)

Correzioni di bug

  • È stato risolto un problema per cui la mancata installazione di qiskit-aer causava 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_model sui simulatori cloud. Questa opzione funziona ancora in modalità di test locale.
    • Le proprietà NoiseLearnerResult generators e rates sono state rimosse. È ancora possibile accedervi nella proprietà error .
    • La funzione di utilità get_runtime_api_base_url() è stata rimossa. (2124 )

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-runtime non 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 utilizza backend.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 IBMInputValueError se i valori dei parametri specificati in PUB fanno sì che un'espressione dei parametri valuti un angolo non valido (negativo o maggiore di pi/2). (2093 )
  • In caso di interruzione della manutenzione, quando si cerca di inizializzare il sito QiskitRuntimeService viene 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 classe PrimitiveJob di Qiskit e aggiunge i metodi e le proprietà presenti in BaseRuntimeJob. 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, FakeFez e FakeMarrakesh. Si tratta di dispositivi Heron a 156 qubit. (2112 )

0.34.0 (5 dicembre 2024)

Nuove funzioni

  • Aggiunte le funzioni draw_zne_evs e draw_zne_extrapolators per visualizzare i dati degli esperimenti con ZNE. Aggiunto EstimatorPubResult con i metodi draw_zne_evs e draw_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_model viene ora trasmessa a BackendSamplerV2 come 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_type viene ora tradotta nelle meas_level opzioni e meas_return all'interno run_options di del BackendSamplerV2SamplerV2 , se quest'ultimo supporta run_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 parametri rzz siano compresi nell'intervallo tra 0 e pi/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 plugin IBMFractionalTranslationPlugin di traduzione per il transpiler e un passaggio. Questo plugin viene applicato automaticamente ai backend recuperati tramite l' use_fractional_gates opt-in, e il passaggio di folding viene aggiunto quando il backend di destinazione include il RZZ gate.

    Il nuovo passaggio modifica il circuito quantistico di ingresso, in modo che tutte le porte RZZ del 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.0 sono state rimosse.

    • Il passaggio di un backend come stringa in Session, Batch, Sampler e Estimator non è più valido. Utilizzare invece l'oggetto backend effettivo.
    • In precedenza, passando un backend come modalità in SamplerV2 o EstimatorV2 , 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.
    • Service non è più un parametro valido in Session e Batch. (2027 )

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 a RuntimeEncoder in modo che ora possa essere passato al programma NoiseLearner . ( 2026 )
  • Il comportamento dell'argomento use_fractional_gates di QiskitRuntimeService.backend() è stato modificato. Quando l'opzione è impostata su False, ora filtra tutti i riferimenti ai gate frazionari dai dati di configurazione e dalle proprietà dell'API. Allo stesso modo, quando l'opzione è impostata su True, 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 impostando use_fractional_gates su None verranno 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 pydantic a <2.10 per evitare che una regressione interrompa il processo di compilazione. (2049 )

Altre note

  • I file requirements.txt e setup.py sono stati rimossi in favore di un nuovo approccio alla gestione delle dipendenze che utilizza pyproject. 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 )

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ù LayerError oggetti. È stato inoltre aggiunto il metodo draw_swarm() di convenienza per richiamare la funzione di disegno su una specifica istanza. ( 1988 )
  • Aggiunto TwirledSliceSpan, un ExecutionSpan da 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, FakeTokyo e FakeRueschlikon sono 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ù ExecutionSpans oggetti. È stato inoltre aggiunto il metodo draw() 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 DoubleSliceSpan un ExecutionSpan per l'elaborazione in batch con due sezioni. ( 1982 )

  • Ciascuno tra SamplerV2, EstimatorV2, e noise_learner.NoiseLearner dispone ora di un backend() metodo che restituisce il backend con cui è configurata la classe. ( 1995 )

Note sull'aggiornamento

  • Le deprecazioni della versione 0.25.0 sono state rimosse.

    • optimization_level non è più un'opzione valida per EstimatorV2.
    • I metodi di lavoro interim_results() e stream_results() sono stati eliminati. (1965 )
  • Il parametro channel_strategy in QiskitRuntimeService è stato rimosso. Per continuare a utilizzare Q-CTRL nel vostro flusso di lavoro, esplorate le seguenti opzioni:


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 rzz sia 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 invece default_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:

  • In una versione futura, RuntimeJob.status() sarà restituito come stringa invece che come istanza di JobStatus. (1933)

Nuove funzioni

  • Sono stati aggiunti i nuovi metodi Session.usage(), Batch.usage() e Job.usage() che restituiscono informazioni sull'uso dei lavori e delle sessioni. Per maggiori informazioni, cliccare qui. (1827 )

  • Aggiunto passaggio di transpilazione ConvertISAToClifford per convertire le porte di un circuito in porte Clifford. (1887 )

  • È stato aggiunto url_resolver un parametro facoltativo al QiskitRuntimeService costruttore per consentire la generazione personalizzata dell'API Qiskit Runtime URL in base ai valori forniti urlper, instance e private_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_gates per QiskitRuntimeService.backend() e QiskitRuntimeService.backends() può ora essere None. Quando è impostato su None, 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.0 sono 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 da mode
    • La specificazione di opzioni senza la struttura completa del dizionario non è più supportata
    • Job.program_id() è stato sostituito con Job.primitive_id()
    • Service.run() e Session.run() sono stati sostituiti da un metodo privato, _run()
    • In Service.backend(), "nome" è ora un parametro obbligatorio
    • Service.get_backend() è stato rimosso e sostituito con backend() (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_model sarà ancora un'opzione accettabile quando si utilizza la modalità di test locale. (1892 )

Nuove funzioni

  • Abbiamo aggiunto nuove classi, ExecutionSpan e ExecutionSpanSet. 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 private sotto EnvironmentOptions. (1888 )
  • Aggiunta l'opzione fallback agli estrapolatori ZNE. (1902 )

Correzioni di bug

  • Portato il metodo Noise_model.from_dict() da qiskit-aer perché è stato rimosso in 0.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

  • ResilienceOptionsV2 ha un nuovo campo layer_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 da layer_noise_model. (1858 )

Note sull'aggiornamento

  • Le primitive " V1 " e SamplerV1 EstimatorV1 sono state completamente rimosse. Consulta l’ Introduzione alle primitive per scoprire come utilizzare le primitive di “ V2 ”. ( 1857 )
  • Il parametro service è ora richiesto in Session.from_id(). (1868 )

0.27.1 (12 agosto 2024)

Nuove funzioni

  • Aggiunta la logica per codificare e decodificare PauliLindbladError e LayerError. (1853 )

0.27.0 (8 agosto 2024)

Nuove funzioni

  • Aggiunte le classi PauliLindbladError e LayerError per 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, EstimatorV2 e SamplerV2 è stato deprecato. Utilizzare invece l'oggetto backend effettivo. (1804 )
  • Passando un backend come modalità in SamplerV2 e EstimatorV2 attualmente si esegue un lavoro in modalità lavoro anche se all'interno di un gestore di contesto Session o Batch . Questo comportamento è deprecato e in una versione futura la Sessione/Batch avrà la precedenza. (1816 )
  • Il passaggio di service in Session, Batch è stato deprecato. Il parametro service non è più necessario perché il servizio può essere estratto dal backend. (1826 )
  • Poiché i moduli backend di qiskit.providers.models , compresi BackendProperties e BackendConfiguration , sono deprecati in Qiskit 1.2, sono stati copiati in qiskit-ibm-runtime. Assicuratevi di aggiornare alla versione più recente, 0.26.0, per utilizzare queste classi. (1803 )

Nuove funzioni

  • I metodi properties, defaults, configuration e check_faulty sono stati aggiunti a FakeBackendV2. (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 canale QiskitRuntimeService valido.

    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 NoiseLearner e le funzionalità correlate, come NoiseLearnerOptions e NoiseLearnerResults. (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 a IBMBackend.target() restituiva erroneamente l'obiettivo memorizzato nella cache. (1791 )
  • È stata rimossa la convalida delle opzioni per verificare se zne_mitigation o pec_mitigation sono impostate su True quando 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_level in EstimatorV2 è 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() e qiskit_ibm_runtime.RuntimeJob.stream_results() sono ora tutti deprecati. (1776 )

Nuove funzioni

  • Aggiunti i metodi backend, backends e least_busy a QiskitRuntimeLocalService. (1764 )
  • Aggiunta una proprietà instance a BaseRuntimeJob che restituisce l'istanza in cui è stato eseguito il lavoro. (1771 )
  • default_shots sono ora un'opzione supportata quando si usa EstimatorV2 in 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

  • name sarà ora un parametro obbligatorio in backend(). backend() non restituirà più il primo backend tra tutti i backend se name non 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 privato qiskit_ibm_runtime.QiskitRuntimeService._run().

    qiskit_ibm_runtime.Session.run() è deprecato e sarà sostituito da un metodo privato qiskit_ibm_runtime.Session._run().

    qiskit_ibm_runtime.RuntimeJob.program_id() è deprecato e sarà sostituito da qiskit_ibm_runtime.RuntimeJob.primitive_id(). (1238 )

  • backend L'argomento in Sampler e Estimator è stato deprecato. Si prega di utilizzare mode invece. session Anche l'argomento in Sampler e Estimator è stato deprecato. Si prega di utilizzare mode invece. ( 1556 )

  • qiskit_ibm_runtime.QiskitRuntimeService.get_backend() è deprecato. Si prega di qiskit_ibm_runtime.QiskitRuntimeService.backend() utilizzare invece questo. FakeBackendAnche i backend fittizi " V1 ", insieme a FakeProvider , sono stati dichiarati obsoleti a favore dei backend fittizi " V2 " e FakeProviderForBackendV2. ( 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 parametro mode può 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_endpoint che, se impostato su True, 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 file QiskitRuntimeService.

    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.EstimatorOptions per 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 nuova IBMBackend istanza, 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 di RuntimeJobV2 . (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_cycles opzioni e coupling_map in PadDynamicalDecoupling. Questa combinazione consente di selezionare un disaccoppiamento dinamico sfalsato con più cicli di sequenza in ciascun ritardo che superi la soglia impostata da sequence_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

Nuove funzioni

  • La stampa di Options e OptionsV2 sarà ora formattata come una tabella. (1490 )
  • Aggiungi block_ordering_callable l'argomento a BlockBasePadder, PadDynamicalDecoupling, PadDelay, e BaseDynamicCircuitAnalysis. Ciò consente all'utente di costruire blocchi utilizzando un algoritmo a propria scelta. Non vengono effettuate ipotesi né verifiche sulla validità dell'output generato dal block_ordering_callable . Alla base di questa argomentazione c'è il fatto che, per alcune famiglie di circuiti, la funzione block_order_op_nodes esistente 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 )
  • SamplerV2 ora 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

  • RuntimeJobV2 non 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 RuntimeJobV2 non aggiornava lo stato quando veniva chiamato. ( 1547 )

0.22.0 (21 marzo 2024)

Note sull'aggiornamento

  • Modifica skip_reset_qubits il flag opzionale del costruttore per PadDynamicalDecoupling. 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_provider o un'istanza di Qiskit Aer backend. (1495 )

Correzioni di bug

  • Correzione di un bug che faceva sì che l'impostazione di resilience_level=0 in EstimatorV2 venisse ignorata (e venisse invece usato il valore predefinito). (1541 )

0.21.2 (18 marzo 2024)

Correzioni di bug

  • Corretto un bug per cui RuntimeDecoder poteva importare classi arbitrarie. (1527 )

0.21.1

Correzioni di bug

  • È stato risolto un problema che impediva l'importazione di SamplerV1 e EstimatorV1 a 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, backend sarà un parametro obbligatorio per qiskit_ibm_runtime.Sampler e qiskit_ibm_runtime.Estimator se session non è specificato, anche se si utilizza il canale ibm_cloud .

    Sarà anche un parametro richiesto per qiskit_ibm_runtime.Session e qiskit_ibm_runtime.Batch.

Correzioni di bug

  • È stato risolto un problema con IBMBackend.target che 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_barrier al 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 /sessions che consente diverse modalità di esecuzione. La modalità batch è ora supportata da Batch, mentre Sessione funzionerà come prima. Per ulteriori informazioni, consultare la sezione " Run/Sessions".

    Si noti che Session e Batch creati da qiskit-ibm-runtime prima di questa release non saranno più supportati dopo il 31 marzo 2024. Aggiornate la versione di qiskit-ibm-runtime il 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 /sessions punto 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 di qiskit-ibm-runtime il 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 di PadDelay.

0.19.1

Note sull'aggiornamento

  • Estendere DynamicCircuitInstructions.from_backend() per estrarre e applicare le durate da entrambi gli oggetti BackendV1 e BackendV2 . Aggiungere anche DynamicCircuitInstructions.from_target() per utilizzare un oggetto Target .

Correzioni di bug

  • Correggere il patching di DynamicCircuitInstructions per le istruzioni con durata diversa da dt.
  • È stato risolto un problema con la funzione qpy.dump() : quando il flag use_symengine era impostato su un oggetto vero che valutava True ma non era in realtà il booleano True , 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_time a IBMBackend.open_session().
  • Aggiunto un metodo RuntimeJob.queue_info() per ottenere le informazioni sulla coda dal backend. Questa funzione è stata trasferita da qiskit_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 campo params per 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 error

    se 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-ctrl mentre q-ctrl non viene passato come channel_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 di qiskit-ibm-provider.

  • Se q-ctrl viene passato come channel_strategy e l'istanza del conto non ha q-ctrl abilitato, 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 metodo results() .

Note di deprecazione

  • L'uso del file ~/.qiskit/qiskitrc.json per 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 backend in from_id() è stato deprecato perché le sessioni non supportano più backend. Inoltre, il parametro service non è più facoltativo.
  • Gli input di esecuzione circuit_indices e observable_indices per Estimator e Sampler sono stati completamente rimossi.

Altre note

  • Aggiunto codice di migrazione per l'esecuzione di backend.run in 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 instance predefinito 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 Session come 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 shots passato 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 quel channel_strategy saranno 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=True in QiskitRuntimeService.save_account().
  • Aggiunto il nuovo metodo Session.from_id che 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 su True. 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 default al parametro channel_strategy in qiskit_ibm_runtime.QiskitRuntimeService. Ora, se un account è configurato con una certa strategia di canale, l'utente può sovrascriverla passando default.
  • 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 datetime per recuperare le proprietà da una data passata.
  • Le opzioni noise_factors e extrapolator in qiskit_ibm_runtime.options.ResilienceOptions vengono ora impostate come predefinite su None , a meno che resilience_level non sia impostato a 2. Verranno impostate solo le opzioni rilevanti per il livello di resilienza, quindi quando si usa resilience_level 2, noise_factors continuerà a essere impostato come predefinito su (1, 3, 5) e extrapolator su LinearExtrapolator. Inoltre, le opzioni con valore None non 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 canale ibm_cloud non 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_strategy che può essere impostato nell'inizializzazione di qiskit_ibm_runtime.QiskitRuntimeService o salvato in qiskit_ibm_runtime.QiskitRuntimeService.save_account(). Se channel_strategy è impostato su q-ctrl, tutti i lavori all'interno del servizio utilizzeranno la strategia di mitigazione degli errori Q-CTRL.

Note sull'aggiornamento

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_tags di un lavoro.
  • Se instance è fornito come parametro a qiskit_ibm_runtime.QiskitRuntimeService, viene utilizzato come filtro in QiskitRuntimeService.backends(). Se instance non è 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


0.11.0

Nuove funzioni

  • Quando si recupera un lavoro con qiskit_ibm_runtime.IBMRuntimeService.job() , params non 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 CouplingMap quando 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

Note di deprecazione

  • Passare un nome di backend o un'istanza di backend al parametro session quando si inizializza un oggetto qiskit_ibm_runtime.Sampler o qiskit_ibm_runtime.Estimator è stato deprecato. Utilizzare invece il parametro backend . È possibile continuare a passare una sessione utilizzando il parametro session .

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 transpilation e environment .

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, service e skip_transpilation sono stati rimossi da Sampler.

    Allo stesso modo, gli argomenti deprecati circuits, observables, parameters, service e skip_transpilation sono stati rimossi da Estimator.

    In QiskitRuntimeService, il parametro auth è stato rimosso. Inoltre, i parametri instance, job_tags e max_execution_time sono stati rimossi da qiskit_ibm_runtime.QiskitRuntimeService.run(). Possono invece essere passati attraverso RuntimeOptions .

    All'interno di RuntimeOptions backend_name non è più supportato. Utilizzare invece backend .

Correzioni di bug

  • È stato risolto un bug per cui il recupero di un lavoro da un backend senza le opzioni noise_model o seed_simulator dava 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'ambiente QISKIT_RUNTIME_SKIP_OPTIONS_VALIDATION viene 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 in resilience_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_time al metodo program\run e qiskit_ibm_runtime.RuntimeOptions. Ora i valori inseriti dall'utente per la sessione max_time saranno inviati al server come session_time. Ciò consente agli utenti di specificare valori diversi per le sessioni max_time e max_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 come options = {"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_id e backend, 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_level e per resilience_level non venivano impostati correttamente.
  • È stato risolto un problema per cui, se non era selezionato alcun backend, optimization_level e resilience_level venivano impostati come predefiniti su None, 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_name che 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

  • backend non è 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

  • ECRGate e CZGate sono state aggiunte al costruttore Target per 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 Traceback del messaggio.

0.9.0

Note sull'aggiornamento

  • Modificati i valori predefiniti per optimization_level e per resilience_level in qiskit_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 e resilience_level su 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. Vedere qiskit_ibm_runtime.options.ResilienceOptions per tutte le opzioni disponibili.
  • È ora possibile specificare una coppia di decodificatori di risultati per il parametro result_decoder del 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_level per è stata modificata da 0 a 1. Inoltre, l'opzione predefinita di optimization_level è stata cambiata da 1 a 3.

Note di deprecazione

  • Le opzioni di transpilazione translation_method e timing_constraints sono state deprecate.

Correzioni di bug


0.7.0

Nuove funzioni

  • qiskit_ibm_runtime.Options accetta ora argomenti di parole chiave arbitrarie. Ciò consente agli utenti di specificare nuove opzioni per i programmi primitivi senza aggiornare qiskit_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.Options accetta ora max_execution_time come opzione di primo livello e job_tags come opzione sotto environment. 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-program e quantum_kernal_alignment sono stati deprecati a causa del loro scarso utilizzo.
  • Il passaggio del parametro instance al metodo qiskit_ibm_runtime.QiskitRuntimeService.run() è stato deprecato. Si può invece passare il parametro instance all'interno del parametro options .
  • Il passaggio di job_tags e max_execution_time come parametri a qiskit_ibm_runtime.QiskitRuntimeService è stato deprecato. Per favore, passateli all'interno di options.

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 SamplerResult con SamplerResult.quasi_dists come elenco di QuasiDistrbution. Si usava impostare un elenco di dict come SamplerResult.quasi_dists, ma non si seguiva il progetto di SamplerResult.
  • La classe RuntimeJob è ora una sottoclasse di qiskit.providers.Job.

Note di deprecazione


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 channel può 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 RuntimeJobMaxTimeoutError quando 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_settings e max_time ai costruttori :class:` qiskit_ibm_runtime.Sampler e qiskit_ibm_runtime.Estimator sono stati rimossi. È invece possibile utilizzare la classe qiskit_ibm_runtime.Options per specificare le impostazioni e max_time può 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'indirizzo limit , 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, e parameter_values, nonché service ai costruttori di Sampler e Estimator . Gli input possono ora essere passati al metodo run() delle classi primitive e service può essere passato a qiskit_ibm_runtime.Session quando si avvia una nuova sessione.

  • Il passaggio di skip_transpilation ai costruttori :class:` qiskit_ibm_runtime.Sampler e qiskit_ibm_runtime.Estimator è stato deprecato. Si può invece usare la classe qiskit_ibm_runtime.Options per 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-terra a 0.21.0, poiché l'ultima versione di qiskit-ibm-runtime non è compatibile con 0.20.0 o con le precedenti di qiskit-terra.

0.6.0

Note sull'aggiornamento

  • Durante la migrazione da qiskit-ibmq-provider le credenziali del canale ibm_quantum verranno 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 di ibm_quantum .

    Es:

    from qiskit_ibm_runtime import QiskitRuntimeService
    service = QiskitRuntimeService()
  • IBMEstimator che era stata deprecata in precedenza, ora è stata rimossa. Utilizzare la classe Estimator in futuro.

  • IBMRuntimeService che 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_after e created_before. Questi possono essere utilizzati per filtrare i lavori in base alla data di creazione in ora locale.

  • I parametri circuit_indices e observable_indices quando si chiama estimator sono ora deprecati e saranno rimossi in una versione futura. È ora possibile passare indici o oggetti usando i parametri circuits e observables .

    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_indices e observable_indices quando si chiama estimator sono ora deprecati e saranno rimossi in una versione futura. È ora possibile passare indici o oggetti usando i parametri circuits e observables .

    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 parametro session_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.

  • RuntimeJobTimeoutError viene ora sollevato quando scade il valore timeout impostato in result() o wait_for_final_state().

  • Quando si inizializza QiskitRuntimeService e viene utilizzato un token non valido, verrà sollevato IBMNotAuthorizedError invece di RequestsApiError.

  • IBMSampler che era stata deprecata in precedenza, ora è stata rimossa. Utilizzare la classe Sampler in futuro.

  • qubit_properties() restituirà ora una sottoclasse di QubitProperties chiamata IBMQubitProperties che esporrà l'anarmonicità in aggiunta a t1, t2 e alla frequenza già esposte dalla classe QubitProperties .


0.4.0

Note sull'aggiornamento

  • IBMRuntimeService è stato rinominato in QiskitRuntimeSerice. La classe IBMRuntimeService è 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, IBMEstimator e IBMSampler sono 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 classe qiskit_ibm_runtime.IBMRuntimeService e anche a metodi come save_account(), saved_accounts() e delete_account(). Può essere impostato su ibm_quantum o ibm_cloud per autenticarsi a uno dei due diversi canali attraverso i quali viene attualmente offerto il servizio Qiskit Runtime. channel sostituisce il parametro auth , ormai deprecato.

Note di deprecazione

  • Il parametro auth della classe qiskit_ibm_runtime.IBMRuntimeService e anche di metodi come save_account(), saved_accounts() e delete_account() è stato deprecato e sarà rimosso in una prossima versione. Utilizzare invece il nuovo parametro channel .

Correzioni di bug

  • Corretto il problema #291 per cui il passaggio di un singolo QuantumCircuit alle primitive del campionatore o dello stimatore generava un errore.

0.2.0

Nuove funzioni

  • qiskit_ibm_runtime.IBMEstimator e qiskit_ibm_runtime.IBMSampler permettono ora di interagire facilmente con i programmi primitivi estimator e sampler . Per saperne di più su come utilizzarli, si vedano gli esempi contenuti nei documenti delle rispettive classi.

Correzioni di bug


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.BackendV2 e fornisce un accesso più semplice alla configurazione di un backend, ad esempio:

    # BackendV1:
    backend.configuration().n_qubits
    
    # BackendV2:
    backend.num_qubits

    L'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 instance durante l'inizializzazione qiskit_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
  • È 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 classe qiskit_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 callback a qiskit_ibm_runtime.IBMRuntimeService.run() o qiskit_ibm_runtime.RuntimeJob.stream_results().


0.1.0rc2

Nuove funzioni

  • Per comodità, è ora possibile impostare IBM Cloud service name come valore del parametro instance . Se si sceglie di impostare il nome anziché CRN, il tempo di inizializzazione della classe qiskit_ibm_runtime.IBMRuntimeService è leggermente superiore, perché il valore richiesto CRN viene risolto internamente tramite le API IBM Cloud.

Correzioni di bug


0.1.0rc1

Nuove funzioni

  • È ora possibile passare il parametro instance nel formato hub/gruppo/progetto a qiskit_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 elencato backend_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 di Parameter ricostruite dall'output JSON avevano identificatori univoci diversi, che le facevano sembrare non uguali all'input. Ora avranno le identità di supporto corrette.
Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.