Qiskit 0.9 Versionshinweise
0.9
Terra- 0.8
Schwerpunkte
- Einführung des Pulse-Moduls unter
qiskit.pulse, das Werkzeuge für die Erstellung von Pulsbefehlen, deren Planung auf Pulskanälen, die Visualisierung und deren Ausführung auf IBM Q-Geräten enthält. - Verbesserte QuantumCircuit und Anweisungsklassen, die die Komposition beliebiger Unterschaltungen zu größeren Schaltungen sowie die Erstellung parametrisierter Schaltungen ermöglichen.
- Ein leistungsfähiges Quantum-Info-Modul unter
qiskit.quantum_info, das Werkzeuge für die Arbeit mit Operatoren und Kanälen und deren Verwendung in Schaltungen bietet. - Neue Transpiler-Optimierungspässe und Zugriff auf vordefinierte Transpilierroutinen.
Neue Funktionen
- Die Kernroutine
StochasticSwapist in Cython implementiert. QuantumChannelKlassen für die Bearbeitung von Quantenkanälen und CPTP-Karten hinzugefügt.- Unterstützung für parametrisierte Schaltungen.
- Die Schnittstelle
PassManagerwurde verbessert und um neue Funktionen erweitert, um die Interaktion und die Verwendung mit benutzerdefinierten Passmanagern zu erleichtern. - Voreingestellte
PassManagers sind jetzt enthalten, die eine vorbestimmte Pipeline von Transpilerdurchläufen bieten. - Benutzerkonfigurationsdateien, damit lokale Umgebungen die Standardwerte für einige Funktionen überschreiben können.
- Neue Transpilerpässe:
EnlargeWithAncilla,Unroll2Q,NoiseAdaptiveLayout,OptimizeSwapBeforeMeasure,RemoveDiagonalGatesBeforeMeasure,CommutativeCancellation,Collect2qBlocks, undConsolidateBlocks.
Hinweise zur Kompatibilität
Als Teil der Version 0.8 wurden die folgenden Dinge veraltet und werden entweder entfernt oder in einer zukünftigen Version abwärtskompatibel geändert. Auch wenn es nicht unbedingt notwendig ist, sind dies Dinge, die vor der Veröffentlichung von 0.9 (sofern nicht anders angegeben) angepasst werden sollten, um zukünftige Änderungen zu vermeiden.
- Die Methoden mit dem Präfix
_getim ObjektDAGCircuitwerden ohne dieses Präfix umbenannt. - Die Elemente in
couplinglistvonCouplingMapwurden von Tupeln in Listen geändert. - Unroller-Basen müssen nun explizit sein, und eine Verletzung führt zu einer informativen
QiskitError. - Das Paket
qiskit.tools.qcvvist veraltet und wird in Zukunft entfernt werden. Sie sollten zur Verwendung von Qiskit Ignis wechseln, das dieses Modul ersetzt. - Die Funktion
qiskit.compile()wird nun zugunsten der expliziten Verwendung der Funktionqiskit.compiler.transpile()zur Umwandlung eines Schaltkreises, gefolgt vonqiskit.compiler.assemble(), um daraus ein Qobj zu machen, veraltet. Anstelle voncompile(...)verwenden Sieassemble(transpile(...), ...). qiskit.converters.qobj_to_circuits()ist veraltet und wird in einer zukünftigen Version entfernt werden. Stattdessen sollteqiskit.assembler.disassemble()verwendet werden, umQuantumCircuitObjekte aus einem kompilierten Qobj zu extrahieren.- Der Namespace
qiskit.mapperist veraltet. Die KlassenLayoutundCouplingMapkönnen überqiskit.transpileraufgerufen werden. - Einige Funktionen in
qiskit.tools.qi.qisind veraltet und wurden nachqiskit.quantum_infoverschoben.
Bitte beachten Sie, dass in dieser Version einige abwärtsinkompatible Änderungen vorgenommen wurden. Die folgenden Hinweise enthalten Informationen darüber, wie Sie sich auf diese Änderungen einstellen können.
IBM Q Anbieter
Der Anbieter IBM Q war früher in Terra enthalten, wurde aber in ein separates Paket aufgeteilt qiskit-ibmq-provider. Diese muss installiert werden, entweder über pypi mit pip install qiskit-ibmq-provider oder aus dem Quellcode, um auf qiskit.IBMQ oder qiskit.providers.ibmq zugreifen zu können. Wenn Sie qiskit mit pip install qiskit installieren, werden automatisch alle Unterpakete des Qiskit-Projekts installiert.
Cython-Komponenten
Ab der Version 0.8 ist die zentrale stochastische Tauschroutine nun in Cython implementiert. Dies wurde getan, um die Leistung des Swappers deutlich zu verbessern. Wenn Sie Terra jedoch aus dem Quellcode erstellen oder auf einer non-x86 oder einer anderen Plattform ohne vorgefertigte Wheels laufen lassen und aus der Quelldistribution installieren, müssen Sie sicherstellen, dass Sie Cython installiert haben, bevor Sie Qiskit Terra installieren/erstellen. Dies kann einfach mit pip/pypi gemacht werden: pip install Cython.
Compiler-Workflow
Die Funktion qiskit.compile() wurde abgeschafft und durch den Aufruf von qiskit.compiler.transpile() ersetzt, um die Optimierung und das Mapping eines Schaltkreises durchzuführen, und dann qiskit.compiler.assemble() , um ein Qobj aus diesem optimierten Schaltkreis zu erstellen und an ein Backend zu senden. Obwohl es sich hierbei nur um eine Veraltung handelt, wird eine Warnung ausgegeben, wenn Sie den alten Aufruf qiskit.compile() verwenden.
transpile(), assemble(), execute() Parameter
Diese Funktionen sind stark überlastet und akzeptieren ein breites Spektrum an Eingaben. Sie können Stromkreis- und Impulseingänge verarbeiten. Alle kwargs mit Ausnahme von backend für diese Funktionen akzeptieren nun auch Listen der zuvor akzeptierten Typen. Der initial_layout kwarg kann jetzt sowohl als Liste als auch als Wörterbuch angegeben werden, z.B. um ein Bell-Experiment auf die Qubits 13 und 14 abzubilden, kann man angeben: initial_layout=[13, 14] oder initial_layout={qr[0]: 13, qr[1]: 14}
Qobj
Die Klasse Qobj wurde je nach Anwendungsfall in zwei getrennte Unterklassen aufgeteilt, entweder PulseQobj oder QasmQobj für Impuls- bzw. Schaltkreisaufträge. Wenn Sie direkt mit Qobj interagieren, müssen Sie möglicherweise Ihre Verwendung entsprechend anpassen.
qiskit.qobj.qobj_to_dict() wird entfernt. Verwenden Sie stattdessen die Methode to_dict() eines Qobj-Objekts.
Visualisierung
Die größte Änderung des Visualisierungsmoduls besteht darin, dass es von qiskit.tools.visualization auf qiskit.visualization umgezogen ist. Dies wurde getan, um zu zeigen, dass das Visualisierungsmodul mehr als nur ein Werkzeug ist. Da diese Schnittstelle jedoch in der Version 0.7 für stabil erklärt wurde, wird die öffentliche Schnittstelle von qiskit.tools.visualization weiterhin funktionieren. Das kann sich in einer zukünftigen Version ändern, aber wenn das passiert, wird es vor der Entfernung veraltet sein.
Die zuvor veralteten Funktionen plot_circuit(), latex_circuit_drawer(), generate_latex_source() und matplotlib_circuit_drawer() aus qiskit.tools.visualization wurden entfernt. Anstelle dieser Funktionen sollte der Aufruf von qiskit.visualization.circuit_drawer() mit den entsprechenden Argumenten verwendet werden.
Die zuvor veralteten Schlüssel plot_barriers und reverse_bits im style kwarg-Wörterbuch sind veraltet, stattdessen sollten die qiskit.visualization.circuit_drawer() kwargs plot_barriers und reverse_bits verwendet werden.
Die Wigner-Plotting-Funktionen plot_wigner_function, plot_wigner_curve, plot_wigner_plaquette und plot_wigner_data , die bisher im Modul qiskit.tools.visualization._state_visualization enthalten waren, wurden entfernt. Sie wurden nie über die öffentliche stabile Schnittstelle veröffentlicht und waren nicht gut dokumentiert. Der Code zur Nutzung dieser Funktion kann weiterhin über das qiskit-tutorials Repository abgerufen werden.
Zuordnungsfunktion
Die öffentliche Api von qiskit.mapper wurde in qiskit.transpiler verschoben. Während es nur in dieser Version veraltet ist, wird es in der Version 0.9 entfernt werden. Wenn Sie also Ihre Verwendung von Layout und CouplingMap aktualisieren, um von qiskit.transpiler statt von qiskit.mapper zu importieren, bevor dies geschieht, vermeiden Sie in Zukunft Überraschungen.
Aer- 0.2
Neue Funktionen
- Multiplexer-Gatter qiskit-aer #192 hinzugefügt
- Funktion
remap_noise_modelzunoise.utilsqiskit-aer #181 hinzugefügt - Methode
__eq__zuNoiseModel,QuantumError,ReadoutErrorhinzugefügt qiskit-aer #181 - Unterstützung für beschriftete Gatter in Rauschmodellen hinzugefügt qiskit-aer #175
- Optimierte
mcx,mcy,mcz,mcu1,mcu2,mcu3, gates toQubitVectorhinzugefügt qiskit-aer #124 - Optimiertes Controlled-Swap-Gate zu
QubitVectorqiskit-aer #142 hinzugefügt - Gate-Fusion-Optimierung für
QasmControllerhinzugefügt, die durch die Einstellungfusion_enable=trueqiskit-aer #136 aktiviert wird - Bessere Verwaltung von fehlgeschlagenen Simulationen qiskit-aer #167
- Optimierung des Abschneidens von Qubits für unbenutzte Qubits hinzugefügt qiskit-aer #164
- Möglichkeit hinzugefügt, den Depolarisationsfehler beim Geräuschmodell qiskit-aer #131 zu deaktivieren
- Initialisierungsanweisung für den Simulator zu
statevector_statehinzugefügt qiskit-aer #117, qiskit-aer #137 - Kopplungskarten zu Simulatoren hinzugefügt qiskit-aer #93
- Schaltungsoptimierungs-Framework qiskit-aer #83 hinzugefügt
- Benchmarking hinzugefügt qiskit-aer #71, qiskit-aer #177
- Unterstützung von Laufrädern für Debian -ähnliche Distributionen hinzugefügt qiskit-aer #69
- Automatische Konfiguration von Threads für den QASM-Simulator Qiskit-Aer #61 hinzugefügt
- Simulationsmethode auf der Grundlage von Stabilisator-Rang-Zerlegungen hinzugefügt qiskit-aer #51
basis_gateskwarg zuNoiseModelinit qiskit-aer #175 hinzugefügt.- Ein optionaler Parameter wurde zu
NoiseModel.as_dict()hinzugefügt, um Dictionaries zurückzugeben, die mit der Standard-Json-Bibliothek direkt serialisiert werden können qiskit-aer #165 - Überarbeitung der Thread-Verwaltung qiskit-aer #50
- Verbesserung der Rauschtransformationen qiskit-aer #162
- Verbesserung der Fehlermeldungen qiskit-aer #160
- Verbesserung der Effizienz der Parallelisierung mit
max_memory_mbein neuer Parameter vonbackend_optsqiskit-aer #61 - Verbesserung der Leistung von u1 in
statevectorqiskit-aer #123
Fehlerkorrekturen
- OpenMP behebt Clashing-Probleme auf macOS für das Terra-Add-on qiskit-aer #46
Hinweise zur Kompatibilität
- Veraltete
"initial_statevector"Backend-Option fürQasmSimulatorundStatevectorSimulatorqiskit-aer #185 - Umbenennung der Backend-Option
"chop_threshold"in"zero_threshold"und Änderung des Standardwertes in 1e-10 qiskit-aer #185
Ignis- 0.1
Neue Funktionen
- Quantenvolumen
- Abschwächung von Messungen mit Hilfe von Tensorkalibrierungen
- Simultane RB bietet die Möglichkeit, Clifford-Gatter über Teilmengen hinweg auszurichten
- Die Messwertkorrektur kann eine neue Kalibrierung für eine Teilmenge von Qubits ergeben
Hinweise zur Kompatibilität
- RB schreibt in den minimalen Satz klassischer Register (früher war es Q [i] ->C [i] ). Diese Änderung ermöglicht eine Messwertkorrektur mit RB. Sofern die Nutzer nicht über einen externen Analysecode verfügen, wird dies nichts an den Ergebnissen ändern. RB-Schaltkreise von 0.1 sind nicht kompatibel mit 0.1.1 Installateuren.
Aqua- 0.5
Neue Funktionen
- Implementierung des HHL-Algorithmus zur Unterstützung
LinearSystemInput - Steckbare Komponente
Eigenvaluesmit VarianteEigQPE - Steckbare Komponente
Reciprocalmit den VariantenLookupRotationundLongDivision - Mehrfachkontrollierte U1 und U3
mcu1undmcu3 - Steckbare Komponente
QFTabgeleitet von KomponenteIQFT - Zusammenfassung der transpilierten Schaltungen auf der DEBUG-Protokollierungsebene
QuantumInstancenimmtbasis_gatesundcoupling_mapwieder an.- Unterstützung der Verwendung des
cxGatters für die Verschränkung inRYundRYRZVariationsform (czist die Standardwahl) - Unterstützung für die Verwendung beliebiger Mischer-Hamiltonianer in QAOA, was die Verwendung von QAOA bei eingeschränkten Optimierungsproblemen ermöglicht [arXiv:1709.03489]
- Variationsalgorithmus-Basisklasse
VQAlgorithmhinzugefügt, implementiert durchVQEundQSVMVariational ising/docplex.pyzur automatischen Generierung der Ising-Hamiltonschen aus Optimierungsmodellen von DOcplex hinzugefügt'basic-dirty-ancilla' Modus hinzugefügt fürmct- Hinzugefügt
mcmtfür Multi-Controlled, Multi-Target Gate - Offengelegte Fähigkeiten zur Erzeugung von Schaltkreisen aus logischen UND-, ODER-, DNF- (disjunktive Normalformen) und CNF-Formeln (konjunktive Normalformen)
- Es wurde die Möglichkeit hinzugefügt, Schaltkreise aus ESOP-Formeln (exklusive Summe der Produkte) mit optionaler Optimierung auf der Grundlage von Quine-McCluskey zu erzeugen ExactCover
LogicalExpressionOraclezur Generierung von Orakelschaltungen aus beliebigen booleschen logischen Ausdrücken (einschließlich DIMACS-Unterstützung) mit optionaler Optimierungsmöglichkeit hinzugefügtTruthTableOraclezur Erzeugung von Orakelschaltungen aus Wahrheitstabellen mit optionaler Optimierungsmöglichkeit hinzugefügtCustomCircuitOraclezur Erzeugung von Orakeln aus benutzerdefinierten Schaltkreisen hinzugefügt- Implementierung des Deutsch-Jozsa-Algorithmus hinzugefügt
- Implementierung des Bernstein-Vazirani-Algorithmus hinzugefügt
- Implementierung des Simonschen Algorithmus hinzugefügt
- Implementierung des Shor'schen Algorithmus hinzugefügt
- Optionale Möglichkeit für Grovers Algorithmus, einen benutzerdefinierten Anfangszustand anzunehmen (im Gegensatz zur standardmäßigen einheitlichen Überlagerung)
- Es wurde die Möglichkeit hinzugefügt, einen
CustomAusgangszustand unter Verwendung einer bestehenden Schaltung zu erstellen - Hinzufügen des Optimierungsalgorithmus ADAM (und AMSGRAD)
- Multivariate Verteilungen hinzugefügt, so dass Unsicherheitsmodelle nun univariate und multivariate Verteilungskomponenten haben
- Option hinzugefügt, um die Tauschoperationen für qft- und iqft-Schaltkreiskonstruktionen einzuschließen oder zu überspringen
- Löser für klassische lineare Systeme hinzugefügt
ExactLSsolver - Die Parameter
auto_hermitianundauto_resizewurden zum AlgorithmusHHLhinzugefügt, um nicht-hermitsche und nicht große Matrizen standardmäßig zu unterstützen - Es wurde eine weitere Merkmalskarte
RawFeatureVectorhinzugefügt, die Merkmalsvektoren direkt den Zuständen von Qubits zur Klassifizierung zuordnet SVM_Classicalkann jetzt Modelle laden, die vonQSVM
Fehlerkorrekturen
ising/docplex.pykorrigiert, um konstante Werte in Constraints korrekt zu multiplizieren- Paket-Setup korrigiert, um Namespace-Pakete korrekt zu identifizieren, indem
setuptools.find_namespace_packages
Hinweise zur Kompatibilität
QuantumInstancenimmt nicht mehrmemory.- Kommandozeile und GUI in separates Repo verschoben (
qiskit_aqua_uis) - Das
SAT-spezifische Orakel wurde entfernt (wird jetzt vonLogicalExpressionOracleunterstützt) - Geänderte Implementierung von
mctim Modusadvanced: Verwendung von einfachenhGattern anstelle vonch, und Korrektur des alten Rekursionsschritts in_multicx - Komponenten
random_distributionsumbenannt inuncertainty_models - Reorganisation der Konstruktionen verschiedener gemeinsamer Gatter (
ch,cry,mcry,mct,mcu1,mcu3,mcmt,logic_andundlogic_or) und Schaltungen (PhaseEstimationCircuit,BooleanLogicCircuits,FourierTransformCircuitsundStateVectorCircuits) unter dem Verzeichniscircuits - Umbenennung des Algorithmus
QSVMVariationalinVQC, was für Variational Quantum Classifier steht - Umbenennung des Algorithmus
QSVMKernelinQSVM - Umbenennung der Klasse
SVMInputinClassificationInput - Umbenennung des Problemtyps
'svm_classification'in'classification' - Der in
FeatureMapundVariationalFormverwendete Typ vonentangler_mapwurde in eine Liste von Listen geändert
IBM Q Anbieter 0.1
Neue Funktionen
- Dies ist die erste Veröffentlichung als eigenständiges Paket. Wenn Sie Terra als Einzelplatzversion installieren, müssen Sie auch das Paket
qiskit-ibmq-providermitpip install qiskit-ibmq-providerinstallieren, wenn Sie die IBM Q-Backends verwenden möchten. - Die Unterstützung für Aufträge im Nicht-Qobj-Format wurde aus dem Anbieter entfernt. Sie müssen Einreichungen in einem älteren Format in Qobj konvertieren, bevor Sie sie einreichen können.