Langkau ke kandungan utama

Pengenalan kepada Qiskit Functions

Nota
  • Qiskit Functions adalah ciri eksperimental yang hanya tersedia untuk pengguna Pelan Premium, Pelan Flex, dan Pelan On-Prem (melalui API IBM Quantum Platform) IBM Quantum®. Ia berada dalam status keluaran pratonton dan tertakluk kepada perubahan.
Versi pakej

Kod pada halaman ini dibangunkan menggunakan keperluan berikut. Kami mengesyorkan penggunaan versi ini atau lebih baharu.

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

Qiskit Functions memudahkan dan mempercepatkan penemuan algoritma berskala utiliti dan pembangunan aplikasi, dengan mengabstrakkan bahagian-bahagian aliran kerja pembangunan perisian kuantum. Dengan cara ini, Qiskit Functions membebaskan masa yang biasanya dihabiskan untuk menulis kod secara manual dan menala eksperimen.

Gambaran keseluruhan Qiskit Functions Fungsi hadir dalam dua bentuk:

JenisApa yang dilakukannya?Contoh input dan outputUntuk siapa?
Fungsi CircuitAntara muka yang dipermudah untuk menjalankan Circuit. Mengabstrak transpilasi, penindasan ralat, dan mitigasi ralatInput: Objek PUB abstrak
Output: Nilai jangkaan yang dimitigasi
Penyelidik yang menggunakan Qiskit untuk menemui algoritma dan aplikasi baharu, tanpa perlu memberi tumpuan kepada pengoptimuman untuk perkakasan atau pengendalian ralat. Fungsi Circuit boleh digunakan untuk membina fungsi aplikasi tersuai.
Fungsi aplikasiMeliputi tugas peringkat lebih tinggi, seperti meneroka algoritma dan kes penggunaan khusus domain. Mengabstrak aliran kerja kuantum untuk menyelesaikan tugas, dengan input dan output klasikInput: Molekul, graf
Output: Tenaga keadaan asas + teruja, nilai optimum untuk fungsi kos
Penyelidik dalam domain bukan kuantum, mengintegrasikan kuantum ke dalam aliran kerja klasik berskala besar sedia 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

Fungsi disediakan oleh IBM® dan rakan kongsi pihak ketiga. Setiap satu berprestasi tinggi untuk ciri beban kerja tertentu dan mempunyai pilihan penalaan prestasi yang unik.

Gambaran keseluruhan fungsi yang tersedia​

Fungsi Circuit​

NamaPenyediaPenggunaan yang disyorkanKelebihan unik
Tensor-Network Error MitigationAlgorithmiqBeban kerja yang mempunyai boleh jadi berpemberat rendah dan Circuit bebas gelung.Mengurangkan overhed pengukuran dan varians, mengatasi garis asas mitigasi ralat standard seperti Zero Noise Extrapolation (ZNE) dan Probabilistic Error Cancellation (PEC) untuk kelas Circuit yang berkaitan.
QESEM: Penindasan Ralat dan Mitigasi RalatQedmaBeban kerja yang merangkumi Circuit dengan gate pecahan atau berparameter, boleh jadi berpemberat tinggi, dan aliran kerja yang memerlukan nilai jangkaan tidak berat sebelah serta anggaran masa jalan yang tepat.Menghasilkan nilai jangkaan tidak berat sebelah dengan varians dan overhed sumber yang lebih rendah, mengatasi ZNE dan PEC untuk kelas Circuit yang berkaitan.
Pengurusan PrestasiQ-CTRLBeban kerja yang mengandungi Circuit berparametrik, Circuit dalam, atau memerlukan banyak pelaksanaan Circuit.Secara automatik menerapkan penindasan ralat dipacu AI pada algoritma kuantum, memaksimumkan prestasi peranti IBM untuk menghasilkan keputusan yang tepat sambil mengurangkan bilangan tembakan, masa pengiraan, dan kos yang diperlukan.

Kaedah sifar-overhed yang meningkatkan ketepatan pelaksanaan untuk primitif Sampler dan Estimator, serasi dengan sebarang berat boleh jadi.

Fungsi aplikasi​

NamaPenyediaPenggunaan yang disyorkanKelebihan unik
QUICK-PDEColibriTDGunakan pengiraan kuantum untuk PDE berbilang fizik.

Sediakan aliran kerja simulasi untuk perkakasan kuantum, sambil mengekalkan kawalan penuh ke atas parameter pemodelan kuantum dan fizikal.
Menawarkan rangka kerja VQA hibrid yang mantap yang menghasilkan penyelesaian PDE yang tepat dan berskala melalui pengekodan penyelesaian lanjutan dan kaedah spektral, menjadikannya titik masuk yang ideal bagi pasukan yang cuba membina keupayaan simulasi bersedia kuantum.
Pengoptimum Portfolio KuantumGlobal Data QuantumBeban kerja untuk pengoptimuman kewangan, mencari strategi portfolio optimum dari masa ke masa sambil meminimumkan risiko dan memaksimumkan pulangan, membolehkan ujian balik strategi perdagangan.Menyelesaikan masalah pengoptimuman kombinatorial melalui adaptasi khusus algoritma kuantum VQE untuk kes penggunaan kewangan ini, menggunakan strategi pelaksanaan dan pengoptimum yang dioptimumkan, bersama teknik mitigasi ralat peka hingar yang disesuaikan untuk pengoptimuman portfolio.
Kimia HI-VQEQunova ComputingBeban kerja dalam kimia pengiraan, simulasi molekul, sains bahan, atau sebarang simulasi Hamiltonian yang memerlukan penyelesaian masalah struktur elektronik banyak jasad.Menyelesaikan struktur elektronik molekul dengan menggunakan SQD yang dipertingkatkan untuk mencapai ketepatan kimia (1 kcal/mol, 1.6 mHa) bagi masalah yang dimodelkan dengan 40 hingga 60 Qubit, mengatasi beberapa penyelesaian klasik pada superkomputer atau SQD standard dalam kelajuan penumpuan atau ketepatan, masing-masing mengikut magnitud.
Pengoptimum Kuantum IskayKipu QuantumBeban kerja pengoptimuman seperti penjadualan, logistik, penghalaan, dan masalah QUBO/HUBO.

Kaedah pra dan pasca-pemprosesan klasik boleh laras yang bersepadu untuk rutin pengoptimuman kuantum.

Menyampaikan kelebihan masa jalan berbanding penyelesai klasik (CPLEX, simulasi penyepuhlindapan, dan carian tabu) pada penanda aras HUBO terpilih.

Market Split ms_5_100, cabaran sukar, diselesaikan dalam masa beberapa jam (lihat tutorial ini).
Pembelajaran Mesin SingularityMultiverse ComputingAliran kerja pengelasan pembelajaran mesin klasik yang boleh mendapat manfaat daripada ketepatan yang lebih baik atau kecekapan pengiraan dengan memanfaatkan pengoptimuman kuantum yang dilaksanakan pada perkakasan IBM.Menghasilkan ketepatan yang setanding atau melebihi model klasik seperti Random Forest atau XGBoost, sambil beroperasi dengan bilangan pemelajar yang jauh lebih sedikit dan ensembel yang lebih padat.

Dikuasakan oleh pengundian yang dioptimumkan secara kuantum, ia memilih pemelajar yang paling bermaklumat dan memperhalusi sempadan keputusan, menghasilkan kecekapan yang lebih tinggi, kerumitan model yang berkurang, dan prestasi yang lebih kukuh.
Penyelesai PengoptimumanQ-CTRLMasalah pengoptimuman binari atau sebarang masalah kombinatorial yang boleh dipetakan ke fungsi kos binari.

Fungsi kos sebarang peringkat dan saiz masalah sehingga skala peranti maksimum disokong.
Penyelesaian pengoptimuman kuantum hujung ke hujung yang peka hingar yang membolehkan input definisi masalah peringkat tinggi dan secara automatik mencari penyelesaian tepat untuk masalah kombinatorial yang mencabar secara klasik pada perkakasan kuantum berskala utiliti.

Ia mengabstrak kerumitan dengan mengendalikan penindasan ralat, pemetaan cekap, dan pengoptimuman kuantum-klasik hibrid untuk menyelesaikan tugas pengoptimuman pada skala peranti penuh tanpa kepakaran kuantum mendalam.

Mula menggunakan Qiskit Functions​

Pengguna Pelan Premium, Flex, dan On-Prem (melalui API IBM Quantum Platform) boleh mula menggunakan IBM Qiskit Functions secara percuma, atau boleh mendapatkan lesen daripada salah satu rakan kongsi yang telah menyumbangkan fungsi ke katalog.

Minta percubaan percuma untuk Qiskit Functions pihak ketiga​

Untuk meminta percubaan percuma baharu, navigasi ke Katalog Qiskit Functions, dan terokai panel butiran. Klik Request a free trial dan isi maklumat yang diperlukan oleh rakan kongsi Functions, termasuk IBM Cloud AccessGroupId:

  1. Navigasi ke IBM Cloud IAM.
  2. Sahkan kelayakan.
    • Tukar akaun anda di bar atas ke akaun dengan format berikut: XXXXXXX - [Nama Organisasi]
    • Pastikan organisasi adalah sama dengan yang dikaitkan dengan akaun Premium anda.
    • Jika anda melihat "Akaun [Nama Anda]", anda menggunakan akaun peribadi anda, yang tidak layak untuk akses premium.
  3. Cari ID kumpulan akses anda.
    • Klik nama kumpulan.
    • Klik Butiran.
    • Salin ID kumpulan akses. Ia harus bermula dengan AccessGroup-.

Pasang klien Katalog Qiskit Functions​

  1. Untuk mula menggunakan Qiskit Functions, pasang klien IBM Qiskit Functions Catalog:

    pip install qiskit-ibm-catalog
  2. Dapatkan semula kunci API anda dari papan pemuka IBM Quantum Platform, dan aktifkan persekitaran maya Python anda. Lihat arahan pemasangan jika anda belum menyediakan persekitaran maya.

    Jika anda bekerja dalam persekitaran Python yang dipercayai (seperti pada komputer riba atau stesen kerja peribadi), gunakan kaedah save_account() untuk menyimpan kelayakan anda secara tempatan. (Langkau ke langkah seterusnya jika anda tidak menggunakan persekitaran yang dipercayai, seperti komputer dikongsi atau awam, untuk mengesahkan jati diri ke IBM Quantum Platform.)

    Untuk menggunakan save_account(), jalankan python dalam shell anda, kemudian masukkan yang berikut:

    from qiskit_ibm_catalog import QiskitFunctionsCatalog

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

    Taip exit(). Mulai sekarang, setiap kali anda perlu mengesahkan jati diri ke perkhidmatan, anda boleh memuatkan kelayakan anda 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. Elakkan melaksanakan kod pada mesin yang tidak dipercayai atau persekitaran Python awan luaran untuk meminimumkan risiko keselamatan. Jika anda terpaksa menggunakan persekitaran yang tidak dipercayai (misalnya, pada komputer awam), tukar kunci API anda selepas setiap penggunaan dengan memadamnya pada halaman kunci API IBM Cloud untuk mengurangkan risiko. Ketahui lebih lanjut dalam topik Mengurus kunci API pengguna. Untuk memulakan perkhidmatan dalam situasi ini, kembangkan bahagian berikut untuk melihat kod yang boleh anda gunakan:

    Mulakan perkhidmatan dalam persekitaran yang tidak dipercayai
    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
    awas

    Lindungi kunci API anda! Jangan sekali-kali masukkan kunci anda dalam kod sumber, skrip Python, atau fail notebook. Apabila berkongsi kod dengan orang lain, pastikan kunci API anda tidak tertanam terus dalam skrip Python. Sebaliknya, kongsi skrip tanpa kunci dan berikan arahan untuk menyediakanya dengan selamat.

    Jika anda tidak sengaja berkongsi kunci anda dengan seseorang atau memasukkannya dalam kawalan versi seperti Git, segera batalkan kunci anda dengan memadamnya pada halaman kunci API IBM Cloud untuk mengurangkan risiko. Ketahui lebih lanjut dalam topik Mengurus kunci API pengguna.

  2. Setelah anda mengesahkan jati diri, anda boleh menyenaraikan fungsi dari Katalog Qiskit Functions yang anda mempunyai 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 katalog dijana, anda boleh memilih fungsi menggunakan catalog.load(provider/function-name):

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

Setiap Qiskit Function mempunyai input, pilihan, dan output tersuai. Semak halaman dokumentasi khusus untuk fungsi yang ingin anda jalankan bagi maklumat lanjut. Secara lalai, semua pengguna hanya boleh menjalankan satu kerja fungsi pada satu masa:

# 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'

Semak status kerja​

petua

Pada masa ini, jadual beban kerja IBM Quantum hanya mencerminkan beban kerja Qiskit Runtime. Gunakan job.status() untuk melihat status semasa beban kerja Qiskit Function anda.

Dengan job_id Qiskit Function anda, anda boleh menyemak status kerja yang sedang berjalan. Ini termasuk status berikut:

  • QUEUED: Program jauh berada dalam baris gilir Qiskit Function. Keutamaan baris gilir adalah berdasarkan berapa banyak anda telah menggunakan Qiskit Functions.
  • INITIALIZING: Program jauh sedang dimulakan; ini termasuk menyediakan persekitaran jauh dan memasang kebergantungan.
  • RUNNING: Program sedang berjalan. Ini juga termasuk beberapa status yang lebih terperinci jika disokong oleh fungsi tertentu
    • RUNNING: MAPPING": Fungsi sedang memetakan input klasik anda ke input kuantum
    • RUNNING: OPTIMIZING_FOR_HARDWARE": Fungsi sedang mengoptimumkan untuk QPU yang dipilih. Ini boleh termasuk transpilasi Circuit, pencirian QPU, back-propagation boleh jadi, dan sebagainya
    • RUNNING: WAITING_FOR_QPU: Fungsi telah menghantar kerja ke Qiskit Runtime, dan sedang menunggu dalam baris gilir
    • RUNNING: EXECUTING_QPU: Fungsi mempunyai kerja Qiskit Runtime yang aktif
    • RUNNING: POST_PROCESSING: Fungsi sedang memproses keputusan selepas. Ini boleh termasuk mitigasi ralat, memetakan keputusan kuantum ke klasik, dan sebagainya
  • DONE: Program selesai, dan anda boleh mendapatkan semula data keputusan dengan job.results().
  • ERROR: Program berhenti berjalan kerana masalah. Gunakan job.result() untuk mendapatkan mesej ralat.
  • CANCELED: Program dibatalkan; sama ada oleh pengguna, perkhidmatan, atau pelayan.
job.status()
'QUEUED'

Dapatkan semula keputusan​

Setelah program DONE, anda boleh menggunakan job.results() untuk mengambil keputusan. Format output ini berbeza mengikut setiap fungsi, jadi pastikan untuk mengikuti dokumentasi khusus:

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

Anda juga boleh membatalkan kerja pada bila-bila masa:

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

Senaraikan kerja yang telah dijalankan sebelum ini dengan Qiskit Functions​

Anda boleh menggunakan jobs() untuk menyenaraikan semua kerja yang dihantar 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 anda sudah mempunyai ID kerja untuk kerja tertentu, anda boleh mendapatkan semula kerja 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 mesej ralat​

Jika status program adalah ERROR, gunakan job.error_message() untuk mengambil mesej ralat seperti berikut:

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

Langkah seterusnya​

Cadangan
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 Mac 2026