Skip to main content
IBM Quantum Platform

일괄처리

class Batch(backend, max_time=None, *, create_new=True)

GitHub

베이스: 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

이 세션과 관련된 반환 서비스입니다.

리턴

qiskit_ibm_runtime.QiskitRuntimeService 이 세션과 연관되어 있습니다.

session_id

세션 ID를 반환합니다.

리턴

세션 ID입니다. 백엔드가 시뮬레이터인 경우 없음.


메소드

backend

backend()

GitHub

이 세션의 백엔드를 반환합니다.

리턴

이 세션의 백엔드. 알 수 없는 경우 없음.

리턴 유형

str | 없음

cancel

cancel()

GitHub

세션에서 보류 중인 모든 작업을 취소합니다.

리턴 유형

없음

close

close()

GitHub

세션을 종료하여 더 이상 새로운 작업이 접수되지 않도록 하십시오.

세션을 닫으면 새 작업은 더 이상 수락되지 않지만 대기 중이거나 실행 중인 기존 작업은 완료될 때까지 실행됩니다. 보류 중인 작업이 더 이상 없으면 세션이 종료됩니다.

리턴 유형

없음

details

details()

GitHub

세션 세부 정보를 반환합니다.

리턴

세션 세부 정보가 포함된 사전입니다.

  • 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)

GitHub

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()

GitHub

현재 세션 상태를 반환합니다.

리턴

세션 상태를 문자열로 표시합니다.

  • Pending: 세션이 생성되었지만 활성화되지 않았습니다. 이 세션의 다음 작업이 큐에 대기열에 추가되면 활성화됩니다.
  • In progress, accepting new jobs세션이 활성화되어 새 작업을 수락하고 있습니다.
  • In progress, not accepting new jobs세션이 활성 상태이며 새 작업을 수락하지 않습니다.
  • Closed최대_시간이 만료되었거나 세션이 명시적으로 종료되었습니다.
  • None상태 세부 정보를 사용할 수 없습니다.

리턴 유형

str | 없음

usage

usage()

GitHub

세션 사용량을 몇 초 만에 반환합니다.

세션 사용량은 첫 번째 작업이 시작된 시점부터 세션이 비활성 상태가 되거나 닫힐 때까지 또는 마지막 작업이 완료될 때까지의 시간 중 가장 마지막에 발생하는 시간입니다.

배치 사용량은 모든 작업이 QPU에 소비하는 시간입니다.

리턴 유형

float | 없음

이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.