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.
Anda dapat mengirimkan program Qiskit untuk dijalankan di Azure Quantum targets dengan Microsoft Quantum Development Kit (QDK). Anda juga dapat menjalankan program Qiskit di komputer lokal Anda dengan simulator bawaan QDK yang spars. QDK mendukung Qiskit versi 1 dan versi 2.
Dalam artikel ini, Anda mempelajari cara menjalankan program Qiskit dengan pustaka QDK Python dari Jupyter Notebook di Visual Studio Code (VS Code).
Catatan
Ini adalah praktik terbaik untuk menjalankan program kuantum Anda pada simulator target sebelum Anda mengirimkan pekerjaan untuk dijalankan di komputer targetkuantum . Setiap penyedia Azure Quantum menawarkan satu atau beberapa simulator targetsgratis.
Prasyarat
Untuk mengirimkan pekerjaan Qiskit ke Azure Quantum dan menjalankan program Qiskit pada simulator sparse lokal, Anda harus memiliki hal berikut:
Ruang kerja Azure Quantum di langganan Azure Anda. Untuk membuat ruang kerja, lihat Membuat ruang kerja Azure Quantum.
Lingkungan lokal Python (versi 3.10 atau lebih tinggi) dengan Python dan Pip terinstal.
Visual Studio Code (VS Code) dengan ekstensi Python dan Jupyter yang terinstal.
Pustaka
qdkPython dengan tambahanazuredanqiskit, serta paketipykernel.pip install --upgrade "qdk[azure,qiskit]" ipykernel
Mengirimkan pekerjaan ke Azure Quantum target di ruang kerja Quantum Anda
Untuk mengirimkan program Qiskit agar berjalan di Azure Quantum target, ikuti langkah-langkah berikut:
Di Visual Studio Code, buka menu Tampilan dan pilih Palet Perintah.
Masukkan dan pilih Buat: Notebook Jupyter Baru. File Jupyter Notebook kosong terbuka di tab baru.
Di sel pertama buku catatan Anda, tulis sirkuit Qiskit. Misalnya, gunakan sirkuit berikut:
from qiskit import QuantumCircuit # Create a Quantum circuit that acts on the q register circuit = QuantumCircuit(3, 3) circuit.name = "Qiskit Sample - 3-qubit GHZ circuit" circuit.h(0) circuit.cx(0, 1) circuit.cx(1, 2) circuit.measure([0, 1, 2], [0, 1, 2]) # Print out the circuit circuit.draw()Sambungkan ke ruang kerja Azure Quantum Anda.
from qdk.azure import Workspace workspace = Workspace(resource_id="") # Add the resource ID of your workspaceDapatkan penyedia dari ruang kerja Anda yang dapat menjalankan program Qiskit, dan mencetak yang tersedia targets untuk setiap penyedia.
from qdk.azure.qiskit import AzureQuantumProvider provider = AzureQuantumProvider(workspace) for backend in provider.backends(): print("- " + backend.name)Atur backend Azure Quantum dengan target tempat Anda ingin mengirim tugas Anda. Misalnya, kode berikut menyiapkan backend untuk menjalankan program Anda di simulator Rigetti:
backend = provider.get_backend('rigetti.sim.qvm')Jalankan program Anda di Azure Quantum target dan dapatkan hasilnya. Kode berikut menjalankan 1.000 bidikan program Anda pada yang ditentukan target dan menyimpan hasilnya:
job = backend.run(circuit, shots=1000) result = job.result() print(result)
Memeriksa hasil pekerjaan Anda
Objek result berisi informasi tentang hasil pekerjaan Anda, seperti hasil pengukuran untuk setiap bidikan, dan jumlah total dan probabilitas untuk setiap kemungkinan pengukuran.
Untuk membuat histogram hasil pengukuran, teruskan sirkuit Anda ke metode get_counts lalu teruskan hitungan ke fungsi plot_histogram dari modul qiskit.visualization. Kode berikut memformat counts ulang objek untuk menampilkan semua kemungkinan hasil pengukuran:
from qiskit.visualization import plot_histogram
print("Job ID:", job.job_id())
counts = result.get_counts(circuit)
print('Counts:', counts)
# Reformat counts to include all possible measurement outcomes, even those with zero counts
full_counts = {format(n, "03b"): 0 for n in range(8)}
full_counts.update(counts)
plot_histogram(full_counts)
Catatan
Untuk menggunakan plot_histogram fungsi dari Qiskit, Anda harus menginstal Matplotlib.
pip install matplotlib
Hasil tugas Qiskit untuk program dengan kehilangan qubit
Beberapa jenis perangkat keras kuantum dapat mengalami kehilangan qubit selama program berjalan. Jika terjadi kehilangan qubit pada titik mana pun selama pengambilan data untuk program Qiskit, maka pengambilan data tersebut dihapus dari hasil pekerjaan Azure Quantum. Misalnya, jika kehilangan qubit terjadi dalam 10 dari 200 bidikan, maka hasil pekerjaan hanya memiliki 190 jumlah pengukuran total.
Hasil mentah untuk semua bidikan, termasuk bidikan di mana kehilangan qubit terjadi, masih tersedia di results objek. Kode berikut mendapatkan kedua set hasil:
# Get results only for shots without qubit loss
print('Counts:', result.results[0].data.counts)
print('Probabilities:', result.results[0].data.probabilities)
print('Memory:', result.results[0].data.memory)
# Get the raw total shot results
print('Raw counts:', result.results[0].data.raw_counts)
print('Raw probabilities:', result.results[0].data.raw_probabilities)
print('Raw memory:', result.results[0].data.raw_memory)
Untuk pekerjaan atau targets yang tidak memiliki hilangnya qubit, hasil default dan hasil mentah identik.
Catatan
Atribut memory untuk hasil pekerjaan Qiskit adalah daftar hasil pengukuran untuk setiap bidikan.
Menjalankan pekerjaan di simulator Sparse QDK
QDK menyertakan simulator sparse bawaan yang dapat Anda gunakan untuk menjalankan program Qiskit di komputer lokal Anda alih-alih mengirimkan tugas ke Azure Quantum. Untuk menjalankan program Qiskit pada "sparse simulator," gunakan QSharpBackend untuk membuat sebuah instans objek backend.
from qsharp.interop.qiskit import QSharpBackend
backend = QSharpBackend()
job = backend.run(circuit)
counts = job.result().get_counts()
print(counts)