작업 제한
IBM® QPU에 작업을 전송하면, 먼저 작업 유효성 검사 서비스로 전달됩니다. 이 서비스는 작업이 큐를 통과한 후 실패하는 것을 기다리지 않아도 되도록, 해당 작업이 QPU에서 실행 가능한지 확인하려 합니다. 이러한 검사에는 아래에 설명된 제한 사항의 적용이 포함됩니다. 이 제한 사항이 초과되면, 해당 워크로드는 양자 소프트웨어 스택에서 처리할 수 없으며 일반적으로 실패합니다.
- 특정 기본 옵션은 Circuit 크기를 증가시킵니다. 설명된 제한 사항은 Circuit 크기의 예상 증가 이후에 확인됩니다. 특히 다음 옵션들이 Circuit 크기를 증가시킵니다:
- 동적 디커플링(Dynamical decoupling) 및 게이트 폴딩 ZNE는 Qubit당 최대 저수준 명령어 수 제한의 명령어에 포함되는 추가 Gate를 도입합니다.
- 게이트 폴딩 ZNE는 작업당 최대 2-Qubit Gate 수 제한과 관련된 추가 2-Qubit Gate를 도입합니다. 2-Qubit Gate 수는 게이트 폴딩 ZNE에서 요청된 노이즈 계수의 합에 곱해집니다.
backend.configuration()필드인max_shots및max_experiments에서 보고되는 제한 사항은 더 이상 유효하지 않으며 적용되지 않습니다. 이 필드들은 가까운 시일 내에 제거될 예정입니다.- 이 제한 사항은 Primitive Unified Bloc(PUB) 단위가 아닌 작업 단위입니다.
최대 실행 횟수
Sampler 작업의 경우 최대 1,000만 회 실행이 허용됩니다(Estimator 작업은 더 작은 하위 작업으로 분할될 수 있으므로 이 제한이 적용되지 않습니다). 실행 횟수는 PUB 요소가 브로드캐스트된 후 생성된 Circuit의 수에 샷(shot) 수를 곱한 값입니다.
예를 들어, 하나의 Circuit과 형태가 (4, 1)인 파라미터를 가진 PUB가 있으면 4개의 Circuit이 생성됩니다. 2,000 샷을 요청한 경우, 총 실행 횟수는 입니다.
Sampler 작업에서 Pauli-twirling을 활성화하면, 총 샷 수는 num_randomizations 및 shots_per_randomization 값을 기반으로 합니다. 자세한 내용은 TwirlingOptions를 참조하세요.
Qubit당 최대 저수준 명령어 수
서비스는 Qubit당 최대 2,680만 개의 제어 시스템 명령어를 허용합니다. 이는 사용자 Circuit이 제어 시스템의 명령어 메모리 내에 맞도록 보장합니다. 아래 예시는 Circuit을 트랜스파일(transpile)하고 각 명령어의 수를 계산하는 방법을 보여줍니다.
다음 표는 이 제한을 계산할 때 시스템이 명령어 세트 아키텍처(ISA) Circuit 명령어를 제어 시스템 명령어로 변환하는 방법을 설명합니다.
| 명령어 | 수 |
|---|---|
rz | 1 |
delay | 1 |
sx | 2 |
x | 2 |
cx | 5 |
cz | 5 |
ecr | 5 |
measure | 10 |
reset | 17 |
init | 50 |
이 표는 유효성 검사에 사용되는 휴리스틱을 나타내며, 연산을 구현하는 데 사용되는 정확한 명령어 수를 반영하지 않습니다.
예시
Circuit을 정의하고 트랜스파일한 후, 실행될 Gate의 수를 계산합니다.
from qiskit import QuantumCircuit
from qiskit.transpiler import generate_preset_pass_manager
from qiskit_ibm_runtime import QiskitRuntimeService
num_qubits = 50
ghz = QuantumCircuit(num_qubits)
ghz.h(range(num_qubits))
ghz.cx(0, range(1, num_qubits))
op_counts = ghz.count_ops()
# Choose the least busy backend
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
pm = generate_preset_pass_manager(optimization_level=3, backend=backend)
transpiled_ghz = pm.run(ghz)
op_counts = transpiled_ghz.count_ops()
print(f"Post-Transpilation gates: {op_counts}")
전체 내용은 사용자 정의 Backend에 대한 트랜스파일.을 참조하세요.
Circuit당 최대 단일- 및 2-Qubit Gate 수
단일-Qubit Gate의 최대 수는 다음과 같습니다:
- RZ Gate: 3,000만 개
- SX Gate: 2,000만 개
Circuit당 최대 2-Qubit Gate 수는 500만 개입니다. 이는 작업이 저수준 소프트웨어 스택의 메모리 제한 내에서 처리될 수 있도록 보장합니다.