Lewati ke konten utama
Proyek ini masih dalam tahap beta. Menemukan bug? Buat isu GitHub. Punya pertanyaan atau ide? Tanya di Discussions — kami sangat menghargai masukan kamu!
Bagaimana kualitas terjemahan di halaman ini?

Job dry-run

Job dry-run menjalankan beban kerjamu lewat IBM Quantum® Compute Service tanpa memakai waktu QPU sama sekali. Pakai job dry-run untuk melakukan hal-hal berikut sebelum kamu menjalankan yang sungguhan:

  • **Mendapatkan penggunaan yang akan dikenakan job ini pada QPU sungguhan.

  • Memvalidasi job. Quantum Compute memeriksa parameter job, sama seperti untuk job sungguhan.

  • Mendapatkan jadwal waktu circuit, jika kamu memintanya, untuk men-debug job sebelum menjalankannya sungguhan.

Berbeda dengan job dry-run, pengujian lokal (fake backend dan Qiskit Aer) berjalan di mesinmu sendiri sehingga tidak bisa memberikan angka penggunaan, validasi sisi layanan, atau informasi waktu dari layanan. Untuk membandingkan kedua pendekatan ini, lihat Perangkat mock dibandingkan dengan fake backend.

catatan
  • qiskit-ibm-runtime v0.51.0 atau yang lebih baru diperlukan untuk job dry-run.
  • Job dry-run tersedia di semua wilayah, dan hanya tersedia di paket Flex, Premium, dan On-Prem. Job ini tidak tersedia di paket Open atau Pay-As-You-Go.

Cara kerjanya​

Untuk menjalankan job dry-run, berikan dry_run=True ke metode run() milik primitive:

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 adalah argumen dari metode run() (defaultnya False), bukan opsi runtime. Argumen ini tersedia untuk semua primitive.

Job dry-run punya karakteristik berikut:

  • Job ini berjalan di IBM Quantum Compute Service di cloud, bukan di mesinmu.

  • Job ini memakai data kalibrasi dari QPU sungguhan, bukan sekadar snapshot.

  • Hasilnya mempertahankan skema yang diharapkan dan mengikuti bentuk hasil yang diharapkan dari QPU sungguhan, tetapi berisi data mock yang diacak. Hasil ini bukan hasil pengukuran asli atau hasil simulasi, jadi jangan dipakai untuk memeriksa kebenaran fisik.

  • Pemrosesan terjadi di server, jadi job mungkin tidak langsung selesai.

Ukuran circuit, shot, dan batasan lainnya sama seperti untuk job apa pun dari program tersebut.

dry_run=True juga berfungsi ketika backend-nya sudah berupa perangkat mock.

Membaca penggunaan​

Penggunaan dari job dry-run yang sudah selesai sama dengan penggunaan yang akan dikenakan job yang sama pada QPU sungguhan, kecuali dalam situasi langka ketika data kalibrasi berubah signifikan setelah job dry-run dan sebelum job di QPU sungguhan.

  • job.usage() mengembalikan penggunaan dalam detik.

  • job.metrics()["usage"] mengembalikan data yang sama beserta status penggunaan.

Penggunaan dry-run tidak ditagih, tidak memakai alokasi paketmu, dan tidak dihitung terhadap batasan apa pun.

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 sampai perhitungan penggunaan final, jadi tunggu job selesai sebelum membacanya.

Jadwal waktu circuit​

Untuk meminta jadwal waktu circuit, gunakan opsi yang sama seperti untuk job sungguhan. Untuk detail lengkap, lihat Visualisasikan waktu circuit.

Keterbatasan​

  • Hanya mode job dan batch. Job dry-run hanya bisa berjalan di job mode dan batch mode.

  • Hanya paket Flex, Premium, dan On-Prem. Job dry-run tidak tersedia di paket Open atau Pay-As-You-Go.

Perangkat mock​

Perangkat mock adalah implementasi di balik job dry-run. Job dry-run menyembunyikan perangkat mock secara default, tetapi kamu akan menemukannya dalam kasus-kasus berikut:

  • Instance yang dikonfigurasi hanya untuk mengakses perangkat mock. Contoh: jika kamu memakai service.backend("ibm_phoenix") untuk mengirim job dry-run ke ibm_phoenix, tetapi instance-mu tidak punya akses ke ibm_phoenix, kamu akan mendapat QiskitBackendNotFoundError. Sebagai gantinya, pilih perangkat mock secara langsung dengan service.backend("mock_phoenix").

  • Compute resources. Perangkat mock disembunyikan secara default di halaman Compute resources. Tabel di halaman itu punya opsi filter untuk menyertakannya, tetapi hanya paket Flex, Premium, dan On-Prem yang punya akses ke perangkat mock.

  • Tabel Workloads. Job dari perangkat mock disembunyikan secara default di halaman Workloads. Tabelnya punya opsi filter (ikon corong) untuk menampilkannya.

  • Python API. service.backends() dan service.jobs() mengecualikan perangkat mock kecuali kamu memanggilnya dengan include_mocks=True. IBMBackend.is_mock menunjukkan apakah sebuah backend adalah perangkat mock. service.least_busy() tidak pernah mengembalikan perangkat mock.

Perangkat mock dibandingkan dengan fake backend​

Namanya mirip, tetapi perangkat mock dan fake backend adalah dua hal yang berbeda. Fake backend adalah objek lokal di lingkungan Python-mu. Perangkat mock adalah resource cloud di IBM Quantum Compute Service.

Perangkat mock (misalnya mock_phoenix)Fake backend (misalnya FakeManilaV2)
Apa ituSebuah perangkat di IBM Quantum Compute ServiceKelas Python di qiskit_ibm_runtime.fake_provider
Tempat berjalanCloud, di dalam layananSecara lokal, di mesinmu
Cara mendapatkannyaservice.backend("mock_phoenix"), atau otomatis dengan run(..., dry_run=True)from qiskit_ibm_runtime.fake_provider import ...
Akun dan instanceHanya paket tertentu (Flex, Premium, atau On-Prem)Semua instance dan paket
KalibrasiLangsung, sesuai dengan perangkat sungguhan setiap saatSnapshot tetap yang disertakan dalam paket terinstal
HasilData acak dengan skema yang diharapkan. Bukan simulasiSimulasi ber-noise yang memakai model noise dari snapshot
Hasil bermakna secara fisikTidak. Jangan pernah dipakai untuk memeriksa kebenaranKurang lebih, dalam batas model noise
Penggunaan dilaporkanYaTidak ada
Ditagih atau dihitung terhadap alokasi atau batasan paketTidakTidak
Validasi jobDilakukan oleh layanan, sama seperti job sungguhanTerbatas pada apa yang diperiksa klien
Jadwal waktuTersedia berdasarkan permintaanTidak tersedia
Mode eksekusiHanya mode job dan batch. Session diblokirSintaks session diterima tetapi diabaikan (mode lokal tidak punya session atau batch sungguhan)
PenyelesaianAsinkron, di serverBerjalan secara lokal dan mengembalikan hasil saat selesai
Ditampilkan di antarmuka platform dan daftar APIDisembunyikan secara default (Compute resources, tabel Workloads, backends(), jobs()). Aktifkan untuk menampilkanTidak pernah, karena tidak ada yang dikirim ke layanan

Cara memilih​

  • Untuk mengetahui berapa banyak penggunaan yang akan dihabiskan job, atau apakah layanan akan menerimanya, gunakan job dry-run.

  • Untuk mengetahui seperti apa kira-kira outputnya, atau untuk bekerja secara offline, gunakan fake backend atau Aer.

  • Untuk keduanya, iterasikan circuit dan hasil dengan fake backend, lalu lakukan dry-run sebagai pemeriksaan terakhir sebelum QPU sungguhan.

Titik-titik yang sering membingungkan​

  • Perangkat mock bukan simulator. Outputnya acak, jadi men-sampling circuit Bell di mock_phoenix tidak mengembalikan distribusi Bell. Kalau kamu mau output ber-noise yang realistis, pakai fake backend.

  • Fake backend bukan perangkat yang live. Kalibrasinya adalah snapshot dan mungkin sudah usang. Perangkat mock mengikuti kalibrasi sungguhan, jadi circuit yang di-transpile dan waktunya sesuai dengan apa yang dilihat QPU hari ini.

  • Keduanya tidak berjalan di hardware sungguhan. Keduanya tidak memakai waktu QPU, tetapi hanya job dry-run yang melewati layanan.

  • usage_estimation bukan estimasi dry-run. Untuk job dry-run, job.usage() mengembalikan detik penggunaan yang akan ditagihkan untuk jobmu pada QPU sungguhan.

Kasus penggunaan​

Pelajar dan kursus​

Seorang administrator membatasi instance hanya untuk perangkat mock, memakai tombol kustomisasi QPU saat membuat atau mengedit instance. Dengan begitu pelajar bisa memvalidasi payload mereka dari ujung ke ujung tanpa memakai waktu QPU atau RU sungguhan. Karena instance hanya punya akses ke perangkat mock, pelajar memilih backend lewat nama mock-nya:

backend = service.backend("mock_phoenix")
sampler = Sampler(mode=backend)
job = sampler.run([isa_circuit], dry_run=True)

Perencanaan proyek​

Tim yang akan memulai proyek melakukan dry-run pada job yang representatif untuk melihat RU yang dibutuhkan proyek, sebelum memilih paket atau alokasi:

backend = service.backend("ibm_phoenix")
sampler = Sampler(mode=backend)
job = sampler.run([isa_circuit], dry_run=True)
job.result()
print(job.usage())

Pemeriksaan akhir sebelum berjalan di QPU sungguhan​

Validasi parameter dan periksa jadwal waktu dengan dry_run=True, lalu hapus argumen itu dan jalankan di QPU sungguhan. Tidak ada hal lain di kodemu 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 selanjutnya​

Rekomendasi