Penggunaan beban kerja
Penggunaan mewakili penggunaan perkhidmatan Qiskit Runtime dan ditentukan oleh jumlah masa QPU dikunci untuk melaksanakan beban kerja.
- Penggunaan Session diukur sebagai masa yang berlalu semasa sesi kekal aktif, kerana kapasiti QPU dikhaskan untuk tempoh sesi, tanpa mengira sama ada beban kerja sedang berjalan secara aktif. Lihat Tempoh sesi untuk maklumat lanjut tentang peralihan status sesi.
- Penggunaan Batch diukur sebagai jumlah kumulatif masa QPU dikunci untuk melaksanakan semua kerja dalam batch.
- Penggunaan kerja tunggal diukur sebagai masa QPU dikunci untuk melaksanakan kerja.
Perlu diingat bahawa kerja yang gagal atau dibatalkan dikira dalam penggunaan anda dalam keadaan tertentu - lihat bahagian Kerja yang gagal dan dibatalkan untuk butiran.
Bagi pengguna Pelan Pay-As-You-Go, lihat Urus kos untuk butiran tentang menetapkan had kos.
Penggunaan untuk kerja yang gagal dan dibatalkan
Apabila kerja gagal atau dibatalkan, penggunaan yang dilaporkan adalah seperti berikut:
-
Mod kerja atau batch: Jika kegagalan atau pembatalan berlaku disebabkan ralat sistem, penggunaan yang dilaporkan adalah sifar. Bagi kerja yang gagal akibat ralat pengguna atau apabila pengguna membatalkan kerja, penggunaan yang dilaporkan adalah sebarang penggunaan yang telah berlaku sehingga masa itu, termasuk overhed yang ditanggung untuk menyediakan QPU bagi menjalankan kerja.
-
Mod sesi: Penggunaan yang dilaporkan adalah masa jam dinding semasa sesi aktif, tanpa mengira bilangan kerja yang gagal atau dibatalkan.
Tanya penggunaan sebenar beban kerja
Selepas beban kerja selesai, terdapat beberapa cara untuk melihat penggunaan sebenarnya:
- Jalankan
batch.usage()atausession.usage()dalamqiskit-ibm-runtime0.30 atau lebih baharu. Jika menggunakan versi lamaqiskit-ibm-runtime(>= 0.23 dan < 0.30), penggunaan masih boleh didapati dalamsession.details()["usage_time"]danbatch.details()["usage_time"]. - Gunakan
GET /sessions/{id}untuk melihat penggunaan bagi batch atau sesi tertentu. - Gunakan
GET /jobs/{id}untuk melihat penggunaan bagi kerja tunggal.
Lihat penggunaan instans
Anda boleh melihat penggunaan instans pada halaman Instans, atau, bagi mereka yang mempunyai autoriti yang sesuai, halaman Analitik. Perlu diingat bahawa halaman tersebut mungkin menunjukkan nombor penggunaan yang berbeza kerana ia mengira penggunaan secara berbeza.
Halaman Instans menunjukkan penggunaan masa nyata untuk 28 hari lepas (bergulir), sehingga masa semasa pada hari semasa. Penggunaan halaman Analitik dikira semula setiap jam dan merangkumi 28 hari penuh terakhir; iaitu, ia menunjukkan penggunaan dari 00:00 28 hari lalu hingga hari ini, pada jam teratas.
Anggarkan penggunaan sebelum menghantar kerja
Walaupun mendapatkan anggaran setempat yang tepat adalah rumit kerana operasi tambahan yang dilakukan untuk penindasan dan mitigasi ralat, anda boleh menggunakan formula asas ini untuk mendapatkan anggaran penggunaan yang dianggarkan:
<overhead setiap sub-kerja> + (rep_delay + <panjang litar>) * <bilangan pelaksanaan>
<overhead setiap sub-kerja>adalah overhead kira-kira 2 saat setiap sub-kerja. Ini termasuk operasi seperti memuatkan muatan ke dalam elektronik kawalan. Kerja primitif anda mungkin dibahagikan kepada berbilang sub-kerja jika terlalu besar untuk diproses oleh enjin pelaksanaan sekaligus.rep_delayadalah pilihan yang boleh disesuaikan pengguna, dan lalainya diberikan olehbackend.default_rep_delay, iaitu 250 mikrosaat pada kebanyakan backend IBM Quantum. Perlu diingat bahawa mengurangkanrep_delaymengurangkan jumlah masa pelaksanaan QPU, tetapi dengan kos kadar ralat penyediaan keadaan yang meningkat; lihat panduan Pelaksanaan kadar pengulangan dinamik untuk maklumat lanjut.<panjang litar>adalah jumlah panjang arahan. Setiap arahan mengambil masa yang berbeza pada QPU, jadi jumlah panjang berbeza-beza dari litar ke litar. Pengukuran, contohnya, boleh mengambil masa 56 kali lebih lama daripada gatex.backend.target[<instruction>][<qubit>].durationboleh digunakan untuk mencari tempoh tepat bagi setiap arahan. Panjang litar biasa mungkin antara 50-100 mikrosaat. Jika anda menggunakan teknik penindasan atau mitigasi ralat dengan primitif, arahan tambahan mungkin dimasukkan ke dalam litar anda, yang akan meningkatkan jumlah panjang litar.notaPilihan
scheduler_timingeksperimen mengembalikan jumlah masa litar, tetapi ini BUKAN masa yang digunakan untuk pengebilan.<bilangan pelaksanaan>adalah jumlah bilangan litar darab bilangan shot, di mana litar adalah yang dijana selepas elemen PUB disiarkan.- Jika anda menggunakan teknik mitigasi ralat dengan primitif, litar tambahan mungkin dijalankan sebagai sebahagian daripada proses mitigasi, yang akan meningkatkan jumlah bilangan pelaksanaan. Selain itu, teknik mitigasi ralat lanjutan seperti PEA dan PEC datang dengan overhead yang jauh lebih tinggi kerana ia memerlukan menjalankan litar untuk pembelajaran hingar.
- Estimator mengumpulkan boleh cerap yang berkomutat secara qubit-bijak, yang mengurangkan bilangan pelaksanaan.
Jika anda tidak menggunakan sebarang teknik mitigasi ralat lanjutan atau rep_delay tersuai, anda boleh menggunakan 2+0.00035*<bilangan pelaksanaan> sebagai formula pantas.
Anggarkan penggunaan secara setempat dengan Qiskit
Contoh kod ini menunjukkan cara menggunakan Qiskit untuk mengira masa litar:
# Schedule the circuit to get more accurate timing
pm = generate_preset_pass_manager(
target=backend.target,
optimization_level=0,
scheduling_method="alap"
)
scheduled_circuits = pm.run(isa_circuits)
init_duration = backend.target["reset"][(0,)].duration
rep_delay = sampler.options.execution.rep_delay or backend.default_rep_delay
circuit_duration = 0
for circuit in scheduled_circuits:
# Estimate circuit length
circuit_duration += circuit.estimate_duration(backend.target)
# Add INIT time
if sampler.options.execution.init_qubits:
circuit_duration += init_duration
# Add rep_delay
circuit_duration += rep_delay
total_time = 2 + (circuit_duration*shots)
print(f"Total estimated usage is {math.ceil(total_time)} seconds")
Langkah seterusnya
- Semak petua ini: Minimumkan masa jalankan kerja.
- Tetapkan Masa pelaksanaan maksimum.
- Pelajari cara mentranspil secara setempat dalam bahagian Transpil.
- Cuba panduan Bandingkan tetapan transpiler.