Langkau ke kandungan utama

Pengenalan kepada pilihan

Anda boleh menggunakan pilihan untuk menyesuaikan primitif Qiskit Runtime mengikut keperluan anda.

Struktur

Apabila memanggil primitif, anda boleh menghantar pilihan menggunakan kelas pilihan atau kamus. Pilihan yang kerap digunakan, seperti resilience_level, berada di peringkat pertama. Pilihan lain dikumpulkan ke dalam kategori, seperti execution. Tentukan pilihan dalam format ini: options.option.sub-option.sub-sub-option = choice. Sebagai contoh: options.dynamical_decoupling.enable = True.

Nilai lalai

Jika anda tidak menentukan nilai untuk sesuatu pilihan, ia akan diberikan nilai khas Unset dan nilai lalai pelayan akan digunakan. Oleh itu, nilai lalai akan sama tanpa mengira versi kod anda.

Jadual dalam bahagian "Ringkasan kelas pilihan" pada setiap panduan "options" primitif menyenaraikan nilai lalai.

Tetapkan pilihan

Pilihan boleh ditakrifkan sebelum primitif dibina dan dihantar kepada primitif sebagai satu instance kelas pilihan atau kamus. Primitif membuat salinannya, yang bermaksud bahawa mengubah kamus asal atau instance pilihan tidak menjejaskan pilihan yang dimiliki oleh primitif.

Selain itu, anda boleh mengubah pilihan selepas primitif dibina. Gunakan aliran kerja yang paling sesuai untuk aplikasi anda.

Nota tentang menentukan pilihan primitif
  • Anda boleh melihat pilihan yang tersedia semasa atau selepas pemulaan primitif.
  • Jika anda tidak menentukan nilai untuk sesuatu pilihan, ia akan diberikan nilai khas Unset dan nilai lalai pelayan akan digunakan.
  • Atribut options adalah jenis Python dataclass. Anda boleh menggunakan kaedah terbina asdict untuk menukarkannya kepada kamus.

kelas options

Apabila mencipta satu instance kelas primitif, anda boleh menghantar masuk satu instance kelas options. Pilihan tersebut kemudiannya digunakan apabila anda menggunakan run() untuk melakukan pengiraan. Tentukan pilihan dalam format ini: options.option.sub-option.sub-sub-option = choice. Sebagai contoh: options.dynamical_decoupling.enable = True.

Lihat SamplerOptions atau EstimatorOptions untuk butiran penuh tentang kelas tersebut.

Contoh berikut menggunakan primitif Estimator, tetapi sintaks untuk primitif lain adalah serupa.

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)

Kamus

Anda boleh menentukan pilihan sebagai kamus apabila memulakan primitif.

Contoh berikut menggunakan primitif Estimator, tetapi sintaks untuk primitif lain adalah serupa.

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]},
},
},
)

Kemas kini pilihan selepas pemulaan

Anda boleh menentukan pilihan dalam format ini: _primitive_.options.option.sub-option.sub-sub-option = choice untuk memanfaatkan auto-lengkap, atau gunakan kaedah update() untuk membuat kemas kini secara pukal.

Kelas pilihan primitif (EstimatorOptions atau SamplerOptions) tidak perlu di-instantiate jika anda menetapkan pilihan selepas memulakan primitif.

Contoh berikut menggunakan primitif Estimator, tetapi sintaks untuk primitif lain adalah serupa.

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 seterusnya

Cadangan