일괄처리
class Batch(backend, max_time=None, *, create_new=True)
베이스: Session
일괄 실행 모드에서 작업을 실행하기 위한 클래스입니다.
batch 모드는 여러 개의 독립적인 작업으로 구성된 실험을 효율적으로 수행하도록 설계되었습니다.
** batch 모드를 사용하면 다음과 같은 이점이 있습니다:**
- 컴파일과 같은 작업의 고전적인 계산은 병렬로 실행됩니다. 따라서 여러 작업을 일괄적으로 실행하는 것이 연속적으로 실행하는 것보다 훨씬 빠릅니다.
- 일반적으로 작업 간 지연이 최소화되어 드리프트를 방지하는 데 도움이 될 수 있습니다.
- 작업 부하를 여러 작업으로 분할하여
batch모드에서 실행하면 개별 작업에서 결과를 얻을 수 있으므로 작업의 유연성이 높아집니다. 예를 들어, 작업 결과가 기대에 미치지 못하는 경우 남은 작업을 취소하거나 해당 개별 작업을 다시 제출하고 전체 작업량을 다시 실행하지 않을 수 있습니다.
배치 모드는 모든 작업이 처음에 제공되면 처리 시간을 단축할 수 있습니다. 반복 작업을 제출하려면 session 모드를 대신 사용하세요.
이 클래스를 Batch 사용하여 IBM Quantum Compute (구 Qiskit Runtime ) 배치 작업을 연 다음, 하나 이상의 프리미티브에 작업을 제출할 수 있습니다.
예를 들어,
import numpy as np
from qiskit.circuit.library import IQP
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
from qiskit.quantum_info import random_hermitian
from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2 as Sampler, Batch
n_qubits = 127
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False, min_num_qubits=n_qubits)
rng = np.random.default_rng()
mats = [np.real(random_hermitian(n_qubits, seed=rng)) for _ in range(30)]
circuits = [IQP(mat) for mat in mats]
for circuit in circuits:
circuit.measure_all()
pm = generate_preset_pass_manager(backend=backend, optimization_level=1)
isa_circuits = pm.run(circuits)
max_circuits = 10
all_partitioned_circuits = []
for i in range(0, len(isa_circuits), max_circuits):
all_partitioned_circuits.append(isa_circuits[i : i + max_circuits])
jobs = []
start_idx = 0
with Batch(backend=backend):
sampler = Sampler()
for partitioned_circuits in all_partitioned_circuits:
job = sampler.run(partitioned_circuits)
jobs.append(job)자세한 내용은 ' 일괄 작업 실행 ' 페이지에서 확인하세요.
매개변수
- backend (BackendV2) – 클래스의
Backend인스턴스. - max_time (int | str | None) – IBM Quantum Compute 세션이 강제 종료되기 전까지 열려 있을 수 있는 최대 시간입니다. 초(int) 단위로 지정하거나, “2h, 30m, 40s” 와 같은 문자열로 지정할 수 있습니다. 이 값은 시스템에서 정한 최대값보다 작아야 합니다.
- create_new (bool | None) – True이면 POST 세션 API 엔드포인트가 호출되어 새 세션을 만듭니다.
from_id()호출 시 새 세션 생성을 방지합니다.
레이즈
ValueError - 입력 값이 유효하지 않은 경우.
속성
service
session_id
세션 ID를 반환합니다.
리턴
세션 ID입니다. 백엔드가 시뮬레이터인 경우 없음.
메소드
backend
cancel
close
close()
세션을 종료하여 더 이상 새로운 작업이 접수되지 않도록 하십시오.
세션을 닫으면 새 작업은 더 이상 수락되지 않지만 대기 중이거나 실행 중인 기존 작업은 완료될 때까지 실행됩니다. 보류 중인 작업이 더 이상 없으면 세션이 종료됩니다.
리턴 유형
없음
details
details()
세션 세부 정보를 반환합니다.
리턴
세션 세부 정보가 포함된 사전입니다.
id: 세션의 ID입니다.backend_name세션에 사용되는 백엔드입니다.interactive_timeout: 세션이 비활성화되기 전에 발생할 수 있는 작업 간의 최대 유휴 시간(초)입니다.max_time: 세션에 허용되는 최대 시간(초)으로, 요금제 제한에 따라 달라질 수 있습니다.active_timeout: 세션이 활성 상태로 유지될 수 있는 최대 시간(초)입니다.state: 세션 상태 - 열려 있음, 활성 상태, 비활성 상태 또는 닫힘 상태입니다.accepting_jobs: 세션이 작업을 수락하고 있는지 여부입니다.last_job_started: 세션의 마지막 작업이 시작된 시점의 타임스탬프입니다.last_job_completed: 세션의 마지막 작업이 완료된 시점의 타임스탬프입니다.started_at: 세션이 시작된 시점의 타임스탬프입니다.closed_at: 세션이 종료된 시점의 타임스탬프입니다.activated_at: 세션 상태가 활성으로 변경된 시점의 타임스탬프입니다.mode: 세션의 실행 모드입니다.usage_time: 이 세션 또는 배치의 사용 시간(초)입니다. 사용량은 양자 시스템이 작업을 완료하기 위해 투입된 시간으로 정의됩니다.
리턴 유형
dict [str, Any] | None
from_id
classmethod from_id(session_id, service, use_fractional_gates=False, calibration_id=None)
session_id주어진 값으로 Session 객체를 생성합니다.
예를 들어,
from qiskit_ibm_runtime import QiskitRuntimeService, Session
service = QiskitRuntimeService()
job = service.job(<job_id>)
existing_session_id = job.session_id
new_session = Session.from_id(existing_session_id, service)매개변수
- session_id (str) – 생성할 세션의 ID. 이 세션 ID는 이미 존재하는 것 같습니다.
- service (QiskitRuntimeService) – 클래스의
QiskitRuntimeService인스턴스.session_id여러 인스턴스를 사용하는 경우, 해당 리소스에 대한 액세스 권한이 있는 인스턴스로service활성 클라우드 인스턴스가 대체된다는 점에 유의하십시오. 여러 인스턴스 사용 방법에 대한QiskitRuntimeService문서와 활성 인스턴스를 확인하는 방법을active_instance()확인해 주세요. - use_fractional_gates (bool) – 세션을 생성하는 데 사용되는 백엔드에서 소수점 게이트를 허용할지 여부.
- calibration_id (str | None) – 세션을 생성하는 데 사용되는 백엔드의 보정 ID입니다.
레이즈
- IBMInputValueError – 지정된 session_id가 존재하지 않는 경우.
- IBMRuntimeError – 세션의 백엔드가 알려지지 않은 경우.
리턴
주어진 세션이 있는 새 세션 session_id
리턴 유형
status
status()
현재 세션 상태를 반환합니다.
리턴
세션 상태를 문자열로 표시합니다.
Pending: 세션이 생성되었지만 활성화되지 않았습니다. 이 세션의 다음 작업이 큐에 대기열에 추가되면 활성화됩니다.In progress, accepting new jobs세션이 활성화되어 새 작업을 수락하고 있습니다.In progress, not accepting new jobs세션이 활성 상태이며 새 작업을 수락하지 않습니다.Closed최대_시간이 만료되었거나 세션이 명시적으로 종료되었습니다.None상태 세부 정보를 사용할 수 없습니다.
리턴 유형
str | 없음
usage
usage()
세션 사용량을 몇 초 만에 반환합니다.
세션 사용량은 첫 번째 작업이 시작된 시점부터 세션이 비활성 상태가 되거나 닫힐 때까지 또는 마지막 작업이 완료될 때까지의 시간 중 가장 마지막에 발생하는 시간입니다.
배치 사용량은 모든 작업이 QPU에 소비하는 시간입니다.
리턴 유형
float | 없음