Přeskočit na hlavní obsah
Tento projekt je v betě. Našel jsi chybu? Otevřít issue na GitHubu. Máš otázku nebo nápad? Zeptej se v Discussions — rádi si poslechneme tvou zpětnou vazbu!
Jaká je kvalita překladu na této stránce?

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é tam, kde to bude možné, 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 získávají informace z jeho atributu BackendV2.target. 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. Jde také jen o pohled na informace obsažené v backend.target; tento pohled může zachycovat pouze podmnožinu informací z 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.