Pengenalan opsi
Kamu bisa menggunakan opsi untuk menyesuaikan primitif Qiskit Runtime sesuai kebutuhanmu.
Struktur
Saat memanggil primitif, kamu bisa meneruskan opsi menggunakan kelas opsi atau dictionary. Opsi yang sering digunakan, seperti resilience_level, ada di level pertama. Opsi lainnya dikelompokkan ke dalam kategori, seperti execution. Tentukan opsi dengan format ini: options.option.sub-option.sub-sub-option = choice. Misalnya: options.dynamical_decoupling.enable = True.
Default
Kalau kamu tidak menentukan nilai untuk suatu opsi, opsi itu akan diberi nilai khusus Unset dan nilai default server yang akan dipakai. Jadi, nilai default-nya akan sama terlepas dari versi kode kamu.
Tabel di bagian "Options classes summary" pada setiap panduan "options" primitif mencantumkan nilai default-nya.
Set opsi
Opsi bisa didefinisikan sebelum primitif dibuat lalu diteruskan ke primitif sebagai instance dari kelas opsi atau sebagai dictionary. Primitif akan membuat salinannya, yang berarti mengubah dictionary atau instance opsi aslinya tidak memengaruhi opsi yang dimiliki primitif.
Selain itu, kamu bisa mengubah opsi setelah primitif dibuat. Gunakan alur kerja yang paling cocok untuk aplikasimu.
- Kamu bisa melihat opsi yang tersedia selama atau setelah inisialisasi primitif.
- Kalau kamu tidak menentukan nilai untuk suatu opsi, opsi itu akan diberi nilai khusus
Unsetdan default server yang dipakai. - Atribut
optionsbertipe Pythondataclass. Kamu bisa menggunakan metode bawaanasdictuntuk mengonversinya menjadi dictionary.
Kelas options
Saat membuat instance dari kelas primitif, kamu bisa meneruskan instance dari kelas options. Opsi tersebut kemudian diterapkan saat kamu menggunakan run() untuk melakukan komputasi. Tentukan opsi dengan format ini: options.option.sub-option.sub-sub-option = choice. Misalnya: options.dynamical_decoupling.enable = True.
Lihat SamplerOptions atau EstimatorOptions untuk detail lengkap tentang kelas tersebut.
Contoh berikut menggunakan primitif Estimator, tapi sintaks untuk primitif lain mirip.
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator
from qiskit_ibm_runtime.options import EstimatorOptions
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
options = EstimatorOptions(
resilience_level=2,
resilience={"zne_mitigation": True, "zne": {"noise_factors": [1, 3, 5]}},
)
# or...
options = EstimatorOptions()
options.resilience_level = 2
options.resilience.zne_mitigation = True
options.resilience.zne.noise_factors = [1, 3, 5]
estimator = Estimator(mode=backend, options=options)
Dictionary
Kamu bisa menentukan opsi sebagai dictionary saat menginisialisasi primitif.
Contoh berikut menggunakan primitif Estimator, tapi sintaks untuk primitif lain mirip.
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
# Setting options during initialization
estimator = Estimator(
backend,
options={
"resilience_level": 2,
"resilience": {
"zne_mitigation": True,
"zne": {"noise_factors": [1, 3, 5]},
},
},
)
Perbarui opsi setelah inisialisasi
Kamu bisa menentukan opsi dengan format ini: _primitive_.options.option.sub-option.sub-sub-option = choice untuk memanfaatkan auto-complete, atau gunakan metode update() untuk melakukan pembaruan secara massal.
Kelas opsi primitif (EstimatorOptions atau SamplerOptions) tidak perlu diinstansiasi kalau kamu menyetel opsi setelah menginisialisasi primitif.
Contoh berikut menggunakan primitif Estimator, tapi sintaks untuk primitif lain mirip.
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
estimator = Estimator(mode=backend)
# Setting options after initialization
# This uses auto-complete.
estimator.options.default_precision = 0.01
# This does bulk update.
estimator.options.update(
default_precision=0.02, resilience={"zne_mitigation": True}
)
Langkah selanjutnya
- Temukan detail cara mengonfigurasi error suppression dan error mitigation.
- Pelajari lebih lanjut tentang opsi Estimator.
- Pelajari lebih lanjut tentang opsi Sampler.
- Pelajari lebih lanjut tentang opsi Executor.