Dynamics Simulator - Qiskit Function oleh Q-CTRL Fire Opal
Lihat rujukan API.
Qiskit Functions ialah ciri eksperimen yang hanya tersedia kepada 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.
Gambaran keseluruhan
Q-CTRL Dynamics Simulator ialah Qiskit Function aplikasi untuk mensimulasikan evolusi masa model jasad banyak kuantum yang disokong pada perkakasan IBM Quantum. Daripada membina litar kuantum sendiri, anda menyatakan model fizikal, keadaan awal, parameter evolusi masa dan observabel yang hendak diukur.
Fungsi ini membina dan melaksanakan litar dinamik yang diperlukan serta menggunakan aliran kerja pengoptimuman dan penindasan ralat Fire Opal yang peka perkakasan. Hasilnya ialah jejak masa nilai jangkaan bagi observabel yang anda minta. Oleh sebab fungsi ini menggunakan penindasan ralat secara automatik, anda boleh menjalankan litar pada kedalaman rekod dan masih melihat isyarat yang bermakna. Dynamics Simulator memberikan ketepatan penyelesaian yang setanding dengan alat klasik terkini sedia ada dan menunjukkan kelebihan yang nyata dari segi kelajuan.
Ujian dunia sebenar mencapai persetujuan dalam lingkungan 1% ralat punca min kuasa dua (RMSE) apabila dibandingkan dengan simulasi rangkaian tensor klasik beresolusi tertinggi. Ujian bebas daripada komuniti penyelidikan telah mengesahkan bahawa komputer kuantum kekal tepat walaupun melangkaui demonstrasi awal Q-CTRL.
Penanda aras
Bilangan tapak menentukan berapa banyak qubit diperlukan, manakala bilangan langkah Trotter mengawal kedalaman litar evolusi masa. Setiap tapak kekisi menggunakan dua qubit untuk mewakili hunian spin-atas dan spin-bawah.
Aliran kerja ini telah ditunjukkan untuk rantai 60 tapak (120 qubit) dengan 30 langkah Trotter, dan untuk rantai 31 tapak (62 qubit) dengan 90 langkah Trotter. Jadual di bawah menunjukkan sumber litar dan masa pelaksanaan QPU daripada eksperimen yang dilaporkan, yang dijalankan pada peranti IBM® Heron r3 (ibm_boston) dengan 20,000 shot bagi setiap litar.
| Saiz sistem | Langkah Trotter | Kedalaman dua qubit | Bilangan get dua qubit | Masa QPU | Masa QPU dengan REM + DR |
|---|---|---|---|---|---|
| 10 tapak (20 qubit) | 30 | 152 | 1,457 | 2m 46s | 4m 25s |
| 10 tapak (20 qubit) | 60 | 302 | 2,897 | 5m 36s | 8m 42s |
| 10 tapak (20 qubit) | 90 | 452 | 4,337 | 8m 46s | 13m 26s |
| 31 tapak (62 qubit) | 30 | 152 | 4,649 | 2m 46s | 4m 25s |
| 31 tapak (62 qubit) | 60 | 302 | 9,239 | 5m 36s | 8m 42s |
| 31 tapak (62 qubit) | 90 | 452 | 13,829 | 8m 46s | 13m 26s |
| 60 tapak (120 qubit) | 30 | 152 | 9,057 | 2m 46s | 4m 25s |
Bagi bilangan langkah Trotter yang tetap, kedalaman litar dan masa QPU yang dilaporkan kekal sama merentas saiz sistem yang diuji, manakala bilangan get dua qubit meningkat. Meningkatkan bilangan langkah menghasilkan litar yang lebih dalam dan memerlukan lebih banyak masa QPU.
Di sini, masa QPU ialah masa pelaksanaan perkakasan terkumpul bagi litar simulasi utama. Lajur terakhir turut merangkumi masa QPU untuk pencirian hingar yang digunakan dalam pengurangan ralat bacaan (REM) dan pemulihan pereputan (DR). Panduan ini menggunakan contoh Fermi-Hubbard satu dimensi yang kecil untuk menunjukkan aliran kerja lengkap daripada mentakrifkan model hingga memplot dinamik yang diukur.
Perihalan fungsi
Dinamik kuantum menerangkan bagaimana sistem kuantum berubah mengikut masa. Mengkaji evolusi ini membantu anda memahami bagaimana zarah bergerak, bagaimana korelasi berkembang, dan bagaimana sistem bertindak balas terhadap perubahan pada keadaan atau Hamiltoniannya.
Model Fermi-Hubbard menerangkan fermion yang bergerak antara tapak kekisi dan berinteraksi apabila menduduki tapak yang sama. Persaingan antara lompatan dan interaksi menjadikannya model yang berguna untuk mengkaji elektron berkorelasi kuat. Evolusi masanya boleh mendedahkan bagaimana spin dan cas merambat, dan bagaimana sistem yang pada mulanya tersusun mengendur.
Model
Dynamics Simulator menyokong rantai Fermi-Hubbard satu dimensi dengan sempadan terbuka. Bagi rantai tapak, Hamiltonian ditakrifkan seperti berikut:
Di sini, dan mencipta dan memusnahkan fermion dengan spin pada tapak . Pengendali nombor mengukur hunian orbital spin itu.
Input model menentukan pekali berikut:
-
hopping_amplitude: , yang mengawal lompatan antara tapak jiran dan . -
on_site_interaction: , interaksi antara fermion spin-atas dan spin-bawah yang menduduki tapak yang sama. -
chemical_potential: , keupayaan kimia setempat, yang memasuki Hamiltonian dengan tanda tolak.
Berikan skalar untuk menggunakan pekali yang sama di sepanjang rantai, atau senarai untuk menentukan pekali bagi ikatan atau tapak individu.
Dalam unit di mana , keadaan awal berevolusi seperti berikut:
Fungsi ini menganggarkan nilai jangkaan bagi observabel yang anda nyatakan pada masa simulasi berturut-turut.
Aliran kerja
Aliran kerja fungsi ini terdiri daripada langkah berikut:
-
Sintesis algoritma: Fungsi ini menggunakan tetapan Hamiltonian dan masa simulasi untuk membina jujukan Trotter-Suzuki yang dioptimumkan, yang mengurangkan kedalaman litar sambil mengambil kira ketepatan simulasi.
-
Pemetaan peka perkakasan: Fungsi ini memetakan dan menghalakan litar dengan menggunakan ketersambungan qubit dan ciri ralat bagi backend IBM Quantum yang dipilih.
-
Penindasan ralat lapisan fizikal: Fire Opal menggabungkan penyahgandingan dinamik dan pembetulan peringkat denyut untuk menindas hingar daripada persekitaran dan crosstalk semasa pelaksanaan pada perkakasan.
Fungsi ini mengurus peringkat ini secara automatik dan mengembalikan nilai jangkaan bagi observabel yang diminta mengikut masa.
Anda mentakrifkan masalah fizikal dan tetapan simulasi melalui input fungsi. Antara muka semasa menyokong evolusi masa Trotter, di mana time_step menetapkan tempoh setiap langkah dan step_count menetapkan bilangan langkah.
Untuk butiran tambahan, lihat gambaran keseluruhan simulator dinamik Fire Opal dan rujukan API simulate_dynamics.
Mulakan
Cari maklumat akses untuk Qiskit Function ini dalam Qiskit Functions Catalog.
Panduan ini menunjukkan cara memuatkan Dynamics Simulator dan mensimulasikan rantai Fermi-Hubbard empat tapak. Kod berikut mengandaikan bahawa anda telah menyimpan kunci API IBM Quantum Platform dan CRN instans anda ke persekitaran tempatan anda.
Untuk arahan penyediaan akaun dan pemasangan klien, lihat Mulakan dengan Qiskit Functions.
# Added by doQumentation — installs the packages this notebook needs if they are missing
import importlib.util
_needed = {"matplotlib": "matplotlib", "numpy": "numpy", "qctrlvisualizer": "qctrlvisualizer", "qiskit_ibm_catalog": "qiskit-ibm-catalog"}
_missing = [pip for module, pip in _needed.items()
if importlib.util.find_spec(module) is None]
# One at a time, so a package that fails to install does not block the others
for _pip in _missing:
%pip install -q {_pip}
if not _missing:
print("\u2713 All required packages are installed")
from qiskit_ibm_catalog import QiskitFunctionsCatalog
catalog = QiskitFunctionsCatalog(channel="ibm_quantum_platform")
# Access the Q-CTRL Dynamics Simulator Qiskit Function.
sim_qf = catalog.load("q-ctrl/dynamics-simulator")
# Check the list of backends you have access to
catalog.backends()
[<IBMBackend('ibm_boston')>,
<IBMBackend('ibm_fez')>,
<IBMBackend('ibm_kingston')>,
<IBMBackend('ibm_marrakesh')>,
<IBMBackend('ibm_miami')>,
<IBMBackend('ibm_phoenix')>,
<IBMBackend('ibm_pittsburgh')>]
# Select the backend you want to use
backend = catalog.backend("ibm_phoenix")
Contoh: Simulasikan rantai Fermi-Hubbard empat tapak
Pertimbangkan rantai Fermi-Hubbard satu dimensi empat tapak dengan amplitud lompatan , tiada interaksi dalam tapak, dan keupayaan kimia sifar. Satu fermion spin-atas bermula pada tapak 0 dan berevolusi merentasi rantai.
Masalah kecil ini memastikan tumpuan kekal pada aliran kerja Dynamics Simulator:
-
Takrifkan model dan simulasi.
-
Takrifkan keadaan awal dan observabel.
-
Hantar kerja Qiskit Function.
-
Dapatkan nilai jangkaan.
-
Plotkan dinamik.
1. Takrifkan masalah
site_count = 4
model = {
"hopping_amplitude": 1.0,
"on_site_interaction": 0.0,
"chemical_potential": 0.0,
}
simulation = {
"time_step": 0.2,
"step_count": 8,
}
initial_state = "eeeu"
observables = [
{
"operators": [[["Nup", site]]],
"coefficients": [1.0],
}
for site in range(site_count)
]
shot_count = 2048
Senarai observabel mengukur hunian spin-atas
pada setiap tapak. Observabel dikembalikan mengikut susunan yang sama seperti ketika ia dibekalkan.
2. Jalankan simulasi dinamik
Hantar masalah melalui Qiskit Function. Qiskit Functions Catalog mengendalikan pengesahan IBM Quantum, jadi anda tidak perlu menghantar bukti kelayakan Fire Opal atau penyedia perkakasan yang berasingan kepada sim_qf.run().
job = sim_qf.run(
model=model,
simulation=simulation,
observables=observables,
initial_state=initial_state,
shots=shot_count,
backend_name=backend.name,
)
print(job.job_id, job.status())
68202fad-6919-425d-8fd2-c1c649cd15b1 DONE
Objek yang dikembalikan ialah kerja Qiskit Function. Anda boleh menyimpan ID kerja untuk mendapatkan semula atau memeriksa beban kerja kemudian.
3. Dapatkan hasil
result = job.result()
print("Result keys:", sorted(result.keys()))
print("Warnings:", result.get("warnings", []))
Result keys: ['metadata', 'observable_expectation_values', 'observables', 'warnings']
Warnings: []
Tukarkan nilai jangkaan observabel kepada tatasusunan NumPy. Setiap baris sepadan dengan satu observabel, dan setiap lajur sepadan dengan masa simulasi yang direkodkan, bermula pada . Untuk contoh ini, empat baris mengandungi hunian spin-atas bagi tapak 0 hingga 3.
import numpy as np
expectation_values = np.asarray(
result["observable_expectation_values"],
dtype=float,
)
print("Expectation-value array shape:", expectation_values.shape)
Expectation-value array shape: (4, 9)
4. Visualisasikan dinamik
Keadaan awal mengandungi satu fermion spin-atas dan tiada fermion spin-bawah. Evolusinya oleh itu kekal dalam subruang zarah tunggal, yang empat keadaan asasnya sepadan dengan fermion yang menduduki tapak 0, 1, 2 dan 3.
Dalam subruang ini, Hamiltonian menghubungkan tapak berjiran dengan amplitud lompatan . Untuk parameter yang digunakan di sini,
Pepenjangkan matriks ini dengan NumPy dan evolusikan keadaan awal pada masa yang sama seperti yang dikembalikan oleh Dynamics Simulator. Kuasa dua magnitud setiap amplitud keadaan memberikan penghunian spin-atas bagi tapak yang sepadan.
Pengiraan ini memberikan evolusi Hamiltonian yang tepat. Perbezaan antara anggaran perkakasan dan rujukan ini boleh merangkumi langkah Trotter terhingga, statistik pengukuran dan ralat perkakasan baki.
times = np.arange(expectation_values.shape[1]) * simulation["time_step"]
# This reference is specific to a single spin-up fermion.
if (
len(initial_state) != site_count
or initial_state.count("u") != 1
or initial_state.count("e") != site_count - 1
):
raise ValueError(
"This reference requires one spin-up fermion and otherwise empty sites."
)
# Build the Hamiltonian in the single-particle subspace.
hamiltonian = -model["hopping_amplitude"] * (
np.eye(site_count, k=1) + np.eye(site_count, k=-1)
)
hamiltonian -= model["chemical_potential"] * np.eye(site_count)
# The rightmost character of initial_state corresponds to site 0.
initial_amplitudes = np.zeros(site_count, dtype=complex)
initial_site = initial_state[::-1].index("u")
initial_amplitudes[initial_site] = 1.0
# Evolve the initial state in the Hamiltonian eigenbasis.
energies, eigenvectors = np.linalg.eigh(hamiltonian)
initial_coefficients = eigenvectors.conj().T @ initial_amplitudes
phases = np.exp(-1j * np.outer(energies, times))
states = eigenvectors @ (initial_coefficients[:, None] * phases)
ideal_expectation_values = np.abs(states) ** 2
Plotkan satu panel bagi setiap tapak. Lengkung pepejal menunjukkan rujukan tepat pada masa yang direkodkan, dan penanda menunjukkan anggaran perkakasan yang dikembalikan oleh Dynamics Simulator.
import matplotlib.pyplot as plt
import qctrlvisualizer as qv
from qctrlvisualizer import QCTRL_STYLE_COLORS as colors
plt.style.use(qv.get_qctrl_style())
fig, ax = plt.subplots(figsize=(10, 6))
for site in range(len(expectation_values)):
site_color = colors[site % len(colors)]
ax.plot(
times,
ideal_expectation_values[site],
color=site_color,
linewidth=2,
label=f"Site {site}: exact reference",
)
ax.plot(
times,
expectation_values[site],
color=site_color,
linestyle="--",
linewidth=1.5,
marker="o",
markersize=5,
label=f"Site {site}: hardware estimate",
)
ax.set_xlim(times[0], times[-1])
ax.set_ylim(-0.05, 1.05)
ax.set_xlabel(r"Time (units of $\hbar/t_h$)")
ax.set_ylabel(r"$\langle n_{i\uparrow} \rangle$")
ax.set_title("Spin-up occupation dynamics")
ax.legend(
ncol=2,
fontsize=10,
loc="best",
)
fig.tight_layout()
plt.show()

Pada , penghunian spin-atas yang tepat ialah 1 pada tapak 0 dan 0 pada tapak lain. Apabila sistem berevolusi, lompatan menyebarkan kebarangkalian zarah merentasi rantai. Penghunian tapak 1 meningkat dahulu, diikuti peningkatan penghunian pada tapak 2 dan 3. Untuk parameter dalam contoh ini, masa terakhir yang direkodkan ialah . Penghunian tepat tapak 0 hingga 3 masing-masing adalah lebih kurang 0.026, 0.370, 0.392 dan 0.211.
Penghunian tepat memenuhi persamaan berikut pada setiap masa, yang mencerminkan keabadian bilangan zarah:
Penghunian tapak individu boleh naik dan turun apabila zarah berevolusi melalui rantai terhingga.
Dapatkan mesej ralat
Jika beban kerja memasuki keadaan ERROR, panggil job.result() untuk mendapatkan mesej ralat. Anda juga boleh memeriksa log fungsi, jika tersedia.
print(job.status())
if job.status() == "ERROR":
print(job.result())
print(job.logs())
DONE
Isu pengesahan input yang lazim termasuk model atau kaedah simulasi yang tidak disokong, rentetan keadaan awal yang terlalu panjang, sebutan dan pekali observable yang tidak sepadan, atau observable yang merujuk tapak di luar rentetan keadaan awal.
Dapatkan sokongan
Untuk soalan tentang Dynamics Simulator atau gelagat Fire Opal, lihat dokumentasi Q-CTRL atau hubungi Q-CTRL.
Untuk pengesahan Qiskit Functions, pengurusan job atau akses IBM Quantum Platform, lihat dokumentasi Qiskit Functions.
Langkah seterusnya
- Semak rujukan API
simulate_dynamicsuntuk takrifan model, simulasi, observable, output dan pengesahan yang mendasari. - Cuba tutorial Dinamik spin dan cas dalam model Fermi-Hubbard.
- Baca gambaran keseluruhan simulator dinamik Fire Opal untuk butiran lanjut tentang Trotterization, pemetaan sedar perkakasan dan penindasan ralat Fire Opal.
- Ubah suai parameter model, keadaan awal, langkah masa, bilangan langkah dan observable untuk mengkaji masalah dinamik Fermi-Hubbard satu dimensi yang berbeza.