Lumaktaw sa pangunahing nilalaman

Mga execution mode gamit ang REST API

Maaari mong patakbuhin ang iyong mga Qiskit primitive workload gamit ang mga REST API sa isa sa tatlong execution mode, depende sa iyong pangangailangan: job, session, at batch. Ipapaliwanag ng topic na ito ang mga mode na ito.

tala

Ginagamit ng dokumentasyong ito ang Python requests module para ipakita ang Qiskit Runtime REST API. Gayunpaman, maaaring isagawa ang workflow na ito gamit ang anumang wika o framework na sumusuporta sa pagtatrabaho sa mga REST API. Tingnan ang API reference documentation para sa mga detalye.

Job mode gamit ang REST API​

Sa job mode, isang primitive request ng Estimator o ng Sampler ang ginagawa nang walang context manager. Tingnan kung paano magpatakbo ng quantum circuit gamit ang Estimator at Sampler para sa ilang halimbawa.

Session mode gamit ang REST API​

Ang session ay isang feature ng Qiskit Runtime na nagpapahintulot sa iyo na mahusay na magpatakbo ng mga multi-job iterative workload sa mga quantum computer. Nakakatulong ang paggamit ng mga session para maiwasan ang mga pagkaantala dahil sa pag-queue ng bawat job nang hiwalay, na maaaring maging kapaki-pakinabang para sa mga iterative na gawain na nangangailangan ng madalas na komunikasyon sa pagitan ng mga classical at quantum na mapagkukunan. Makikita ang karagdagang detalye tungkol sa mga Session sa dokumentasyon.

tala

Ang mga gumagamit ng Open Plan ay hindi makakapag-submit ng mga session job.

Magsimula ng session​

Magsimula sa pamamagitan ng paglikha ng session at pagkuha ng session ID.

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'}

Isara ang session​

Magandang gawi na isara ang Session kapag tapos na ang lahat ng job. Makakatulong ito na mabawasan ang oras ng paghihintay para sa mga susunod na gumagamit.

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 gamit ang REST API​

Bilang alternatibo, maaari kang mag-submit ng batch job sa pamamagitan ng pagtukoy ng mode sa request payload. Makakatulong ang batch mode na mapaikli ang oras ng pagproseso kung lahat ng job ay maaaring ibigay sa simula pa lang. Matuto tungkol sa batch mode sa gabay na panimula sa mga execution mode.

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']

Mga halimbawa ng mga job na na-submit sa isang session​

Kapag na-set up na ang isang session, isa o higit pang Sampler o Estimator job ang maaaring i-submit sa parehong session sa pamamagitan ng pagtukoy ng session ID.

tala

Ang <parameter values> sa isang PUB ay maaaring isang solong parameter o isang listahan ng mga parameter. Sinusuportahan din nito ang numpy broadcasting.

Mga Estimator job sa 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)
},
}

}

Mga Sampler job sa 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)
},
}

}

Mga susunod na hakbang​

Mga Rekomendasyon