Langkau ke kandungan utama
Projek ini dalam fasa beta. Jumpa pepijat? Buat isu GitHub. Ada soalan atau idea? Tanya dalam Discussions — kami suka dengar maklum balas anda!
Bagaimana kualiti terjemahan pada halaman ini?

Mod pelaksanaan menggunakan REST API

Package versions

Kod pada halaman ini dibangunkan menggunakan keperluan berikut. Kami mengesyorkan penggunaan versi ini atau yang lebih baharu.

qiskit[all]~=2.3.0

Anda boleh menjalankan beban kerja primitif IBM Quantum menggunakan REST API dalam salah satu daripada tiga mod pelaksanaan, bergantung pada keperluan anda: job, session, dan batch. Topik ini menerangkan mod-mod tersebut.

nota

Dokumentasi ini menggunakan modul Python requests untuk mendemonstrasikan IBM Quantum Compute Service REST API. Walau bagaimanapun, aliran kerja ini boleh dilaksanakan menggunakan mana-mana bahasa atau rangka kerja yang menyokong kerja dengan REST API. Rujuk dokumentasi rujukan API untuk butiran lanjut.

Job mode dengan REST API​

Dalam job mode, satu permintaan primitif tunggal daripada Estimator atau Sampler dibuat tanpa pengurus konteks. Lihat cara menjalankan litar kuantum menggunakan Estimator dan Sampler untuk beberapa contoh.

Session mode dengan REST API​

Session ialah ciri yang membolehkan anda menjalankan beban kerja berbilang job secara berulang pada komputer kuantum dengan cekap. Menggunakan session membantu mengelakkan kelewatan akibat baris gilir setiap job secara berasingan, yang amat berguna untuk tugas berulang yang memerlukan komunikasi kerap antara sumber klasik dan kuantum. Butiran lanjut tentang Session boleh didapati dalam dokumentasi.

nota

Pengguna Open Plan tidak boleh menghantar job session.

Mulakan session​

Mulakan dengan mencipta session dan mendapatkan ID session.

import json
import requests

sessionsUrl = "https://quantum.cloud.ibm.com/api/v1/sessions"
auth_id = "Bearer <YOUR_BEARER_TOKEN>"
backend = "<BACKEND_NAME>"
crn = "<SERVICE-CRN>"

headersList = {
"Accept": "application/json",
"Content-Type": "application/json",
"Authorization": auth_id,
"Service-CRN": crn
}

payload = json.dumps({
"backend": backend,
"mode": 'dedicated',
})

response = requests.request("POST", sessionsUrl, data=payload, headers=headersList)

sessionId = response.json()['id']

print(response.json())

Output

{'id': 'crw9s7cdbt40008jxesg'}

Tutup session​

Adalah amalan yang baik untuk menutup Session apabila semua job selesai. Ini akan mengurangkan masa menunggu bagi pengguna berikutnya.

closureURL="https://quantum.cloud.ibm.com/api/v1/sessions/"+sessionId+"/close"

headersList = {
"Accept": "application/json",
"Authorization": auth_id,
"Service-CRN": crn
}

closure_response = requests.request(
"DELETE",
closureURL,
headers=headersList
)

print("Session closure response ok?:",closure_response.ok,closure_response.text)

Output

Session closure response ok?: True

Batch mode dengan REST API​

Sebagai alternatif, anda boleh menghantar job batch dengan menentukan mode dalam muatan permintaan. Batch mode boleh membantu memendekkan masa pemprosesan jika semua job boleh diberikan sekaligus. Ketahui lebih lanjut tentang batch mode dalam panduan pengenalan kepada mod pelaksanaan.

import json
import requests

sessionsUrl = "https://quantum.cloud.ibm.com/api/v1/sessions"

headersList = {
"Accept": "application/json",
"Authorization": auth_id,
"Service-CRN": crn,
'Content-Type': 'application/json'
}

payload = json.dumps({
"backend": backend,
"instance": "hub1/group1/project1",
"mode": "batch"
})

response = requests.request("POST", sessionsUrl, data=payload, headers=headersList)

sessionId = response.json()['id']

Contoh job yang dihantar dalam session​

Setelah session ditetapkan, satu atau lebih job Sampler atau Estimator boleh dihantar ke session yang sama dengan menentukan ID session.

nota

<parameter values> dalam PUB boleh sama ada satu parameter atau senarai parameter. Ia juga menyokong penyiaran numpy.

Job Estimator dalam session mode​

job_input = {
'program_id': 'estimator',
"backend": backend,
"session_id": sessionId, # This specifies the previously created Session
"params": {
"pubs": [[resulting_qasm, [obs1, obs2, obs3, obs4]]], #primitive unified blocs (PUBs) containing one circuit each.
"options":{
"transpilation":{"optimization_level": 1},
"twirling": {"enable_gates": True,"enable_measure": True},
# "dynamical_decoupling": {"enable": True, "sequence_type": "XpXm"}, #(optional)
},
}

}

Sampler jobs in session mode​

job_input = {
'program_id': 'sampler',
"backend": backend,
"session_id": sessionId, # This specifies the previously created Session
"params": {
"pubs": [[resulting_qasm]], #primitive unified blocs (PUBs) containing one circuit each
"options":{
"transpilation":{"optimization_level": 1},
"twirling": {"enable_gates": True,"enable_measure": True},
# "dynamical_decoupling": {"enable": True, "sequence_type": "XpXm"}, #(optional)
},
}

}

Langkah seterusnya​

Cadangan
  • Semak contoh primitif Sampler yang terperinci menggunakan REST API.
  • Semak contoh primitif Estimator yang terperinci menggunakan REST API.
  • Berlatih dengan primitif melalui pelajaran Fungsi kos dalam IBM Quantum® Learning.
  • Ketahui cara melakukan transpilasi secara tempatan dalam bahagian Transpile.