Langkau ke kandungan utama
Projek ini dalam fasa beta. Jumpa pepijat? Buat isu GitHub. Ada soalan atau idea? Tanya dalam Discussions — kami suka dengar maklum balas anda!
Bagaimana kualiti terjemahan pada halaman ini?

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.

nota
  • qiskit-ibm-runtime v0.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 dengan job dry-run

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 pada ibm_phoenix, tetapi instance anda tidak mempunyai akses kepada ibm_phoenix, anda akan mendapat QiskitBackendNotFoundError. Sebaliknya, pilih peranti mock secara terus dengan service.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() dan service.jobs() mengecualikan peranti mock melainkan anda memanggilnya dengan include_mocks=True. IBMBackend.is_mock menunjukkan 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 ituPeranti dalam IBM Quantum Compute ServiceKelas Python dalam qiskit_ibm_runtime.fake_provider
Tempat ia berjalanAwan, dalam perkhidmatanSecara tempatan, pada mesin anda
Cara mendapatkannyaservice.backend("mock_phoenix"), atau secara automatik dengan run(..., dry_run=True)from qiskit_ibm_runtime.fake_provider import ...
Akaun dan instancePelan tertentu sahaja (Flex, Premium atau On-Prem)Semua instance dan pelan
PenentukuranLangsung, sepadan dengan peranti sebenar pada bila-bila masaSyot kilat tetap yang disertakan bersama pakej yang dipasang
KeputusanData rawak dengan skema yang dijangka. Bukan simulasiSimulasi berhingar yang menggunakan model hingar syot kilat
Keputusan bermakna secara fizikalTidak. Jangan sekali-kali gunakannya untuk menyemak ketepatanSecara anggaran, dalam had model hingar
Penggunaan dilaporkanYaTiada
Dicaj atau dikira terhadap peruntukan pelan atau hadTidakTidak
Pengesahan jobDilakukan oleh perkhidmatan, sama seperti job sebenarTerhad kepada apa yang disemak oleh klien
Jadual masaTersedia atas permintaanTidak tersedia
Mod pelaksanaanJob dan batch mode sahaja. Session disekatSintaks session diterima tetapi diabaikan (mod tempatan tiada session atau batch sebenar)
PenyiapanTak segerak, pada pelayanBerjalan secara tempatan dan mengembalikan hasil apabila selesai
Dipaparkan dalam antara muka platform dan senarai APIDisembunyikan secara lalai (Compute resources, jadual Workloads, backends(), jobs()). Pilih untuk memaparkanTidak 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_phoenix tidak 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_estimation bukan 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​

Cadangan