Přeskočit na hlavní obsah

Migrace z BackendV1 na BackendV2

Třída Qiskit BackendV1 byla označena jako zastaralá a bude odstraněna. Tento průvodce migrací popisuje drobné úpravy, které musíš provést, pokud používáš poskytovatele, který přešel z BackendV1 na BackendV2.

poznámka

Pokud používáš výhradně qiskit_ibm_runtime a qiskit_aer, žádná akce není potřeba. Balíček qiskit_ibm_runtime vždy používal BackendV2 a qiskit_aer používá BackendV2 od verze 0.13.

Hlavní změny v BackendV2

Model Qiskit Backend byl navržen tak, aby poskytoval Qiskit SDK abstrakční vrstvu umožňující práci s kvantovými počítači v rámci SDK. První iterace modelu byla představena třídou BackendV1. Tato třída ukládala informace o Backend v sérii datových kontejnerů, konkrétně ve třídách BackendConfiguration a BackendProperties.

Třída BackendV2 předefinovala uživatelský přístup k většině vlastností Backend tak, aby fungovaly s nativními datovými strukturami Qiskit a měly plošší přístupové vzory. Jádrem modelu BackendV2 je třída Target, reprezentace QPU obsahující omezení pro transpilaci, která může Qiskit využít k optimalizaci Circuit pro spuštění.

Qiskit SDK bylo aktualizováno tak, aby pracovalo výhradně se vstupy BackendV2, a většina poskytovatelů přešla z BackendV1 na BackendV2. Očekává se, že stávající poskytovatelé postupně označí starý přístup jako zastaralý, aby umožnili plynulou migraci, ale nakonec budeš muset svůj kód upravit.

Princip BackendV2 spočívá v tom, že většina informací o Backend je obsažena v jeho objektu Target a atributy Backend často dotazují jeho atribut BackendV2.target pro vrácení informací. V mnoha případech však atributy poskytují pouze podmnožinu informací, které target může obsahovat. Například backend.coupling_map vrací CouplingMap sestavenou z Target dostupného v atributu BackendV2.target. Target však může obsahovat instrukce operující na více než dvou Qubit (které nelze reprezentovat v CouplingMap) nebo může mít instrukce, které operují pouze na podmnožině Qubit (nebo dvou-Qubit spojení u dvou-Qubit instrukcí), což nebude zachyceno v úplné coupling mapě vrácené BackendV2.coupling_map. Takže v závislosti na tvém případu použití může být nutné se podívat hlouběji než jen na ekvivalentní přístup přes BackendV2.

Konkrétní změny v BackendV2

Většina atributů má přímou náhradu, což zjednodušuje migraci. Jediným místem nesouladu mezi rozhraními je CouplingMap.

Následuje tabulka příkladů přístupových vzorů v BackendV1 a jejich nová podoba s BackendV2.

important

Posuň se doprava pro zobrazení důležitých poznámek.

BackendV1BackendV2Poznámky
backend.configuration().n_qubitsbackend.num_qubits
backend.configuration().coupling_mapbackend.coupling_mapNávratová hodnota z BackendV2 je objekt CouplingMap. V BackendV1 to je seznam hran. Toto je také pouze pohled na informace obsažené v backend.target, který může být pouze podmnožinou informací obsažených v objektu Target.
backend.configuration().backend_namebackend.name
backend.configuration().backend_versionbackend.backend_versionAtribut BackendV2.version reprezentuje verzi abstraktního rozhraní Backend, které objekt implementuje, zatímco BackendV2.backend_version jsou metadata o verzi samotného Backend.
backend.configuration().basis_gatesbackend.operation_namesBackendV2 vrací seznam názvů operací obsažených v atributu backend.target. Target může obsahovat více informací, než lze vyjádřit tímto seznamem názvů. Například některé operace fungují pouze na podmnožině Qubit a některé názvy implementují stejný Gate s různými parametry.
backend.configuration().dtbackend.dt
backend.configuration().dtmbackend.dtm
backend.configuration().max_experimentsbackend.max_circuits
backend.configuration().online_datebackend.online_date
InstructionDurations.from_backend(backend)backend.instruction_durations
backend.defaults().instruction_schedule_mapbackend.instruction_schedule_map
backend.properties().t1(0)backend.qubit_properties(0).t1
backend.properties().t2(0)backend.qubit_properties(0).t2
backend.properties().frequency(0)backend.qubit_properties(0).frequency
backend.properties().readout_error(0)backend.target["measure"][(0,)].errorV BackendV2 se chybovost operace Measure na daném Qubit používá k modelování chyby čtení. Objekt BackendV2 však může implementovat více typů měření a uvádět je samostatně v objektu Target.
backend.properties().readout_length(0)backend.target["measure"][(0,)].durationV BackendV2 se délka trvání operace Measure na daném Qubit používá k modelování délky čtení. Objekt BackendV2 však může implementovat více typů měření a uvádět je samostatně v objektu Target.