Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Sesi adalah fitur utama komputasi kuantum hibrid. Sesi adalah pengelompokan logis dari satu atau lebih pekerjaan yang Anda serahkan ke satu target. Setiap sesi memiliki ID unik yang dilampirkan ke setiap pekerjaan dalam sesi tersebut. Sesi berguna ketika Anda ingin menjalankan beberapa pekerjaan komputasi kuantum secara berurutan, dan menjalankan kode klasik antara pekerjaan kuantum.
Catatan
Sesi mengelompokkan pekerjaan untuk pengiriman dari Azure Quantum ke penyedia, tetapi pekerjaan dalam sesi tidak di-batch di sisi penyedia.
Prasyarat
Untuk membuat sesi, Anda memerlukan prasyarat berikut:
Akun Azure dengan langganan aktif. Jika Anda tidak memiliki akun Azure, daftarkan secara gratis dan daftar untuk langganan prabayar.
Ruang Azure Quantum kerja. Untuk informasi selengkapnya, lihat Membuat Azure Quantum ruang kerja.
Lingkungan Python dengan Python dan Pip terinstal.
Versi Visual Studio Code terbaru (VS Code), dengan QDK ekstensi, Python ekstensi, dan Jupyter ekstensi terinstal.
Paket
qdkPython . Untuk mengirimkan Qiskit dan Cirq program, instalazure, ,qiskitdancirqekstra.pip install --upgrade "qdk[azure,qiskit,cirq]"
Apa itu sesi?
Dalam sesi, Anda dapat memindahkan sumber daya komputasi klien ke cloud untuk latensi yang lebih rendah dan kemampuan untuk menjalankan program kuantum Anda beberapa kali dengan parameter yang berbeda. Anda dapat mengelompokkan pekerjaan secara logis ke dalam satu sesi, dan Anda dapat memprioritaskan pekerjaan dalam sesi tersebut melalui pekerjaan non-sesi. Status qubit tidak bertahan di antara pekerjaan, tetapi pekerjaan dalam sesi memiliki waktu antrean yang lebih pendek. Waktu antrean yang lebih pendek memungkinkan Anda menjalankan algoritma kompleks untuk mengatur dan melacak pekerjaan komputasi kuantum individual Anda dengan lebih baik.
Sesi berguna untuk algoritma kuantum berparameter, di mana output dari satu pekerjaan komputasi kuantum digunakan untuk menentukan parameter input untuk pekerjaan komputasi kuantum berikutnya. Contoh paling umum dari jenis algoritma ini adalah Variational Quantum Eigensolvers (VQE) dan Quantum Approximate Optimization Algorithms (QAOA).
Perangkat keras yang didukung
Sesi didukung pada semua penyedia perangkat keras komputasi kuantum. Dalam beberapa kasus, pekerjaan yang dikirimkan dalam sesi diprioritaskan dalam antrean itu target. Untuk informasi selengkapnya, lihat Perilaku target.
Cara membuat sesi
Untuk membuat sesi, ikuti langkah-langkah berikut:
Contoh ini memperlihatkan cara membuat sesi dengan Q# kode sebaris dalam Jupyter buku catatan di VS Code.
Catatan
Sesi dikelola dengan Python, bahkan saat menjalankan Q# kode sebaris.
Di VS Code, buka menu Tampilan dan pilih Palet Perintah.
Masukkan atau pilih Buat: Baru Jupyter Notebook.
Di kanan atas, VS Code akan mendeteksi dan menampilkan versi Python dan lingkungan virtual Python yang dipilih untuk buku catatan. Jika Anda memiliki beberapa Python lingkungan, Anda mungkin perlu memilih kernel menggunakan pemilih kernel di kanan atas. Jika tidak ada lingkungan yang terdeteksi, lihat Jupyter Notebook di dalam VS Code untuk informasi pengaturan.
Di sel pertama buku catatan, jalankan kode berikut:
from qdk.azure import Workspace workspace = Workspace(resource_id="") # add your resource IDTambahkan sel baru di buku catatan dan impor
qsharpPython paket:from qdk import qsharpPilih kuantum targetAnda. Dalam contoh ini, target adalah simulator IonQ.
target = workspace.get_targets("ionq.simulator")Pilih konfigurasi target profil,
BaseAdaptive_RI, atauUnrestricted.qsharp.init(target_profile=qsharp.TargetProfile.Base)Catatan
Adaptive_RItarget pekerjaan yang berkaitan dengan profil saat ini didukung di Quantinuum targets. Untuk informasi selengkapnya, lihat Komputasi kuantum hibrid terintegrasi.Tulis program Anda Q# . Misalnya, program berikut Q# menghasilkan bit acak. Untuk mengilustrasikan penggunaan argumen input, program ini mengambil bilangan bulat,
n, dan array sudut,angle, sebagai input.%%qsharp import Std.Measurement.*; import Std.Arrays.*; operation GenerateRandomBits(n: Int, angle: Double[]) : Result[] { use qubits = Qubit[n]; // n parameter as the size of the qubit array for q in qubits { H(q); } R(PauliZ, angle[0], qubits[0]); // arrays as entry-points parameters R(PauliZ, angle[1], qubits[1]); let results = MeasureEachZ(qubits); ResetAll(qubits); return results; }Selanjutnya, Anda membuat sesi. Katakanlah Anda ingin menjalankan
GenerateRandomBitoperasi tiga kali, jadi Anda menggunakantarget.submituntuk mengirimkan Q# operasi dengantargetdata dan Anda mengulangi kode tiga kali - dalam skenario dunia nyata, Anda mungkin ingin mengirimkan program yang berbeda alih-alih kode yang sama.angle = [0.0, 0.0] with target.open_session(name="Q# session of three jobs") as session: target.submit(input_data=qsharp.compile(f"GenerateRandomBits(2, {angle})"), name="Job 1", shots=100) # First job submission angle[0] += 1 target.submit(input_data=qsharp.compile(f"GenerateRandomBits(2, {angle})"), name="Job 2", shots=100) # Second job submission angle[1] += 1 target.submit(input_data=qsharp.compile(f"GenerateRandomBits(2, {angle})"), name="Job 3", shots=100) # Third job submission session_jobs = session.list_jobs() [session_job.details.name for session_job in session_jobs]Penting
Saat Anda meneruskan argumen sebagai parameter ke tugas, argumen tersebut diformat ke dalam ekspresi Q# ketika
qsharp.compiledipanggil. Ini berarti Anda perlu memformat argumen Anda sebagai Q# objek. Dalam contoh ini, karena array dalam Python sudah dicetak sebagai[item0, item1, ...], argumen input sesuai dengan pemformatan Q#. Untuk struktur data lainnya, Anda mungkin memerlukan penanganan lebih lanjut untuk memasukkan nilai string ke dalam Python dengan cara yang kompatibel.Setelah membuat sesi, Anda dapat menggunakan
workspace.list_session_jobsuntuk mengambil daftar semua pekerjaan dalam sesi. Untuk informasi selengkapnya, lihat Cara mengelola sesi.
Perilaku target
Setiap penyedia perangkat keras kuantum mendefinisikan heuristik mereka sendiri untuk mengelola prioritas pekerjaan dalam sesi.
Quantinuum
Jika Anda memilih untuk mengirimkan pekerjaan dalam sesi ke Quantinuum target, maka sesi Anda memiliki akses eksklusif ke perangkat keras selama Anda mengantre pekerjaan dalam satu menit dari satu sama lain. Setelah itu, pekerjaan Anda diterima dan ditangani dengan logika antrean dan prioritas standar.