Lumaktaw sa pangunahing nilalaman
Ang proyektong ito ay nasa beta. Nakakita ng bug? Mag-bukas ng GitHub issue. May tanong o ideya? Magtanong sa Discussions — gusto naming marinig ang iyong feedback!
Gaano kaganda ang kalidad ng pagsasalin sa pahinang ito?

Mga execution mode gamit ang REST API

Package versions

Ang code sa pahinang ito ay binuo gamit ang mga sumusunod na requirement. Inirerekomenda naming gamitin ang mga bersyong ito o mas bago.

qiskit[all]~=2.3.0

Maaari mong patakbuhin ang iyong mga IBM Quantum primitive workloads 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 IBM Quantum Compute Service 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 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 na nagpapahintulot sa iyo na mahusay na magpatakbo ng mga multi-job iterative workload sa mga quantum computer. Ang paggamit ng mga session ay tumutulong upang maiwasan ang mga pagkaantala dahil sa pag-queue ng bawat job nang hiwalay, na partikular na kapaki-pakinabang para sa mga iterative na gawain na nangangailangan ng madalas na komunikasyon sa pagitan ng 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 iisang 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)
},
}

}

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)
},
}

}

Mga susunod na hakbang​

Mga Rekomendasyon
  • Suriin ang mga detalyadong halimbawa ng Sampler primitives gamit ang REST API.
  • Suriin ang mga detalyadong halimbawa ng Estimator primitives gamit ang REST API.
  • Magsanay sa mga primitive sa pamamagitan ng pagdaan sa aralin sa Cost function sa IBM Quantum® Learning.
  • Alamin kung paano mag-transpile nang lokal sa seksyon ng Transpile.