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?

Pengenalan opsi

Kamu bisa menggunakan opsi untuk menyesuaikan primitif IBM Quantum 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

# Legacy server-side primitive before qiskit-ibm-runtime 0.50.0
# from qiskit_ibm_runtime import Estimator
# from qiskit_ibm_runtime.options import EstimatorOptions

# Client-side primitive introduced in qiskit-ibm-runtime 0.50.0
from qiskit_ibm_runtime.executor_estimator import Estimator
from qiskit_ibm_runtime.options_models 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

# Legacy server-side primitive before qiskit-ibm-runtime 0.50.0
# from qiskit_ibm_runtime import Estimator

# Client-side primitive introduced in qiskit-ibm-runtime 0.50.0
from qiskit_ibm_runtime.executor_estimator import 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

# Legacy server-side primitive before qiskit-ibm-runtime 0.50.0
# from qiskit_ibm_runtime import Estimator

# Client-side primitive introduced in qiskit-ibm-runtime 0.50.0
from qiskit_ibm_runtime.executor_estimator import 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