Dry-run joby
Dry-run job spustí tvoji úlohu v IBM Quantum® Compute Service, aniž by spotřeboval jakýkoli čas QPU. Dry-run job použij k následujícímu ještě před tím, než se pustíš do skutečného běhu:
-
**Zjisti spotřebu, kterou by job způsobil na skutečném QPU.
-
Ověř job. Quantum Compute zkontroluje parametry jobu stejným způsobem jako u skutečného jobu.
-
Získej časový plán obvodu, pokud o něj požádáš, a odlaď job dříve, než ho spustíš doopravdy.
Na rozdíl od dry-run jobů se lokální testování (fake backendy a Qiskit Aer) spouští na tvém vlastním počítači, a proto nemůže poskytnout údaje o spotřebě, validaci na straně služby ani informace o časování ze služby. Porovnání obou přístupů najdeš v části Mock zařízení v porovnání s fake backendy.
- Pro dry-run joby je vyžadován
qiskit-ibm-runtimeve verzi v0.51.0 nebo novější. - Dry-run joby jsou dostupné ve všech regionech a pouze v plánech Flex, Premium a On-Prem. V plánech Open ani Pay-As-You-Go dostupné nejsou.
Jak to funguje
Chceš-li spustit dry-run job, předej metodě run() primitivy argument dry_run=True:
backend = service.backend("ibm_phoenix")
isa_circuit = pm.run(circuit) # transpiled for ibm_phoenix
sampler = Sampler(mode=backend)
job = sampler.run([isa_circuit], dry_run=True)
job.result() # wait for completion
print(job.usage())
dry_run je argument metody run() (výchozí hodnota je False), nikoli runtime volba. Je dostupný pro všechny primitivy.
Dry-run job má následující vlastnosti:
-
Běží v IBM Quantum Compute Service v cloudu, ne na tvém počítači.
-
Používá kalibrační data ze skutečného QPU, nejen jejich snímek.
-
Jeho výsledky zachovávají očekávané schéma a odpovídají očekávanému tvaru výsledků ze skutečného QPU, ale obsahují náhodně vygenerovaná mock data. Nejsou to skutečné ani simulované výsledky měření, proto je nepoužívej ke kontrole fyzikální správnosti.
-
Zpracování probíhá na serveru, takže job nemusí skončit okamžitě.
Velikost obvodu, počet shotů a další limity jsou stejné jako u kteréhokoli jobu daného programu.
dry_run=True funguje také tehdy, když je backend již mock zařízení.
Zjištění spotřeby
Spotřeba dokončeného dry-run jobu odpovídá spotřebě, kterou by stejný job způsobil na skutečném QPU, s výjimkou vzácných situací, kdy se kalibrační data výrazně změní po dry-run jobu a před jobem na skutečném QPU.
-
job.usage()vrací spotřebu v sekundách. -
job.metrics()["usage"]vrací stejná data spolu se stavem spotřeby.
Spotřeba dry-run jobů se neúčtuje, nečerpá alokaci tvého plánu a nezapočítává se do žádných limitů.
Nepoužívej job.usage_estimation u dry-run jobu. Použij job.usage().
job.usage() vrací 0, dokud není výpočet spotřeby konečný, proto před jeho přečtením počkej, až job skončí.
Časový plán obvodu
Chceš-li si vyžádat časový plán obvodu, použij stejnou volbu jako u skutečného jobu. Podrobnosti najdeš v části Vizualizace časování obvodu.
Omezení
-
Pouze job mode a batch mode. Dry-run joby lze spouštět pouze v job mode a batch mode.
-
Pouze plány Flex, Premium a On-Prem. Dry-run joby nejsou dostupné v plánech Open ani Pay-As-You-Go.
Mock zařízení
Mock zařízení jsou implementací, na které dry-run joby stojí. Dry-run joby mock zařízení ve výchozím stavu skrývají, ale setkáš se s nimi v těchto případech:
-
Instance nakonfigurované pouze pro přístup k mock zařízením. Příklad: pokud pomocí
service.backend("ibm_phoenix")odesíláš dry-run job naibm_phoenix, ale tvoje instance kibm_phoenixpřístup nemá, dostaneš chybuQiskitBackendNotFoundError. Místo toho vyber mock zařízení přímo pomocíservice.backend("mock_phoenix"). -
Compute resources. Mock zařízení jsou na stránce Compute resources ve výchozím stavu skrytá. Tabulka na stránce má volbu filtru, která je zobrazí, ale k mock zařízením mají přístup pouze plány Flex, Premium a On-Prem.
-
Tabulka Workloads. Joby z mock zařízení jsou na stránce Workloads ve výchozím stavu skryté. Tabulka má volbu filtru (ikona nálevky), která je zobrazí.
-
Python API.
service.backends()aservice.jobs()mock zařízení vynechávají, pokud je nezavoláš sinclude_mocks=True.IBMBackend.is_mockříká, zda je backend mock zařízení.service.least_busy()mock zařízení nikdy nevrací.
Mock zařízení v porovnání s fake backendy
Názvy jsou podobné, ale mock zařízení a fake backend jsou různé věci. Fake backend je lokální objekt v tvém prostředí Pythonu. Mock zařízení je cloudový zdroj v IBM Quantum Compute Service.
Mock zařízení (například mock_phoenix) | Fake backend (například FakeManilaV2) | |
|---|---|---|
| Co to je | Zařízení v IBM Quantum Compute Service | Třída Pythonu v qiskit_ibm_runtime.fake_provider |
| Kde běží | V cloudu, ve službě | Lokálně na tvém počítači |
| Jak ho získáš | service.backend("mock_phoenix") nebo automaticky pomocí run(..., dry_run=True) | from qiskit_ibm_runtime.fake_provider import ... |
| Účet a instance | Pouze vybrané plány (Flex, Premium nebo On-Prem) | Všechny instance a plány |
| Kalibrace | Živá, v každém okamžiku odpovídá skutečnému zařízení | Pevný snímek dodávaný s nainstalovaným balíčkem |
| Výsledky | Náhodná data s očekávaným schématem. Není to simulace | Zašumělá simulace využívající model šumu ze snímku |
| Fyzikálně smysluplné výsledky | Ne. Nikdy je nepoužívej ke kontrole správnosti | Přibližně, v mezích modelu šumu |
| Hlášená spotřeba | Ano | Žádná |
| Účtováno nebo započítáno do alokace plánu či limitů | Ne | Ne |
| Validace jobu | Provádí služba, stejně jako u skutečného jobu | Omezena na to, co kontroluje klient |
| Časový plán | Dostupný na vyžádání | Není dostupný |
| Režimy provádění | Pouze job mode a batch mode. Session jsou blokovány | Syntaxe Session je přijata, ale ignorována (lokální režim nemá skutečné Session ani batche) |
| Dokončení | Asynchronní, na serveru | Běží lokálně a vrací výsledek po dokončení |
| Zobrazení v rozhraní platformy a v seznamech API | Ve výchozím stavu skryto (Compute resources, tabulka Workloads, backends(), jobs()). Zobrazení je na výběr | Nikdy, protože se službě nic neodesílá |
Jak vybírat
-
Chceš-li zjistit, kolik spotřeby job vyčerpá nebo zda ho služba přijme, použij dry-run job.
-
Chceš-li zjistit, jak by mohl výstup vypadat, nebo chceš pracovat offline, použij fake backend nebo Aer.
-
Chceš-li obojí, iteruj nad obvody a výsledky s fake backendem a dry-run použij jako poslední kontrolu před skutečným QPU.
Časté zdroje nejasností
-
Mock zařízení není simulátor. Jeho výstup je náhodný, takže vzorkování Bellova obvodu na
mock_phoenixnevrátí Bellovo rozdělení. Pokud chceš realistický zašuměný výstup, použij fake backend. -
Fake backend není živé zařízení. Jeho kalibrace je snímek a může být zastaralá. Mock zařízení sleduje skutečnou kalibraci, takže transpilované obvody a časování odpovídají tomu, co QPU vidí dnes.
-
Ani jedno neběží na skutečném hardwaru. Ani jedno nespotřebovává čas QPU, ale přes službu prochází pouze dry-run job.
-
usage_estimationnení odhad z dry-run. U dry-run jobu vracíjob.usage()počet sekund spotřeby, která by ti byla na skutečném QPU naúčtována.
Případy použití
Studenti a kurzy
Správce omezí instanci pouze na mock zařízení pomocí přepínače přizpůsobení QPU při vytváření nebo úpravě instance. Studenti pak mohou validovat své úlohy od začátku do konce, aniž by spotřebovávali skutečný čas QPU nebo RU. Protože má instance přístup pouze k mock zařízením, studenti vybírají backend podle jeho mock názvu:
backend = service.backend("mock_phoenix")
sampler = Sampler(mode=backend)
job = sampler.run([isa_circuit], dry_run=True)
Plánování projektu
Tým, který se chystá zahájit projekt, spustí reprezentativní joby jako dry-run, aby zjistil, kolik RU projekt potřebuje, ještě před výběrem plánu nebo alokace:
backend = service.backend("ibm_phoenix")
sampler = Sampler(mode=backend)
job = sampler.run([isa_circuit], dry_run=True)
job.result()
print(job.usage())
Poslední kontrola před spuštěním na skutečném QPU
Pomocí dry_run=True ověř parametry a prohlédni si časový plán, pak argument odstraň a spusť na skutečném QPU. Nic jiného ve tvém kódu se nemění:
sampler = Sampler(mode=backend)
# Pre-flight check
job = sampler.run([isa_circuit], dry_run=True)
job.result()
# Real run - same code, without dry_run
job = sampler.run([isa_circuit])
Další kroky
- Programy testuj na vlastním počítači pomocí Lokálního testovacího režimu.
- Zjisti, jak se měří spotřeba úloh.
- Vizualizuj časový plán obvodu.
- Seznam se s jednotkami zdrojů a dostupnými plány.