Note di rilascio di Qiskit 0.9
0.9
Terra 0.8
Evidenziazioni
- Introduzione del modulo Pulse in
qiskit.pulse, che include strumenti per la creazione di comandi a impulsi, la loro programmazione su canali a impulsi, la visualizzazione e l'esecuzione su dispositivi IBM Q. - Miglioramento delle classi QuantumCircuit e Instruction, che consentono la composizione di sottocircuiti arbitrari in circuiti più grandi e la creazione di circuiti parametrizzati.
- Un potente modulo Quantum Info sotto
qiskit.quantum_info, che fornisce strumenti per lavorare con operatori e canali e per utilizzarli all'interno dei circuiti. - Nuovi passaggi di ottimizzazione del transpiler e accesso a routine di transpiling predefinite.
Nuove funzioni
- Il nucleo della routine
StochasticSwapè implementato in Cython. - Aggiunte le classi
QuantumChannelper la manipolazione dei canali quantistici e delle mappe CPTP. - Supporto per circuiti parametrizzati.
- L'interfaccia di
PassManagerè stata migliorata e sono state aggiunte nuove funzioni per facilitare l'interazione e l'utilizzo dei gestori di pass personalizzati. - Sono ora inclusi
PassManagerche offrono una pipeline predeterminata di passaggi di transpiler. - File di configurazione utente per consentire agli ambienti locali di sovrascrivere i valori predefiniti di alcune funzioni.
- Nuovi passaggi di transpiler:
EnlargeWithAncilla,Unroll2Q,NoiseAdaptiveLayout,OptimizeSwapBeforeMeasure,RemoveDiagonalGatesBeforeMeasure,CommutativeCancellation,Collect2qBlocks, eConsolidateBlocks.
Considerazioni sulla compatibilità
Nell'ambito del rilascio 0.8, i seguenti elementi sono stati deprecati e saranno rimossi o modificati in modo incompatibile con le versioni successive. Sebbene non siano strettamente necessarie, queste sono cose da sistemare prima del rilascio di 0.9 (a meno che non sia indicato diversamente) per evitare un cambiamento di rottura in futuro.
- I metodi con prefisso
_getnell'oggettoDAGCircuitvengono rinominati senza tale prefisso. - Gli elementi di
couplinglistdiCouplingMapsono stati trasformati da tuple a liste. - Le basi degli unroller devono essere esplicite e la loro violazione solleva un'informazione
QiskitError. - Il pacchetto
qiskit.tools.qcvvè deprecato e sarà rimosso in futuro. Dovreste migrare all'utilizzo di Qiskit Ignis, che sostituisce questo modulo. - La funzione
qiskit.compile()è ora deprecata a favore dell'uso esplicito della funzioneqiskit.compiler.transpile()per trasformare un circuito, seguita daqiskit.compiler.assemble()per ricavarne un Qobj. Invece dicompile(...), utilizzareassemble(transpile(...), ...). qiskit.converters.qobj_to_circuits()è stato deprecato e sarà rimosso in una prossima versione. Inveceqiskit.assembler.disassemble()dovrebbe essere usato per estrarre gli oggettiQuantumCircuitda un Qobj compilato.- Lo spazio dei nomi
qiskit.mapperè stato deprecato. Le classiLayouteCouplingMapsono accessibili tramiteqiskit.transpiler. - Alcune funzioni di
qiskit.tools.qi.qisono state deprecate e spostate inqiskit.quantum_info.
Si noti che in questa versione sono state apportate alcune modifiche incompatibili con le versioni precedenti. Le note seguenti contengono informazioni su come adattarsi a questi cambiamenti.
IBM Q Fornitore
Il provider IBM Q era precedentemente incluso in Terra, ma è stato suddiviso in un pacchetto separato qiskit-ibmq-provider. Questo dovrà essere installato, sia tramite pypi con pip install qiskit-ibmq-provider che dai sorgenti per accedere a qiskit.IBMQ o qiskit.providers.ibmq. Se si installa qiskit con pip install qiskit, si installeranno automaticamente tutti i sottopacchetti del progetto Qiskit.
Componenti Cython
A partire dalla versione 0.8, il nucleo della routine di swap stocastico è ora implementato in Cython. Questo è stato fatto per migliorare significativamente le prestazioni dello swapper, tuttavia se costruite Terra dai sorgenti o lo eseguite su non-x86 o su un'altra piattaforma senza ruote precostituite e installate dai sorgenti, dovrete assicurarvi di avere Cython installato prima di installare/costruire Qiskit Terra. Questo può essere fatto facilmente con pip/pypi: pip install Cython.
Flusso di lavoro del compilatore
La funzione qiskit.compile() è stata deprecata e sostituita da una prima chiamata a qiskit.compiler.transpile() per eseguire l'ottimizzazione e la mappatura su un circuito, quindi a qiskit.compiler.assemble() per costruire un Qobj da quel circuito ottimizzato da inviare a un backend. Sebbene si tratti solo di una deprecazione, verrà emesso un avviso se si utilizza la vecchia chiamata qiskit.compile() .
parametri transpile(), assemble(), execute()
Queste funzioni sono fortemente sovraccariche e accettano un'ampia gamma di input. Possono gestire ingressi a circuito e a impulsi. Tutti i kwarg, tranne backend , per queste funzioni accettano ora anche elenchi dei tipi precedentemente accettati. Il kwarg initial_layout può ora essere fornito sia come elenco che come dizionario, ad esempio per mappare un esperimento di Bell sui qubit 13 e 14, si può fornire: initial_layout=[13, 14] o initial_layout={qr[0]: 13, qr[1]: 14}
Qobj
La classe Qobj è stata suddivisa in due sottoclassi separate a seconda del caso d'uso, PulseQobj o QasmQobj rispettivamente per i lavori a impulsi e a circuito. Se si interagisce direttamente con Qobj, potrebbe essere necessario modificare l'utilizzo di conseguenza.
Il sito qiskit.qobj.qobj_to_dict() viene rimosso. Utilizzare invece il metodo to_dict() di un oggetto Qobj.
Visualizzazione
La modifica più importante al modulo di visualizzazione è il passaggio da qiskit.tools.visualization a qiskit.visualization. Questo per indicare che il modulo di visualizzazione è più di un semplice strumento. Tuttavia, poiché questa interfaccia è stata dichiarata stabile nella release 0.7, l'interfaccia pubblica di qiskit.tools.visualization continuerà a funzionare. Questo potrebbe cambiare in una versione futura, ma in tal caso sarà deprecato prima di essere rimosso.
Le funzioni precedentemente deprecate, plot_circuit(), latex_circuit_drawer(), generate_latex_source(), e matplotlib_circuit_drawer() da qiskit.tools.visualization sono state rimosse. Al posto di queste funzioni, si dovrebbe usare la chiamata a qiskit.visualization.circuit_drawer() con gli argomenti appropriati.
Le chiavi plot_barriers e reverse_bits nel dizionario dei kwarg di style , precedentemente deprecate, sono deprecate; al loro posto si devono usare i kwarg di qiskit.visualization.circuit_drawer() plot_barriers e reverse_bits .
Le funzioni di plottaggio di Wigner plot_wigner_function, plot_wigner_curve, plot_wigner_plaquette e plot_wigner_data precedentemente presenti nel modulo qiskit.tools.visualization._state_visualization sono state rimosse. Non sono mai stati esposti attraverso l'interfaccia pubblica stabile e non sono stati ben documentati. Il codice per l'utilizzo di questa funzione è ancora accessibile attraverso il repository qiskit-tutorials.
Programma di associazione
L'API pubblica di qiskit.mapper è stata spostata in qiskit.transpiler. Sebbene sia stato deprecato solo in questa versione, sarà rimosso nella versione 0.9, quindi aggiornare l'uso di Layout e CouplingMap per importare da qiskit.transpiler invece che da qiskit.mapper prima che ciò avvenga eviterà qualsiasi sorpresa in futuro.
Aer 0.2
Nuove funzioni
- Aggiunto gate multiplexer qiskit-aer #192
- Aggiunta la funzione
remap_noise_modelanoise.utilsqiskit-aer #181 - Aggiunto il metodo
__eq__aNoiseModel,QuantumError,ReadoutErrorqiskit-aer #181 - Aggiunto il supporto per le porte etichettate nei modelli di rumore qiskit-aer #175
- Aggiunte ottimizzazioni a
mcx,mcy,mcz,mcu1,mcu2,mcu3, porte aQubitVectorqiskit-aer #124 - Aggiunto gate controlled-swap ottimizzato a
QubitVectorqiskit-aer #142 - Aggiunta l'ottimizzazione della gate-fusion per
QasmController, che si abilita impostandofusion_enable=trueqiskit-aer #136 - Aggiunta una migliore gestione delle simulazioni fallite qiskit-aer #167
- Aggiunta ottimizzazione del troncamento dei qubit per i qubit non utilizzati qiskit-aer #164
- Aggiunta la possibilità di disabilitare l'errore di depolarizzazione sul modello di rumore del dispositivo qiskit-aer #131
- Aggiunta istruzione di inizializzazione del simulatore a
statevector_stateqiskit-aer #117, qiskit-aer #137 - Aggiunte mappe di accoppiamento ai simulatori qiskit-aer #93
- Aggiunto il framework di ottimizzazione dei circuiti qiskit-aer #83
- Aggiunti i benchmark qiskit-aer #71, qiskit-aer #177
- Aggiunto il supporto alle ruote per Debian - distribuzioni simili a qiskit-aer #69
- Aggiunta l'autoconfigurazione dei thread per il simulatore qasm qiskit-aer #61
- Aggiunto metodo di simulazione basato su decomposizioni di rango dello stabilizzatore qiskit-aer #51
- Aggiunto
basis_gateskwarg aNoiseModelinit qiskit-aer #175. - Aggiunto un parametro opzionale a
NoiseModel.as_dict()per restituire dizionari che possono essere serializzati usando la libreria json standard direttamente qiskit-aer #165 - Riformulare la gestione dei thread di qiskit-aer #50
- Migliorare le trasformazioni del rumore qiskit-aer #162
- Migliorare la segnalazione degli errori qiskit-aer #160
- Migliorare l'efficienza della parallelizzazione con
max_memory_mbun nuovo parametro dibackend_optsqiskit-aer #61 - Migliorare le prestazioni di u1 in
statevectorqiskit-aer #123
Correzioni di bug
- Risolti i problemi di scontro di OpenMP su macOS per il componente aggiuntivo Terra qiskit-aer #46
Considerazioni sulla compatibilità
- Opzione backend
"initial_statevector"deprecata perQasmSimulatoreStatevectorSimulatorqiskit-aer #185 - Rinominata l'opzione del backend
"chop_threshold"in"zero_threshold"e cambiato il valore predefinito in 1e-10 qiskit-aer #185
Ignis 0.1
Nuove funzioni
- Volume quantico
- Attenuazione delle misure con calibrazioni tensored
- RB simultaneo ha l'opzione di allineare le porte Clifford tra i sottoinsiemi
- La correzione della misura può produrre una nuova calibrazione per un sottoinsieme di qubit
Considerazioni sulla compatibilità
- RB scrive sul set minimo di registri classici (in precedenza era Q [i] ->C [i] ). Questa modifica consente la correzione della misura con RB. A meno che gli utenti non abbiano un codice di analisi esterno, questo non cambierà i risultati. I circuiti RB di 0.1 non sono compatibili con i raccordi di 0.1.1.
Acqua 0.5
Nuove funzioni
- Implementazione dell'algoritmo HHL a supporto di
LinearSystemInput - Componente innestabile
Eigenvaluescon varianteEigQPE - Componente innestabile
Reciprocalcon le variantiLookupRotationeLongDivision - Operazioni a controllo multiplo U1 e U3
mcu1emcu3 - Componente collegabile
QFTderivato dal componenteIQFT - Riassunto dei circuiti transpilati a livello di logging DEBUG
QuantumInstanceaccetta di nuovobasis_gatesecoupling_map.- Supporto all'uso della porta
cxper l'entanglement nelle forme variazionaliRYeRYRZ(czè la scelta predefinita) - Supporto per l'utilizzo di un'hamiltoniana del mixer arbitraria in QAOA, consentendo l'uso di QAOA in problemi di ottimizzazione vincolata [arXiv:1709.03489]
- Aggiunta la classe base dell'algoritmo variazionale
VQAlgorithm, implementata daVQEe daQSVMVariational - Aggiunto
ising/docplex.pyper generare automaticamente l'hamiltoniana di Ising dai modelli di ottimizzazione di DOcplex - Aggiunta la modalità
'basic-dirty-ancilla' permct - Aggiunto
mcmtper il cancello multicontrollato e multitarget - Funzionalità esposte per generare circuiti da formule logiche AND, OR, DNF (forme normali disgiuntive) e CNF (forme normali congiuntive)
- È stata aggiunta la possibilità di generare circuiti da formule ESOP (somma esclusiva dei prodotti) con ottimizzazione opzionale basata su Quine-McCluskey e su ExactCover
- Aggiunto
LogicalExpressionOracleper la generazione di circuiti oracolo a partire da espressioni logiche booleane arbitrarie (incluso il supporto DIMACS) con possibilità di ottimizzazione - Aggiunto
TruthTableOracleper la generazione di circuiti oracolo da tabelle di verità con possibilità di ottimizzazione - Aggiunto
CustomCircuitOracleper generare l'oracolo da circuiti specificati dall'utente - Aggiunta l'implementazione dell'algoritmo di Deutsch-Jozsa
- Aggiunta l'implementazione dell'algoritmo di Bernstein-Vazirani
- Aggiunta l'implementazione dell'algoritmo di Simon
- Aggiunta dell'implementazione dell'algoritmo di Shor
- Aggiunta la possibilità opzionale per l'algoritmo di Grover di assumere uno stato iniziale personalizzato (rispetto alla sovrapposizione uniforme predefinita)
- Aggiunta la possibilità di creare uno stato iniziale
Customutilizzando un circuito esistente - Aggiunto l'algoritmo di ottimizzazione ADAM (e AMSGRAD)
- Sono state aggiunte le distribuzioni multivariate, quindi i modelli di incertezza hanno ora componenti di distribuzione univariate e multivariate
- Aggiunta l'opzione per includere o saltare le operazioni di swap per le costruzioni di circuiti qft e iqft
- Aggiunto risolutore di sistemi lineari classici
ExactLSsolver - Aggiunti i parametri
auto_hermitianeauto_resizeall'algoritmoHHLper supportare matrici non ermitiane e non di dimensione per impostazione predefinita - Aggiunta un'altra mappa di caratteristiche,
RawFeatureVector, che mappa direttamente i vettori di caratteristiche agli stati dei qubit per la classificazione SVM_Classicalpuò ora caricare i modelli addestrati daQSVM
Correzioni di bug
- Corretto
ising/docplex.pyper moltiplicare correttamente i valori costanti nei vincoli - Corretta l'impostazione dei pacchetti per identificare correttamente i pacchetti dello spazio dei nomi che usano
setuptools.find_namespace_packages
Considerazioni sulla compatibilità
QuantumInstancenon accetta piùmemory.- Spostate la riga di comando e la GUI in repo separate (
qiskit_aqua_uis) - Rimosso l'oracolo specifico di
SAT(ora supportato daLogicalExpressionOracle) - Modificata l'implementazione della modalità
advanceddimct: utilizzando semplici porte dihinvece diche correggendo il vecchio passo di ricorsione in_multicx - Componenti
random_distributionsrinominato inuncertainty_models - Riorganizzate le costruzioni di varie porte comuni (
ch,cry,mcry,mct,mcu1,mcu3,mcmt,logic_and, elogic_or) e circuiti (PhaseEstimationCircuit,BooleanLogicCircuits,FourierTransformCircuits, eStateVectorCircuits) sotto la directorycircuits - L'algoritmo
QSVMVariationalè stato rinominatoVQC, acronimo di Variational Quantum Classifier - Rinominare l'algoritmo
QSVMKernelinQSVM - Rinominare la classe
SVMInputinClassificationInput - Rinominare il tipo di problema
'svm_classification'in'classification' - Modificato il tipo di
entangler_mapusato inFeatureMapeVariationalFormin lista di liste
IBM Q Fornitore 0.1
Nuove funzioni
- Questo è il primo rilascio come pacchetto autonomo. Se si installa Terra standalone, è necessario installare anche il pacchetto
qiskit-ibmq-providerinsieme apip install qiskit-ibmq-provider, se si vuole usare i backend di IBM Q. - Il supporto per i lavori in formato non Qobj è stato rimosso dal provider. Prima di poter inviare le richieste in un formato precedente, è necessario convertirle in Qobj.