Lewati ke konten utama

Pengenalan Qiskit Functions

Catatan
  • Qiskit Functions adalah fitur eksperimental yang hanya tersedia untuk pengguna IBM Quantum® Premium Plan, Flex Plan, dan On-Prem (melalui IBM Quantum Platform API) Plan. Fitur ini masih dalam status rilis pratinjau dan dapat berubah sewaktu-waktu.
Versi paket

Kode di halaman ini dikembangkan menggunakan persyaratan berikut. Kami menyarankan untuk menggunakan versi ini atau yang lebih baru.

qiskit[all]~=1.4.1
qiskit-ibm-runtime~=0.37.0
qiskit-ibm-catalog~=0.4

Qiskit Functions menyederhanakan dan mempercepat penemuan algoritma serta pengembangan aplikasi skala utilitas, dengan mengabstraksi sebagian alur kerja pengembangan perangkat lunak kuantum. Dengan begitu, Qiskit Functions membebaskan waktu yang biasanya dihabiskan untuk menulis kode secara manual dan menyempurnakan eksperimen.

Gambaran umum Qiskit Functions Functions tersedia dalam dua bentuk:

TipeApa fungsinya?Contoh input dan outputUntuk siapa?
Circuit functionAntarmuka yang disederhanakan untuk menjalankan Circuit. Mengabstraksi transpilasi, penekanan error, dan mitigasi errorInput: Objek PUB abstrak
Output: Nilai ekspektasi yang dimitigasi
Peneliti yang menggunakan Qiskit untuk menemukan algoritma dan aplikasi baru, tanpa perlu fokus pada optimasi hardware atau penanganan error. Circuit function bisa digunakan untuk membangun application function kustom.
Application functionMencakup tugas tingkat lebih tinggi, seperti mengeksplorasi algoritma dan kasus penggunaan spesifik domain. Mengabstraksi alur kerja kuantum untuk menyelesaikan tugas, dengan input dan output klasikInput: Molekul, graf
Output: Energi ground + excited state, nilai optimal untuk fungsi biaya
Peneliti di domain non-kuantum, yang mengintegrasikan kuantum ke dalam alur kerja klasik skala besar yang sudah ada, tanpa perlu memetakan data klasik ke Circuit kuantum.
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-ibm-catalog qiskit-ibm-runtime

Functions disediakan oleh IBM® dan mitra pihak ketiga. Masing-masing dioptimalkan untuk karakteristik beban kerja tertentu dan memiliki opsi penyetelan performa yang unik.

Gambaran umum fungsi yang tersedia​

Circuit functions​

NamaProviderPenggunaan yang disarankanKeunggulan unik
Tensor-Network Error MitigationAlgorithmiqBeban kerja dengan observable berbobot rendah dan Circuit bebas loop.Mengurangi overhead pengukuran dan varians, mengungguli baseline mitigasi error standar seperti Zero Noise Extrapolation (ZNE) dan Probabilistic Error Cancellation (PEC) untuk kelas Circuit yang relevan.
QESEM: Error Suppression and Error MitigationQedmaBeban kerja yang mencakup Circuit dengan gate fraksional atau berparameter, observable berbobot tinggi, dan alur kerja yang memerlukan nilai ekspektasi tak bias serta estimasi runtime yang akurat.Menghasilkan nilai ekspektasi tak bias dengan varians dan overhead sumber daya lebih rendah, mengungguli ZNE dan PEC untuk kelas Circuit yang relevan.
Performance ManagementQ-CTRLBeban kerja yang mengandung Circuit parametrik, Circuit dalam, atau memerlukan banyak eksekusi Circuit.Secara otomatis menerapkan penekanan error berbasis AI pada algoritma kuantum, memaksimalkan performa perangkat IBM untuk menghasilkan hasil yang akurat sekaligus mengurangi jumlah shot, waktu komputasi, dan biaya.

Metode zero-overhead yang meningkatkan akurasi eksekusi untuk primitif Sampler dan Estimator, kompatibel dengan observable berbobot apa pun.

Application functions​

NamaProviderPenggunaan yang disarankanKeunggulan unik
QUICK-PDEColibriTDGunakan komputasi kuantum untuk PDE multi-fisika.

Siapkan alur kerja simulasi untuk hardware kuantum, sambil tetap mempertahankan kontrol penuh atas parameter pemodelan kuantum maupun fisika.
Menawarkan kerangka VQA hibrida yang tangguh yang menghasilkan solusi PDE presisi dan skalabel melalui encoding solusi canggih dan metode spektral, menjadikannya titik masuk ideal bagi tim yang ingin membangun kemampuan simulasi siap-kuantum.
Quantum Portfolio OptimizerGlobal Data QuantumBeban kerja optimasi keuangan, mencari strategi portofolio optimal dari waktu ke waktu sambil meminimalkan risiko dan memaksimalkan imbal hasil, memungkinkan back-testing strategi perdagangan.Menyelesaikan masalah optimasi kombinatorial melalui adaptasi yang sangat terspesialisasi dari algoritma kuantum VQE untuk kasus penggunaan keuangan ini, menggunakan strategi eksekusi dan optimizer yang dioptimalkan, beserta teknik mitigasi error yang peka terhadap noise yang disesuaikan untuk optimasi portofolio.
HI-VQE ChemistryQunova ComputingBeban kerja dalam kimia komputasi, simulasi molekul, ilmu material, atau simulasi Hamiltonian apa pun yang memerlukan penyelesaian masalah struktur elektronik many-body.Menyelesaikan struktur elektronik molekul dengan menggunakan SQD yang ditingkatkan untuk mencapai akurasi kimia (1 kcal/mol, 1,6 mHa) bagi masalah yang dimodelkan dengan 40 hingga 60 qubit, melampaui beberapa solusi klasik di superkomputer atau SQD standar dalam kecepatan konvergensi atau akurasi, masing-masing hingga beberapa orde besaran.
Iskay Quantum OptimizerKipu QuantumBeban kerja optimasi seperti penjadwalan, logistik, routing, dan masalah QUBO/HUBO.

Metode pra- dan pasca-pemrosesan klasik yang dapat disetel dan terintegrasi untuk rutinitas optimasi kuantum.

Memberikan keunggulan runtime dibanding solver klasik (CPLEX, simulated annealing, dan tabu search) pada benchmark HUBO tertentu.

Market Split ms_5_100, tantangan sulit, diselesaikan dalam hitungan jam (lihat tutorial ini).
Singularity Machine LearningMultiverse ComputingAlur kerja klasifikasi machine learning klasik yang bisa mendapat manfaat dari akurasi yang lebih baik atau efisiensi komputasi yang lebih tinggi dengan memanfaatkan optimasi kuantum yang dieksekusi di hardware IBM.Menghasilkan akurasi yang setara atau melebihi model klasik seperti Random Forest atau XGBoost, sambil beroperasi dengan jauh lebih sedikit learner dan ensemble yang lebih kompak.

Didukung oleh voting yang dioptimalkan secara kuantum, model ini memilih learner yang paling informatif dan menyempurnakan batas keputusan, menghasilkan efisiensi lebih tinggi, kompleksitas model berkurang, dan performa lebih andal.
Optimization SolverQ-CTRLMasalah optimasi biner atau masalah kombinatorial apa pun yang bisa dipetakan ke fungsi biaya biner.

Fungsi biaya dengan orde apa pun dan ukuran masalah hingga skala perangkat maksimum didukung.
Solusi optimasi kuantum end-to-end yang peka terhadap noise, memungkinkan input definisi masalah tingkat tinggi dan secara otomatis menemukan solusi akurat untuk masalah kombinatorial yang sulit secara klasik pada hardware kuantum skala utilitas.

Mengabstraksi kompleksitas dengan menangani penekanan error, pemetaan efisien, dan optimasi kuantum-klasik hibrida untuk menyelesaikan tugas optimasi di skala perangkat penuh tanpa keahlian kuantum yang mendalam.

Mulai gunakan Qiskit Functions​

Pengguna Premium, Flex, dan On-Prem (melalui IBM Quantum Platform API) Plan bisa mulai menggunakan IBM Qiskit Functions secara gratis, atau bisa memperoleh lisensi dari salah satu mitra yang telah berkontribusi fungsi ke catalog.

Minta uji coba gratis untuk Qiskit Functions pihak ketiga​

Untuk meminta uji coba gratis baru, buka Qiskit Functions Catalog, dan jelajahi panel detail. Klik Request a free trial dan isi informasi yang diminta oleh mitra Functions, termasuk IBM Cloud AccessGroupId:

  1. Buka IBM Cloud IAM.
  2. Verifikasi kelayakan.
    • Ganti akun di bilah atas ke akun dengan format berikut: XXXXXXX - [Nama Organisasi]
    • Pastikan organisasinya sama dengan yang terkait dengan akun Premium kamu.
    • Jika kamu melihat "Akun [Nama Kamu]", berarti kamu menggunakan akun pribadi, yang tidak memenuhi syarat untuk akses premium.
  3. Temukan ID access group kamu.
    • Klik nama grup.
    • Klik Details.
    • Salin ID access group. ID ini seharusnya dimulai dengan AccessGroup-.

Instal Qiskit Functions Catalog client​

  1. Untuk mulai menggunakan Qiskit Functions, instal IBM Qiskit Functions Catalog client:

    pip install qiskit-ibm-catalog
  2. Ambil API key kamu dari IBM Quantum Platform dashboard, dan aktifkan virtual environment Python kamu. Lihat petunjuk instalasi jika kamu belum menyiapkan virtual environment.

    Jika kamu bekerja di lingkungan Python tepercaya (seperti laptop atau workstation pribadi), gunakan metode save_account() untuk menyimpan kredensial secara lokal. (Lewati ke langkah berikutnya jika kamu tidak menggunakan lingkungan tepercaya, seperti komputer bersama atau publik, untuk autentikasi ke IBM Quantum Platform.)

    Untuk menggunakan save_account(), jalankan python di shell kamu, lalu masukkan yang berikut:

    from qiskit_ibm_catalog import QiskitFunctionsCatalog

    QiskitFunctionsCatalog.save_account(channel="ibm_quantum_platform", token="<your-token>", instance="<instance-crn>")

    Ketik exit(). Mulai sekarang, setiap kali kamu perlu melakukan autentikasi ke layanan, kamu bisa memuat kredensial dengan

    from qiskit_ibm_catalog import QiskitFunctionsCatalog
    catalog = QiskitFunctionsCatalog()
# Load saved credentials
from qiskit_ibm_catalog import QiskitFunctionsCatalog

catalog = QiskitFunctionsCatalog(channel="ibm_quantum_platform")
  1. Hindari mengeksekusi kode di mesin yang tidak tepercaya atau lingkungan Python cloud eksternal untuk meminimalkan risiko keamanan. Jika kamu harus menggunakan lingkungan yang tidak tepercaya (misalnya, di komputer publik), ubah API key kamu setelah setiap penggunaan dengan menghapusnya di halaman IBM Cloud API keys untuk mengurangi risiko. Pelajari lebih lanjut di topik Managing user API keys. Untuk menginisialisasi layanan dalam situasi ini, perluas bagian berikut untuk melihat kode yang bisa kamu gunakan:

    Inisialisasi layanan di lingkungan yang tidak tepercaya
    from qiskit_ibm_catalog import QiskitFunctionsCatalog

    # After using the following code, delete your API key on the IBM Quantum Platform home dashboard
    catalog = QiskitFunctionsCatalog(token="<YOUR_API_KEY>") # Use the 44-character API_KEY you created and saved from the IBM Quantum Platform Home dashboard
    perhatian

    Lindungi API key kamu! Jangan pernah menyertakan key kamu dalam kode sumber, skrip Python, atau file notebook. Saat berbagi kode dengan orang lain, pastikan API key kamu tidak tertanam langsung di dalam skrip Python. Sebagai gantinya, bagikan skrip tanpa key dan berikan petunjuk untuk menyiapkannya dengan aman.

    Jika kamu tidak sengaja berbagi key dengan seseorang atau menyertakannya dalam version control seperti Git, segera cabut key kamu dengan menghapusnya di halaman IBM Cloud API keys untuk mengurangi risiko. Pelajari lebih lanjut di topik Managing user API keys.

  2. Setelah kamu melakukan autentikasi, kamu bisa membuat daftar fungsi dari Qiskit Functions Catalog yang bisa kamu akses:

catalog.list()
[QiskitFunction(qunova/hivqe-chemistry),
QiskitFunction(global-data-quantum/quantum-portfolio-optimizer),
QiskitFunction(algorithmiq/tem),
QiskitFunction(qedma/qesem),
QiskitFunction(multiverse/singularity),
QiskitFunction(ibm/circuit-function),
QiskitFunction(q-ctrl/optimization-solver),
QiskitFunction(colibritd/quick-pde),
QiskitFunction(q-ctrl/performance-management),
QiskitFunction(kipu-quantum/iskay-quantum-optimizer)]

Jalankan fungsi yang diaktifkan​

Setelah objek catalog diinstansiasi, kamu bisa memilih fungsi menggunakan catalog.load(provider/function-name):

ibm_cf = catalog.load("ibm/circuit-function")

Setiap Qiskit Function memiliki input, opsi, dan output kustom. Periksa halaman dokumentasi spesifik untuk fungsi yang ingin kamu jalankan untuk informasi lebih lanjut. Secara default, semua pengguna hanya bisa menjalankan satu function job dalam satu waktu:

# This cell is hidden from users
# It gets these details programmatically so we can test this notebook
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit.circuit.random import random_circuit

service = QiskitRuntimeService()
instance = service.active_account()["instance"]
backend_name = service.least_busy().name

circuit = random_circuit(num_qubits=2, depth=2, seed=42)
observable = "Z" * circuit.num_qubits
job = ibm_cf.run(
pubs=[(circuit, observable)],
instance=instance,
backend_name=backend_name, # E.g. "ibm_fez"
)

job.job_id
'7f08c9d5-471b-4da2-92e7-4f2cb94c23a8'

Periksa status job​

tips

Saat ini, tabel workload IBM Quantum hanya menampilkan workload Qiskit Runtime. Gunakan job.status() untuk melihat status terkini workload Qiskit Function kamu.

Dengan job_id Qiskit Function kamu, kamu bisa memeriksa status job yang sedang berjalan. Ini mencakup status-status berikut:

  • QUEUED: Program remote sedang dalam antrean Qiskit Function. Prioritas antrean didasarkan pada seberapa banyak kamu menggunakan Qiskit Functions.
  • INITIALIZING: Program remote sedang dimulai; ini termasuk menyiapkan lingkungan remote dan menginstal dependensi.
  • RUNNING: Program sedang berjalan. Ini juga mencakup beberapa status lebih detail jika didukung oleh fungsi tertentu
    • RUNNING: MAPPING": Fungsi sedang memetakan input klasik kamu ke input kuantum
    • RUNNING: OPTIMIZING_FOR_HARDWARE": Fungsi sedang mengoptimalkan untuk QPU yang dipilih. Ini bisa mencakup transpilasi Circuit, karakterisasi QPU, backpropagation observable, dan sebagainya
    • RUNNING: WAITING_FOR_QPU: Fungsi telah mengirimkan job ke Qiskit Runtime, dan sedang menunggu dalam antrean
    • RUNNING: EXECUTING_QPU: Fungsi memiliki job Qiskit Runtime yang aktif
    • RUNNING: POST_PROCESSING: Fungsi sedang memproses hasil. Ini bisa mencakup mitigasi error, pemetaan hasil kuantum ke klasik, dan sebagainya
  • DONE: Program selesai, dan kamu bisa mengambil data hasil dengan job.results().
  • ERROR: Program berhenti berjalan karena ada masalah. Gunakan job.result() untuk mendapatkan pesan error.
  • CANCELED: Program dibatalkan; baik oleh pengguna, layanan, atau server.
job.status()
'QUEUED'

Ambil hasil​

Setelah program DONE, kamu bisa menggunakan job.results() untuk mengambil hasilnya. Format output ini berbeda-beda untuk setiap fungsi, jadi pastikan untuk mengikuti dokumentasi spesifiknya:

result = job.result()
print(result)
PrimitiveResult([PubResult(data=DataBin(evs=np.ndarray(<shape=(), dtype=float64>), stds=np.ndarray(<shape=(), dtype=float64>), ensemble_standard_error=np.ndarray(<shape=(), dtype=float64>)), metadata={'shots': 4096, 'target_precision': 0.015625, 'circuit_metadata': {}, 'resilience': {}, 'num_randomizations': 32})], metadata={'dynamical_decoupling': {'enable': True, 'sequence_type': 'XX', 'extra_slack_distribution': 'middle', 'scheduling_method': 'alap'}, 'twirling': {'enable_gates': False, 'enable_measure': True, 'num_randomizations': 'auto', 'shots_per_randomization': 'auto', 'interleave_randomizations': True, 'strategy': 'active-accum'}, 'resilience': {'measure_mitigation': True, 'zne_mitigation': False, 'pec_mitigation': False}, 'version': 2})

Kamu juga bisa membatalkan job kapan saja:

job.stop()
'Job has been stopped.'

Daftarkan job yang sebelumnya dijalankan dengan Qiskit Functions​

Kamu bisa menggunakan jobs() untuk mendaftarkan semua job yang dikirimkan ke Qiskit Functions:

old_jobs = catalog.jobs()
old_jobs
[<Job | f6c29f49-4d5f-4fff-aca6-2e9a115b9763>,
<Job | 7f08c9d5-471b-4da2-92e7-4f2cb94c23a8>,
<Job | 62fe9176-d1e5-467e-b2bd-7a3f3c7be4e5>,
<Job | af525b2e-16b1-45a1-80bb-dbd94ce30258>,
<Job | b95a7a57-c1ad-4958-b7ac-953e4e1ee824>,
<Job | 7bfa33da-0f17-4e67-84b6-f556f7eeb436>,
<Job | ca46c191-9eb9-4de6-bfa7-b60d7eb29b5e>,
<Job | 6ac0ba93-3831-43fb-9fb9-760da2225e06>,
<Job | f0e38071-060d-47e8-988d-9cc1f69358e3>,
<Job | 629cf110-e490-4675-8a07-f6d298d166b0>]

Jika kamu sudah memiliki job ID untuk job tertentu, kamu bisa mengambil job tersebut dengan catalog.get_job_by_id():

# First, get the most recent job that has been executed.
latest_job = old_jobs[0]

# We can also get that same job with get_job_by_id
job_by_id = catalog.get_job_by_id(latest_job.job_id)

# Verify that the job is the same using both retrieval methods.
assert job_by_id.job_id == latest_job.job_id

# Print the job_id for this job.
print(job_by_id.job_id)
f6c29f49-4d5f-4fff-aca6-2e9a115b9763

Ambil pesan error​

Jika status program adalah ERROR, gunakan job.error_message() untuk mengambil pesan error sebagai berikut:

job.error_message()
qiskit.exceptions.QiskitError: 'Workflow execution failed -- https://docs.quantum.ibm.com/errors#9999'

Langkah selanjutnya​

Rekomendasi
Source: IBM Quantum docs — updated 17 Apr 2026
English version on doQumentation — updated 7 Mei 2026
This translation based on the English version of 11 Mar 2026