Qiskit Runtime 실행 모드 소개
Qiskit Runtime이 도입되었을 때, 사용자는 Circuit을 개별 작업으로만 실행할 수 있었습니다. 다양한 유형의 양자 워크로드가 등장하면서 서로 다른 스케줄링 전략의 필요성이 명확해졌습니다. 실행 모드는 작업이 스케줄링되는 방식을 결정하며, 올바른 실행 모드를 선택하면 예산 내에서 워크로드를 효율적으로 실행할 수 있습니다. 실행 모드에는 job, session, batch의 세 가지가 있습니다.
Job 모드
컨텍스트 매니저 없이 estimator 또는 sampler에 대해 단일 프리미티브 요청을 하는 방식입니다. Circuit과 입력값은 primitive unified blocs(PUBs)로 패키징되어 양자 컴퓨터에서 실행 작업으로 제출됩니다. Job 모드로 실행하려면 프리미티브를 인스턴스화할 때 mode=backend를 지정하세요. 사용 예시는 프리미티브 예제를 참조하세요.
Batch 모드
다중 작업 워크로드로 구성된 실험을 효율적으로 실행하기 위한 다중 작업 매니저입니다. 이러한 워크로드는 서로 조건부 관계가 없는 독립적으로 실행 가능한 작업들로 구성됩니다. Batch 모드를 사용하면 사용자는 모든 작업을 한 번에 제출합니다.
시스템은 각 프리미티브 작업의 전처리(고전 컴퓨팅) 단계를 병렬화하거나 스레드 처리하여 작업 간 양자 실행을 더욱 촘촘하게 패키징한 후, 각 작업의 양자 실행을 빠르게 연속으로 실행하여 가장 효율적인 결과를 제공합니다. 스레드 처리에 대한 자세한 내용은 실행 모드 FAQ 페이지를 참조하세요.
- Batching 시, 작업이 제출된 순서대로 실행된다는 보장이 없습니다. 또한 Batch 작업은 가능한 한 밀접하게 실행되지만 Backend에 대한 독점 접근권을 얻지는 못합니다. 따라서 QPU에 충분한 처리 용량이 있는 경우 Batch 작업이 다른 사용자의 작업과 병렬로 실행될 수 있습니다. 또한 Batching된 작업 사이에 QPU 캘리브레이션 작업이 실행될 수 있습니다.
- Batch 내에서 제출된 첫 번째 작업의 대기 시간은 줄어들지 않습니다. 따라서 단일 작업을 실행할 때는 Batch가 어떠한 이점도 제공하지 않습니다.
Batch 모드로 실행하려면 프리미티브를 인스턴스화할 때 mode=batch를 지정하거나 Batch 컨텍스트 매니저 내에서 작업을 실행하세요. 예시는 Batch에서 작업 실행을 참조하세요.
Session 모드
다중 작업 워크로드를 실행하기 위한 전용 창입니다. 이 창이 열려 있는 동안 사용자는 시스템에 독점적으로 접근할 수 있으며 캘리브레이션 작업을 포함한 다른 어떤 작업도 실행될 수 없습니다. 이를 통해 사용자는 변분 알고리즘을 보다 예측 가능한 방식으로 실험하고, 스택의 병렬성을 활용하여 여러 실험을 동 시에 실행할 수도 있습니다. Session을 사용하면 각 작업을 별도로 대기열에 추가할 때 발생하는 지연을 방지할 수 있으며, 이는 고전 자원과 양자 자원 간의 빈번한 통신이 필요한 반복적인 작업에 특히 유용합니다.
Session 모드로 실행하려면 프리미티브를 인스턴스화할 때 mode=session을 지정하거나 Session 컨텍스트 매니저 내에서 작업을 실행하세요. 예시는 Session에서 작업 실행을 참조하세요.
- Session 내에서 제출된 첫 번째 작업의 대기 시간은 줄어들지 않습니다. 따라서 단일 작업을 실행할 때는 Session이 어떠한 이점도 제공하지 않습니다.
- Open Plan 사용자는 Session 작업을 제출할 수 없습니다.
기본 워크플로
Batch와 Session의 기본 워크플로는 유사합니다:
- Batch 또는 Session의 첫 번째 작업은 일반 대기열에 들어갑니다. Batch의 경우 전체 Batch 작업이 함께 스케줄링됩니다.
- 첫 번째 작업이 실행되기 시작하면 최대 TTL(time to live) 타이머가 시작되며, 종료에 도달할 때까지 멈추거나 일시 중지되지 않습니다.
- 각 작업이 완료된 후 대화형 TTL 타이머가 시작됩니다. 대화형 TTL 창 내에 준비된 워크로드 작업이 없으면 워크로드가 일시적으로 비활성화되고 일반 작업 선택이 재개됩니다. Batch 또는 Session이 최대 TTL 값에 도달하지 않은 경우 작업이 비활성화된 워크로드를 다시 활성화할 수 있습니다.
참고
워크로드를 다시 활성화하려면 작업이 일반 대기열을 통과해야 합니다.
- 최대 TTL 값에 도달하면 워크로드가 종료되고 대기열에 남아 있는 모든 작업이 실패합니다. 현재 실행 중인 작업이 인스턴스의 비용 한도를 초과하게 될 경우 완료까지 실행되지 않습니다.
다음 동영상은 Session을 예시로 기본 워크플로를 설명합니다:
TTL 타이머에 대한 전체 세부 정보는 최대 실행 시간 가이드를 참조하세요.