Langkau ke kandungan utama

HI-VQE Chemistry - Fungsi Qiskit oleh Qunova Computing

# Added by doQumentation — required packages for this notebook
!pip install -q qiskit-ibm-catalog qiskit-ibm-runtime
# This cell is hidden from users
from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()
instance = service.active_account()["instance"]
backend_name = service.least_busy(operational=True, min_num_qubits=16).name
qiskit-ibm-runtime~=0.45.0
nota

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

Gambaran keseluruhan

Dalam kimia kuantum, masalah struktur elektronik memfokuskan pada mencari penyelesaian kepada persamaan Schrödinger elektronik — fungsi gelombang kuantum yang menggambarkan tingkah laku elektron sistem. Fungsi gelombang ini adalah vektor amplitud kompleks, dengan setiap amplitud sepadan dengan sumbangan konfigurasi elektron yang mungkin.

Keadaan dasar adalah fungsi gelombang tenaga terendah sistem dan mempunyai kepentingan istimewa dalam kajian sistem molekul. Pendekatan paling tepat untuk mengira keadaan dasar mempertimbangkan semua konfigurasi elektron yang mungkin, tetapi ini menjadi tidak dapat diuruskan untuk sistem yang lebih besar kerana bilangan konfigurasi bertumbuh secara eksponen dengan saiz sistem.

Handover Iterative Variational Quantum Eigensolver (HI-VQE) adalah kaedah hibrid kuantum-klasik yang inovatif untuk menganggar keadaan dasar sistem molekul dengan tepat. Ia mengintegrasikan perkakasan kuantum dengan pengkomputeran klasik, menggunakan pemproses kuantum untuk meneroka konfigurasi elektron calon dengan cekap dan mengira fungsi gelombang yang terhasil pada komputer klasik. Dengan menghasilkan fungsi gelombang yang padat namun tepat secara kimia, HI-VQE meningkatkan penyelidikan dan penemuan dalam kimia kuantum dan sains bahan.

Image showing an overview of Qunova's HI-VQE algorithm

HI-VQE mengurangkan kerumitan pengkomputeran masalah struktur elektronik dengan menganggar keadaan dasar secara cekap dengan ketepatan tinggi. Ia memfokuskan pada subset konfigurasi elektron yang paling relevan yang dipilih dengan teliti, mengoptimumkan ketepatan dan kecekapan.

Menggabungkan kekuatan komputer klasik dan kuantum, HI-VQE secara berulang memperhalusi dan menambah baik anggaran fungsi gelombang semasa. Teknik pembinaan subspace yang unik membantu menjadikan pemilihan konfigurasi lebih cekap, supaya pengguna mempunyai kawalan pengkomputeran yang lebih besar dan ketepatan yang lebih baik dalam simulasi kimia kuantum.

Jika anda ingin mempelajari algoritma dengan lebih mendalam, anda boleh membaca kertas penyelidikan berkaitan.

Penerangan

Bilangan konfigurasi elektron untuk sistem molekul bertumbuh secara eksponen dengan saiz sistem. Walau bagaimanapun, untuk keadaan elektronik tertentu, seperti keadaan dasar, adalah lazim bahawa hanya sebahagian kecil konfigurasi menyumbang secara signifikan kepada tenaga keadaan. Kaedah Interaksi Konfigurasi Terpilih (SCI) memanfaatkan kekurpaan ini untuk mengurangkan kos pengkomputeran dengan mengenal pasti dan memfokuskan pada konfigurasi yang paling relevan. Subset konfigurasi ini dirujuk sebagai subspace.

HI-VQE memanfaatkan kecekapan intrinsik komputer kuantum untuk mewakili sistem molekul bagi membantu pencarian subspace. Ia mengintegrasikan subrutin klasik dan kuantum untuk menyelesaikan masalah struktur elektronik dengan ketepatan tinggi. Berbeza dengan kaedah SCI kuantum sedia ada, HI-VQE menggabungkan latihan variasi, pembinaan subspace berulang, dan penapisan konfigurasi pra-pengilangan untuk meningkatkan kecekapan dengan mengurangkan pengukuran kuantum, lelaran, dan kos pengilangan klasik. Oleh itu, HI-VQE boleh diaplikasikan kepada sistem molekul yang lebih besar yang memerlukan lebih banyak qubit, dan mengurangkan kos untuk menyelesaikan masalah bersaiz tertentu kepada tahap ketepatan yang sama.

Image showing a detailed description of each step in Qunova's HI-VQE algorithm.

Untuk mengira keadaan dasar sistem, HI-VQE mula-mula menggunakan pakej kimia klasik PySCF untuk menjana perwakilan molekul daripada input yang diberikan pengguna, seperti geometri molekul dan maklumat molekul lain. Ia kemudian memasuki gelung pengoptimuman hibrid kuantum-klasik, secara berulang memperhalusi subspace untuk mewakili keadaan dasar secara optimum sambil meminimumkan bilangan konfigurasi yang disertakan. Gelung berterusan sehingga kriteria penumpuan, seperti saiz subspace atau kestabilan tenaga, dipenuhi, selepas itu fungsi gelombang keadaan dasar dan tenaga yang dikira dikeluarkan. Keputusan ini boleh digunakan untuk membina permukaan tenaga potensial yang tepat dan melakukan analisis lanjutan sistem.

Gelung pengoptimuman memfokuskan pada melaraskan parameter litar kuantum untuk menghasilkan subspace berkualiti tinggi. HI-VQE menawarkan tiga pilihan litar kuantum: excitation_preserving, efficient_su2, dan LUCJ. Pengoptimuman dimulakan dekat dengan keadaan rujukan Hartree-Fock kerana kesesuaiannya yang umum. litar kemudian dilaksanakan pada peranti kuantum dan konfigurasi disampling dari keadaan kuantum yang terhasil sebelum dikembalikan sebagai rentetan binari. Disebabkan hingar peranti kuantum, beberapa konfigurasi yang disampling mungkin tidak sah secara fizikal, gagal memulihara bilangan elektron atau spin. HI-VQE menangani ini menggunakan proses pemulihan konfigurasi dari pakej qiskit-addon-sqd, supaya pengguna boleh sama ada membetulkan konfigurasi tidak sah atau membuangnya.

Konfigurasi yang sah kemudian melalui langkah penapisan pilihan untuk mengalih keluar yang dijangka menyumbang secara minimal. Ini mengurangkan dimensi subspace, seterusnya menurunkan kos langkah pengilangan. Jika penapisan diaktifkan, Hamiltonian subspace awal dibina dari konfigurasi yang sah dan pengilangan dilakukan dengan kriteria penamatan yang sangat longgar. Walaupun ketepatan amplitud yang terhasil untuk setiap konfigurasi adalah rendah, ia berkesan untuk meramalkan konfigurasi mana yang hendak ditinggalkan daripada subspace pada lelaran ini, dan ia cepat untuk dikira.

Konfigurasi yang dipilih ditambahkan ke subspace, dan Hamiltonian sistem diprojeksikan ke dalam subspace ini. Subspace dikemas kini secara berulang, mengekalkan konfigurasi yang paling relevan merentasi lelaran. Pendekatan ini berbeza dengan kaedah alternatif kerana litar kuantum tidak perlu menghampiri keadaan dasar penuh pada setiap langkah.

Seterusnya, Hamiltonian subspace digilang secara klasik untuk mendapatkan nilai eigen terendah dan eigenvector yang sepadan, mewakili penghampiran keadaan dasar dan tenaganya. Apabila kualiti subspace bertambah baik melalui lelaran, keadaan dasar yang dikira lebih menghampiri keadaan dasar sebenar. Langkah penapisan tambahan boleh dilakukan pada ketika ini untuk mengalih keluar konfigurasi daripada subspace yang tidak mempunyai sumbangan ketara kepada keadaan dasar yang dikira. Langkah ini memastikan subspace yang dibawa ke lelaran seterusnya adalah sepadat mungkin. Ini dinilai berdasarkan amplitud yang dikembalikan oleh pengilangan, kerana ini mewakili kepentingan sumbangan setiap konfigurasi kepada keadaan dasar yang dikira.

Semakan penumpuan kemudian menentukan sama ada latihan lanjut akan meningkatkan keputusan. Jika ya, langkah pengembangan klasik pilihan dilakukan, parameter litar kuantum dikemas kini untuk lebih meminimumkan tenaga yang dikira, dan proses berulang. Langkah pengembangan klasik menjana konfigurasi tambahan untuk subspace, melengkapi konfigurasi yang disampling dari peranti kuantum. Ia mula-mula mengenal pasti konfigurasi dengan amplitud terbesar dalam keputusan pengilangan, sebelum menjana konfigurasi baharu dengan eksitasi tunggal dan berganda dari konfigurasi yang dikenal pasti. Bilangan konfigurasi yang dikehendaki kemudian ditambahkan ke subspace.

Setelah ditentukan bahawa lelaran telah menumpu, HI-VQE mengembalikan keadaan dasar yang dikira (dalam bentuk keadaan dalam subspace dan amplitud mereka dalam fungsi gelombang keadaan dasar), tenaganya, dan ukuran varians tenaga yang memberi petunjuk sama ada keadaan yang dikira membentuk eigenstate Hamiltonian sistem.

Pengguna boleh menentukan litar kuantum yang digunakan dan bilangan shot yang diambil untuk setiap litar kuantum, serta mengawal saiz subspace atau membolehkan penjanaan klasik konfigurasi tambahan untuk membantu konfigurasi yang dijana kuantum. Dengan cara ini pengguna boleh menyesuaikan tingkah laku HI-VQE untuk memenuhi aplikasi yang dikehendaki.

Pelesenan

Sila ambil perhatian bahawa penggunaan Fungsi Qiskit ini terhad kepada masalah yang memerlukan paling banyak 20 qubit, melainkan lesen diperoleh yang memberikan had yang lebih tinggi.

Sila e-mel qiskit.support@qunovacomputing.com jika anda ingin bertanya tentang memperoleh lesen.

Mulakan

Pertama, mohon akses ke fungsi. Kemudian, sahkan menggunakan kunci API IBM Quantum® anda dan, dengan mengandaikan anda telah menyimpan akaun anda ke persekitaran tempatan anda, pilih Fungsi Qiskit seperti berikut:

import reprlib
from qiskit_ibm_catalog import QiskitFunctionsCatalog

catalog = QiskitFunctionsCatalog(channel="ibm_quantum_platform")

function = catalog.load("qunova/hivqe-chemistry")

Contoh

Contoh pertama menunjukkan cara mengira tenaga keadaan dasar untuk molekul NH3 menggunakan algoritma HI-VQE.

Takrifkan geometri molekul dan pilihan

Geometri molekul NH3 diberikan dengan koordinat Kartesian yang dipisahkan dengan ";" untuk setiap atom.

# Define the molecule geometry
geometry = """
N -0.85188 -0.02741 0.03141;
H 0.16545 0.00593 -0.01648;
H -1.16348 -0.39357 -0.86702;
H -1.16348 0.94228 0.06281;
"""

Pilihan tambahan boleh ditakrifkan dan diberikan untuk sistem molekul dalam format kamus berikut.

# Configure some options for the job.
molecule_options = {"basis": "sto3g"}
hivqe_options = {"shots": 100, "max_iter": 20}

Laksanakan fungsi dengan input geometri dan pilihan.

# Run HI-VQE
job = function.run(
geometry=geometry,
# `backend_name` is the name of a backend with at least 16 qubits,
# for example, "ibm_marrakesh".
backend_name=backend_name,
max_states=2000,
max_expansion_states=10,
molecule_options=molecule_options,
hivqe_options=hivqe_options,
)

Adalah baik untuk mencetak ID kerja Fungsi supaya ia boleh diberikan dalam permintaan sokongan jika ada yang tidak kena.

print("Job ID:", job.job_id)
Job ID: e5ced6f2-fd1d-4244-a6aa-bd27cfb0cdee

Contoh ini kemudian menggunakan 16 qubit dengan 8 orbital asas sto3g untuk molekul NH3. Semak status atau kembalikan keputusan beban kerja Fungsi Qiskit anda seperti berikut:

print(job.status())
QUEUED

Selepas kerja selesai, keputusan boleh diperoleh dengan instans result().

result = job.result()

# Output can be long, so we display a shortened representation
shortened_result = reprlib.repr(result)
print(shortened_result)
{'eigenvector': [0.9824448589364075, 0.009527106392132133, 6.854074372058527e-08, 3.591500190038039e-07, 0.0012975231577544268, 2.310159709002111e-05, ...], 'energy': -55.52108557170985, 'energy_history': [-55.51901898989887, -55.52056881448526, -55.52065046778772, -55.520690696813716, -55.520691108428, -55.520708448092634, ...], 'energy_variance': 3.066239097617371e-10, ...}

Untuk mengakses tenaga keadaan dasar, gunakan kunci "energy". Kunci "eigenvector" menyediakan pekali CI dengan notasi bitstring konfigurasi elektron yang sepadan yang disimpan dengan "states" dalam keputusan.

fci_energy = -55.521148034704126 # the exact energy using FCI method
hivqe_energy = result["energy"]
print(
f"|Exact Energy - HI-VQE Energy|: "
f"{abs(fci_energy - hivqe_energy) * 1000} mHa"
)
print(f"Sampled Number of States: {len(result['states'])}")
|Exact Energy - HI-VQE Energy|: 0.06246299427914437 mHa
Sampled Number of States: 1936

Prestasi

Bahagian ini menunjukkan pengiraan penanda aras yang ditunjukkan HI-VQE dengan kes 24-qubit untuk Li2S, kes 40-qubit untuk molekul N2, dan kes 44-qubit untuk sistem FeP-NO.

Lengkung permukaan tenaga potensial dissosiasi untuk molekul Li2S dengan 24 qubit

Lengkung PES ditunjukkan dengan rujukan FCI dan teka-teki awal dari RHF, bersama-sama dengan ralat tenaga dari rujukan FCI.

Image showing that HI-VQE produces solutions within chemical accuracy of a classical reference PES curve for the Li2S system.

Pengiraan telah dijalankan dengan geometri dan pilihan berikut.

# This cell is hidden from users
backend_name = service.least_busy(operational=True, min_num_qubits=38).name
# Define Li2S geometries
Li2S_geoms = {
"Li2S_1.51": "S -1.239044 0.671232 -0.030374;Li -1.506327 0.432403 -1.498949;Li -0.899996 0.973348 1.826768;",
"Li2S_2.40": "S -1.741432 0.680397 0.346702;Li -0.529307 0.488006 -1.729343;Li -1.284307 0.989409 2.177209;",
"Li2S_3.80": "S -2.707255 0.674298 0.909161;Li 0.079218 0.552012 -1.671656;Li -0.927010 0.931502 1.557063;",
}

# Configure some options for the job.
molecule_options = {
"basis": "sto3g",
}
hivqe_options = {
"shots": 100,
"max_iter": 20,
}

results = []
for geom in ["Li2S_1.51", "Li2S_2.40", "Li2S_3.80"]:
# Run HI-VQE
job = function.run(
geometry=Li2S_geoms[geom],
backend_name=backend_name, # can use any device with at least 38 qubits
max_states=2000,
max_expansion_states=10,
molecule_options=molecule_options,
hivqe_options=hivqe_options,
)
results.append(job.result())

Titik merah mewakili keputusan pengiraan HI-VQE untuk enam geometri berbeza, dan tiga geometri yang sepadan dengan 1.51, 2.40, dan 3.80 Angstrom disediakan sebagai input dalam sel di atas.

Lengkung PES dissosiasi untuk molekul N2 dengan 40 qubit

Molekul nitrogen telah dikenal pasti sebagai sistem multirujukan dengan sumbangan tenaga korelasi yang besar melebihi keadaan Hartree-Fock. Kami menjalankan pengiraan penanda aras untuk molekul N2 dengan asas cc-pvdz, (20o,14e) menggunakan pemilihan orbital aktif homo-lumo. Nombor ruang aktif penuh (CAS) untuk mewakili masalah ini ialah 6,009,350,400. Tidak mungkin mendapatkan penyelesaian masalah nilai eigen (untuk tenaga dan struktur elektronik) dengan bilangan keadaan ini menggunakan komputer meja yang berkuasa (16cpu/64GB). Dengan HI-VQE, pengguna boleh mencari subspace keadaan CAS dengan cekap untuk mencari keputusan yang tepat secara kimia sambil menjimatkan sumber pengkomputeran dengan ketara. Plot berikut menunjukkan lengkung PES pengiraan HI-VQE 40 qubit untuk dissosiasi molekul N2.

Image showing that HI-VQE produces solutions within chemical accuracy of a classical reference PES curve for the N2 system.

Lengkung PES dissosiasi untuk iron(II)-porfirin berlima koordinat dengan sistem NO dengan 44 qubit

Sistem kimia menarik lain ialah kompleks iron(II)-porfirin (FeP) dengan ligan nitrik oksida (NO) terkoordinat, yang mewakili sistem metaloporfirin yang berkaitan biologi yang memainkan peranan penting dalam pelbagai proses fisiologi. Dalam contoh ini, HI-VQE telah digunakan untuk menganggar lengkung permukaan tenaga potensial yang tepat bagi interaksi antarmolekul antara FeP dan NO (tenaga keadaan dasar untuk geometri yang dipisahkan secara berbeza). Sistem gabungan mempunyai 450 orbital dan 202 elektron (450o,202e) dengan asas 6-31g(d) secara keseluruhan. Pemilihan orbital aktif homo-lumo digunakan untuk mengira kes yang lebih kecil dari kes sebenar dengan (22o,22e). Daripada keputusan penanda aras berikut, kami berjaya mencapai ketepatan kimia (> 1.6 mHa) dengan pengiraan kimia komputer klasik terkini CASCI(DMRG) (22o,22e) sebagai rujukan.

Image showing that HI-VQE produces solutions within chemical accuracy of a classical reference PES curve for the FeP-NO system.

Penanda aras

  • Saiz matriks tepat adalah bilangan determinan untuk penyelesaian tepat, seperti FCI dan CASCI.
  • Pengiraan HI-VQE mengambil sampel dan mengira subspace daripadanya (iaitu, saiz matriks HI-VQE).
  • Jumlah masa termasuk masa jalan QPU dan jalankan Fungsi Qiskit dengan CPU.
  • Ketepatan dianggar daripada perbezaan tenaga dari penyelesaian tepat.
Sistem kimiaBilangan qubitSaiz matriks tepatSaiz matriks HI-VQEE(perbezaan) dari tepat (mHa)Bilangan lelaranJumlah masaPenggunaan masa jalan QPU
NH3NH_3 (8o,10e)16313619360.08637 s34 s
Li2SLi_2S (10o,10e)206350439690.605250 s50 s
NH3NH_3 (15o,10e)309018009497290.905354 s54 s
N2N_2 (16o,14e)3213087360017982811.1096531 s121 s
3H2O3H_2O (18o,24e)363446220963994240.90245174 s130 s
N2N_2 (20o,14e)40600935040090120041.202146547 s258 s

Dapatkan mesej ralat

Jika beban kerja anda gagal, status akan menjadi ERROR dan memanggil job.result() akan menaikkan pengecualian:

job = function.run(
geometry="invalid-geometry", # This will cause an error
backend_name=backend_name,
max_states=2000,
max_expansion_states=15,
molecule_options=molecule_options,
hivqe_options=hivqe_options,
)

job.result()
job.status()
'ERROR'

Dapatkan sokongan

Anda boleh menghantar e-mel ke qiskit.support@qunovacomputing.com untuk bantuan dengan fungsi ini.

Jika anda memerlukan bantuan untuk menyelesaikan masalah ralat tertentu, sila berikan ID kerja Fungsi bagi kerja yang menghadapi ralat tersebut.

Langkah seterusnya