작업 부하 사용량
사용량은 ‘ IBM Quantum ’ 컴퓨팅 서비스의 사용량을 나타내며, 워크로드를 실행하기 위해 QPU가 할당된 시간의 길이에 따라 결정됩니다.
- 세션 사용량은 세션이 활성화된 상태로 유지되는 동안의 경과 시간으로 측정됩니다. 이는 워크로드가 실제로 실행 중인지 여부와 관계없이 세션이 지속되는 동안 QPU 용량이 예약되기 때문입니다. 세 션 상태 전환에 대한 자세한 내용은 ‘세션 기간’을 참조하십시오.
- 배치 사용량은 QPU가 해당 배치의 모든 작업을 실행하기 위해 잠겨 있는 누적 시간으로 측정됩니다.
- 단일 작업 사용량은 QPU가 해당 작업을 실행하기 위해 잠겨 있는 시간으로 측정됩니다.
실패하거나 취소된 작업도 특정 상황에서 사용량에 포함될 수 있습니다. 자세한 내용은 '실패 및 취소된 작업' 섹션을 참조하십시오.
종량제 요금제 사용자의 경우, 비용 한도 설정에 대한 자세한 내용은 ‘비용 관리’를 참조하세요.
실패 및 취소된 작업에 대한 사용법
작업이 실패하거나 취소된 경우 보고된 사용량은 다음과 같습니다:
-
작업 모드 또는 일괄 처리 모드: 시스템 오류로 인해 실패나 취소가 발생한 경우, 보고된 사용량은 0으로 표시됩니다. 사용자 오류로 인해 작업이 실패했거나 사용자가 작업을 취소한 경우, 보고되는 사용량은 해당 시점까지 발생한 모든 소비량을 의미하며, 여기에는 작업 실행을 위해 QPU를 준비하는 과정에서 발생한 오버헤드도 포함됩니다.
-
세션 모드: 보고된 사용량은 실패하거나 취소된 작업 수와 무관하게 세션이 활성 상태인 실제 시간입니다.
워크로드의 실제 사용량 조회
워크로드가 완료된 후 실제 사용량을 확인하는 방법에는 여러 가지가 있습니다:
- v0.30
qiskit-ibm-runtime이상에서는 단일 작업의 경우job.usage()를 실행하고, 배치 또는 세션 모드를 사용할session.usage()때는batch.usage()또는 를 실행하십시오. 이전 버전(qiskit-ibm-runtime>= 0.23 및 < 0.30 )을 사용하는 경우, 사용법에 대한 내용은 여전히 와session.details()["usage_time"]에서 확인할 수 있습니다batch.details()["usage_time"]. - 특정 배치 또는 세션에 대한 사용법을 확인하려면
GET /sessions/{id}를 사용하십시오(두 실행 모드 모두 엔드포인트는 동일합니다). - 단일 작업의 사용법을 보려면
GET /jobs/{id}을(를) 사용하십시오.
인스턴스 사용량 보기
인스턴스 페이지 또는 적절한 권한이 있는 사용자의 경우 애널리틱스 페이지에서 인스턴스의 사용량을 볼 수 있습니다. 페이지마다 사용량 계산 방식이 다르기 때문에 사용량 수치가 다르게 표시될 수 있습니다.
인스턴스 페이지에는 지난 28일(롤링) 동안의 실시간 사용량(현재 시간까지)이 표시됩니다. 애널리틱스 페이지 사용량은 시간별로 다시 계산되며 지난 28일 동안의 사용량을 포함합니다. 즉, 28일 전 00:00부터 오늘까지의 사용량을 시간 상단에 표시합니다.
작업 제출 전 사용량 추정
정확한 로컬 추정치를 얻는 것은 오류 억제 및 완화를 위한 추가 작업으로 인해 복잡하지만, 이 기준 공식을 사용하여 예상 사용량의 근사치를 얻을 수 있습니다:
<per sub-job overhead> + (rep_delay + <circuit length>) * <num executions>
<per sub-job overhead>는 하위 작업당 약 2s 의 오버헤드입니다. 여기에는 페이로드를 제어 전자 장치에 로드하는 등의 작업이 포함됩니다. 실행 엔진이 한 번에 처리하기에는 너무 큰 경우 기본 작업은 여러 개의 하위 작업으로 나눌 수 있습니다.rep_delay이는 사용자가 직접 설정할 수 있는 옵션이며, 기본값은 로 지정되어 있습니다backend.default_rep_delay. 대부분의 IBM Quantum 백엔드에서 이 값은 250 마이크로초입니다. 값을 낮추면 총 QPU 실행 시간이rep_delay단축되지만, 그 대가로 상태 준비 오류율이 증가한다는 점에 유의하십시오. 자세한 내용은 ‘동적 반복률 실행 가이드’를 참조하십시오.<circuit length>는 총 인스트럭션 길이입니다. 각 명령어는 QPU에서 서로 다른 시간이 걸리므로 총 길이는 회로마다 다릅니다. 예를 들어, 측정은x게이트보다 56배 더 오래 걸릴 수 있습니다.backend.target[<instruction>][<qubit>].duration를 사용하여 각 인스트럭션의 정확한 기간을 찾을 수 있습니다. 일반적인 회로 길이는 50~100마이크로초 사이일 가능성이 높습니다. 프리미티브에 오류 억제 또는 완화 기술을 사용하는 경우 회로에 추가 명령어가 삽입되어 전체 회로 길이가 늘어날 수 있습니다.Note실험적인
scheduler_timing옵션은 총 순환 시간을 반환하지만 이는 청구에 사용되는 시간이 아닙니다.<num executions>회로 총 수에 샷 수를 곱한 값으로, 여기서 회로는 PUB 요소가 브로드캐스트된 후 생성된 회로를 의미합니다.- 프라이미티브에 오류 완화 기법을 적용하는 경우, 완화 과정의 일부로 추가 회로가 실행될 수 있으며 이는 총 실행 횟수를 증가시킬 수 있습니다. 또한 PEA 및 PEC와 같은 고급 오류 완화 기법은 노이즈 학습을 위해 회로를 실행해야 하므로 훨씬 더 높은 오버헤드를 수반합니다.
- 추정기는 큐비트 단위로 교환 가능한 관측량을 그룹화하여 실행 횟수를 줄입니다.
고급 오류 완화 기술이나 사용자 정의 설정을 사용하지 rep_delay 않는다면, 빠른 공식으로 2+0.00035*<num executions> 사용할 수 있습니다.
Qiskit을 사용하여 로컬에서 사용량을 추정하기
이 코드 예제는 Qiskit을 사용하여 회로 시간을 계산하는 방법을 보여줍니다:
# Schedule the circuit to get more accurate timing
pm = generate_preset_pass_manager(
target=backend.target,
optimization_level=0,
scheduling_method="alap"
)
scheduled_circuits = pm.run(isa_circuits)
init_duration = backend.target["reset"][(0,)].duration
rep_delay = sampler.options.execution.rep_delay or backend.default_rep_delay
circuit_duration = 0
for circuit in scheduled_circuits:
# Estimate circuit length
circuit_duration += circuit.estimate_duration(backend.target)
# Add INIT time
if sampler.options.execution.init_qubits:
circuit_duration += init_duration
# Add rep_delay
circuit_duration += rep_delay
total_time = 2 + (circuit_duration*shots)
print(f"Total estimated usage is {math.ceil(total_time)} seconds")시뮬레이션 작업에서 사용량을 확인하세요
IBM Quantum Compute Service가 제공하는 모든 기능을 지역별 견적만으로는 다 반영할 수 없습니다. 실제 QPU에서 해당 작업에 부과될 사용량을 확인하려면, 시뮬레이션 작업을 실행하십시오. 시뮬레이션 작업은 QPU 시간이나 플랜 할당량을 전혀 사용하지 않고 Quantum Compute를 통해 워크로드를 실행한 다음, 사용량을 보고합니다:
job = sampler.run([isa_circuit], dry_run=True)
job.result() # wait for completion
print(job.usage())시뮬레이션 작업은 Flex, Premium 및 On-Prem 요금제에서 이용할 수 있습니다. 자세한 내용은 ‘시뮬레이션 작업’을 참조하십시오.
다음 단계
- 이 팁을 검토하세요: 작업 실행 시간 최소화하기.
- 최대 실행 시간을 설정합니다.
- ‘트랜스파일’ 섹션에서 로컬 환경에서 트랜스파일하는 방법을 알아보세요.
- Compare 트랜스파일러 설정 가이드를 시도해 보세요.