Job dry-run
Job dry-run menjalankan beban kerja anda melalui IBM Quantum® Compute Service tanpa menggunakan sebarang masa QPU. Gunakan job dry-run untuk melakukan perkara berikut sebelum anda membuat larian sebenar:
-
**Dapatkan penggunaan yang akan dikenakan oleh job pada QPU sebenar.
-
Sahkan job. Quantum Compute menyemak parameter job, sama seperti untuk job sebenar.
-
Dapatkan jadual masa litar, jika anda memintanya, untuk menyahpepijat job sebelum anda menjalankannya secara sebenar.
Tidak seperti job dry-run, pengujian tempatan (fake backend dan Qiskit Aer) berjalan pada mesin anda sendiri dan oleh itu tidak dapat menyediakan angka penggunaan, pengesahan sebelah perkhidmatan, atau maklumat masa perkhidmatan. Untuk membandingkan kedua-dua pendekatan, lihat Peranti mock berbanding fake backend.
qiskit-ibm-runtimev0.51.0 atau lebih baharu diperlukan untuk job dry-run.- Job dry-run tersedia di semua wilayah, dan hanya tersedia pada pelan Flex, Premium dan On-Prem. Ia tidak tersedia pada pelan Open atau Pay-As-You-Go.
Cara ia berfungsi
Untuk menjalankan job dry-run, hantarkan dry_run=True kepada kaedah run() primitif:
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 ialah argumen bagi kaedah run() (nilai lalai ialah False), bukan pilihan runtime. Ia tersedia untuk semua primitif.
Job dry-run mempunyai ciri-ciri berikut:
-
Ia berjalan dalam IBM Quantum Compute Service di awan, bukan pada mesin anda.
-
Ia menggunakan data penentukuran daripada QPU sebenar, bukan sekadar syot kilat.
-
Keputusannya mengekalkan skema yang dijangka dan mengikut bentuk keputusan yang dijangka daripada QPU sebenar, tetapi mengandungi data mock rawak. Ia bukan keputusan pengukuran sebenar atau simulasi, jadi jangan gunakannya untuk menyemak ketepatan fizikal.
-
Pemprosesan berlaku pada pelayan, jadi job mungkin tidak selesai serta-merta.
Saiz litar, shot dan had lain adalah sama seperti untuk mana-mana job bagi program tersebut.
dry_run=True juga berfungsi apabila backend sudah pun peranti mock.
Baca penggunaan
Penggunaan job dry-run yang telah selesai ialah penggunaan yang akan dikenakan oleh job yang sama pada QPU sebenar, kecuali dalam situasi jarang apabila data penentukuran berubah dengan ketara selepas job dry-run dan sebelum job pada QPU sebenar.
-
job.usage()mengembalikan penggunaan dalam saat. -
job.metrics()["usage"]mengembalikan data yang sama bersama status penggunaan.
Penggunaan dry-run tidak dicaj, tidak menggunakan peruntukan pelan anda, dan tidak dikira terhadap sebarang had.
Jangan gunakan job.usage_estimation pada job dry-run. Gunakan job.usage().
job.usage() mengembalikan 0 sehingga pengiraan penggunaan dimuktamadkan, jadi tunggu job selesai sebelum anda membacanya.
Jadual masa litar
Untuk meminta jadual masa litar, gunakan pilihan yang sama seperti untuk job sebenar. Untuk butiran penuh, lihat Visualisasikan masa litar.
Batasan
-
Mod job dan batch sahaja. Job dry-run hanya boleh dijalankan dalam job mode dan batch mode.
-
Pelan Flex, Premium dan On-Prem sahaja. Job dry-run tidak tersedia pada pelan Open atau Pay-As-You-Go.
Peranti mock
Peranti mock ialah pelaksanaan di sebalik job dry-run. Job dry-run menyembunyikan peranti mock secara lalai, tetapi anda akan menemuinya dalam kes berikut:
-
Instance yang dikonfigurasikan untuk mengakses peranti mock sahaja. Contoh: jika anda menggunakan
service.backend("ibm_phoenix")untuk menghantar job dry-run padaibm_phoenix, tetapi instance anda tidak mempunyai akses kepadaibm_phoenix, anda akan mendapatQiskitBackendNotFoundError. Sebaliknya, pilih peranti mock secara terus denganservice.backend("mock_phoenix"). -
Sumber pengkomputeran. Peranti mock disembunyikan secara lalai pada halaman Compute resources. Jadual pada halaman itu mempunyai pilihan penapis untuk memasukkannya, tetapi hanya pelan Flex, Premium dan On-Prem yang mempunyai akses kepada peranti mock.
-
Jadual beban kerja. Job daripada peranti mock disembunyikan secara lalai pada halaman Workloads. Jadual itu mempunyai pilihan penapis (ikon corong) untuk memaparkannya.
-
API Python.
service.backends()danservice.jobs()mengecualikan peranti mock melainkan anda memanggilnya denganinclude_mocks=True.IBMBackend.is_mockmenunjukkan sama ada sesuatu backend ialah peranti mock.service.least_busy()tidak pernah mengembalikan peranti mock.
Peranti mock berbanding fake backend
Namanya serupa, tetapi peranti mock dan fake backend ialah dua perkara yang berbeza. Fake backend ialah objek tempatan dalam persekitaran Python anda. Peranti mock ialah sumber awan dalam IBM Quantum Compute Service.
Peranti mock (contohnya mock_phoenix) | Fake backend (contohnya FakeManilaV2) | |
|---|---|---|
| Apa itu | Peranti dalam IBM Quantum Compute Service | Kelas Python dalam qiskit_ibm_runtime.fake_provider |
| Tempat ia berjalan | Awan, dalam perkhidmatan | Secara tempatan, pada mesin anda |
| Cara mendapatkannya | service.backend("mock_phoenix"), atau secara automatik dengan run(..., dry_run=True) | from qiskit_ibm_runtime.fake_provider import ... |
| Akaun dan instance | Pelan tertentu sahaja (Flex, Premium atau On-Prem) | Semua instance dan pelan |
| Penentukuran | Langsung, sepadan dengan peranti sebenar pada bila-bila masa | Syot kilat tetap yang disertakan bersama pakej yang dipasang |
| Keputusan | Data rawak dengan skema yang dijangka. Bukan simulasi | Simulasi berhingar yang menggunakan model hingar syot kilat |
| Keputusan bermakna secara fizikal | Tidak. Jangan sekali-kali gunakannya untuk menyemak ketepatan | Secara anggaran, dalam had model hingar |
| Penggunaan dilaporkan | Ya | Tiada |
| Dicaj atau dikira terhadap peruntukan pelan atau had | Tidak | Tidak |
| Pengesahan job | Dilakukan oleh perkhidmatan, sama seperti job sebenar | Terhad kepada apa yang disemak oleh klien |
| Jadual masa | Tersedia atas permintaan | Tidak tersedia |
| Mod pelaksanaan | Job dan batch mode sahaja. Session disekat | Sintaks session diterima tetapi diabaikan (mod tempatan tiada session atau batch sebenar) |
| Penyiapan | Tak segerak, pada pelayan | Berjalan secara tempatan dan mengembalikan hasil apabila selesai |
| Dipaparkan dalam antara muka platform dan senarai API | Disembunyikan secara lalai (Compute resources, jadual Workloads, backends(), jobs()). Pilih untuk memaparkan | Tidak pernah, kerana tiada apa dihantar kepada perkhidmatan |
Cara memilih
-
Untuk mengetahui berapa banyak penggunaan yang akan digunakan oleh job, atau sama ada perkhidmatan akan menerimanya, gunakan job dry-run.
-
Untuk mengetahui rupa output yang mungkin, atau untuk bekerja luar talian, gunakan fake backend atau Aer.
-
Untuk melakukan kedua-duanya, lelaran pada litar dan keputusan dengan fake backend, kemudian jalankan dry-run sebagai semakan terakhir sebelum QPU sebenar.
Perkara yang sering mengelirukan
-
Peranti mock bukan simulator. Outputnya rawak, jadi pensampelan litar Bell pada
mock_phoenixtidak mengembalikan taburan Bell. Jika anda mahukan output berhingar yang realistik, gunakan fake backend. -
Fake backend bukan peranti langsung. Penentukurannya ialah syot kilat dan mungkin sudah lapuk. Peranti mock menjejaki penentukuran sebenar, jadi litar yang ditranspilasi dan masa sepadan dengan apa yang QPU lihat hari ini.
-
Kedua-duanya tidak berjalan pada perkakasan sebenar. Kedua-duanya tidak menggunakan masa QPU, tetapi hanya job dry-run yang melalui perkhidmatan.
-
usage_estimationbukan anggaran dry-run. Bagi job dry-run,job.usage()mengembalikan saat penggunaan yang akan dicaj untuk job anda pada QPU sebenar.
Kes penggunaan
Pelajar dan kursus
Seorang pentadbir menghadkan instance kepada peranti mock sahaja, menggunakan togol penyesuaian QPU semasa mencipta atau mengedit instance. Pelajar kemudian mengesahkan payload mereka dari hujung ke hujung tanpa menggunakan masa QPU sebenar atau RU. Oleh sebab instance hanya mempunyai akses kepada peranti mock, pelajar memilih backend mengikut nama mock-nya:
backend = service.backend("mock_phoenix")
sampler = Sampler(mode=backend)
job = sampler.run([isa_circuit], dry_run=True)
Perancangan projek
Sebuah pasukan yang hampir memulakan projek menjalankan dry-run job yang mewakili untuk melihat RU yang diperlukan projek, sebelum memilih pelan atau peruntukan:
backend = service.backend("ibm_phoenix")
sampler = Sampler(mode=backend)
job = sampler.run([isa_circuit], dry_run=True)
job.result()
print(job.usage())
Semakan akhir sebelum menjalankan pada QPU sebenar
Sahkan parameter dan periksa jadual masa dengan dry_run=True, kemudian buang argumen itu dan jalankan pada QPU sebenar. Tiada perkara lain dalam kod anda yang berubah:
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])
Langkah seterusnya
- Uji program pada mesin anda sendiri dengan Mod pengujian tempatan.
- Ketahui cara penggunaan beban kerja diukur.
- Visualisasikan jadual masa litar.
- Fahami unit sumber dan pelan yang tersedia.