Lewati ke konten utama

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.

Catatan tentang menentukan opsi primitif
  • 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 Unset dan default server yang dipakai.
  • Atribut options bertipe Python dataclass. Kamu bisa menggunakan metode bawaan asdict untuk 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

Rekomendasi