Kirim pekerjaan ke Azure Quantum dengan QDKPython paket

Gunakan paket Microsoft Quantum Development Kit (QDK) Python untuk mengirim Q#, Qiskit, OpenQASM, Cirq, dan PennyLane program ke Azure Quantum.

Artikel ini menyediakan contoh pengiriman pekerjaan untuk setiap bahasa atau kerangka kerja kuantum yang didukung. Untuk alur kerja OpenQASM atau Q# interaktif yang tidak memerlukan kode Python, lihat Mengirim tugas dengan ekstensi QDK untuk VS Code.

Prasyarat

  • Sebuah akun Azure dengan langganan aktif.

  • Ruang Azure Quantum kerja. Untuk membuatnya, lihat Membuat Azure Quantum ruang kerja.

  • Python 3.10 atau yang lebih baru.

  • Jika Anda menggunakan notebook Jupyter, gunakan lingkungan Jupyter, seperti ekstensi Jupyter untuk VS Code dan paket ipykernel.

  • Instal Azure CLI dengan quantum ekstensi.

    az extension add --upgrade --name quantum
    
  • Instal paket versi terbaru qdkPython dengan ekstra azure dan jupyter.

    pip install --upgrade "qdk[azure,jupyter]"
    

    Jika Anda ingin mengirim program Qiskit atau Cirq, instal komponen tambahan cirq dan qiskit.

    pip install --upgrade "qdk[qiskit,cirq]"
    

Hubungkan ke Azure Quantum ruang kerja Anda

Sebelum mengirimkan pekerjaan, Anda perlu menyambungkan ke Azure Quantum ruang kerja. Modul qdk.azure menyediakan Workspace objek untuk terhubung ke Azure Quantum ruang kerja. Untuk menyambungkan ke ruang kerja Anda, ikuti langkah-langkah berikut.

Masuk dengan Azure CLI

Jika Anda belum melakukannya, masuk ke Azure dari terminal sebelum Anda membuka buku catatan Jupyter.

az login

Jika Anda tidak masuk dari terminal, Anda perlu mengautentikasi setiap kali Anda terhubung ke ruang kerja Quantum melalui Python. Jika akun Anda memiliki akses ke beberapa langganan, atur langganan yang berisi ruang kerja Anda Azure Quantum .

az account set --subscription <subscription-id>

Jalankan az login lagi saat sesi kedaluwarsa atau saat Anda ingin menggunakan akun Azure yang berbeda.

Mendapatkan ID sumber daya ruang kerja Anda

  1. Masuk ke portal Azure.
  2. Buka ruang kerja Quantum tempat Anda ingin mengirimkan pekerjaan Anda.
  3. Di halaman Gambaran Umum , temukan dan salin ID Sumber Daya.

Sambungkan ke ruang kerja

  1. Untuk terhubung ke ruang kerja Quantum Anda, buat objek Workspace dengan ID sumber daya yang Anda salin.

    from qdk.azure import Workspace
    
    workspace = Workspace(resource_id="") # Add your resource ID
    

    Nota

    Y

  2. Periksa koneksi dan lihat targets yang tersedia di ruang kerja.

    for target in workspace.get_targets():
        print(target.name)
    

Untuk opsi koneksi dan autentikasi lainnya, lihat Menyambungkan ke ruang kerja AndaAzure Quantum.

Nota

Contoh berikut mengirimkan pekerjaan ke simulator targets. targets yang tersedia di ruang kerja Anda bergantung pada penyedia yang telah Anda konfigurasi.

Menyiapkan dan mengirimkan program Anda

Pilih tab untuk bahasa atau kerangka kerja kuantum Anda.

Gunakan modul qdk.qsharp untuk mendefinisikan atau memuat kode Q#, mengompilasi titik masuk ke QIR, dan mengirimkan QIR ke Azure Quantumtarget.

Menentukan dan mengkompilasi Q# program

  1. Inisialisasi Q# dengan targetQIR profil yang didukung oleh Azure Quantumtarget.

    from qdk import qsharp, TargetProfile
    
    qsharp.init(target_profile=TargetProfile.Base)
    

    Untuk informasi selengkapnya tentang QIRtarget profil, lihat Azure QuantumQIRtarget profil di QDK.

  2. Definisikan sebuah Q# operasi. Misalnya, gunakan operasi berikut RandomBit .

    qsharp.eval("""
        operation RandomBit() : Result {
            use q = Qubit();
            H(q);
            return MResetZ(q);
        }
    """)
    
  3. Uji operasi pada simulator lokal.

    print(qsharp.run("RandomBit()", shots=10))
    
  4. Kompilasikan operasi menjadi QIR.

    from qdk.qsharp import compile
    
    program = compile("RandomBit()")
    

Q# Mengirimkan pekerjaan

  1. Pilih target yang kompatibel dari ruang kerja Anda.

    target = workspace.get_targets("rigetti.sim.qvm")
    
  2. Kirim program yang dikompilasi.

    job = target.submit(program, "qsharp-job", shots=100)
    print("Job ID:", job.id)
    
  3. Tunggu hingga pekerjaan selesai dan ambil hasilnya.

    job.wait_until_completed()
    print("Status:", job.details.status)
    
    results = job.get_results()
    print(results)