주 콘텐츠로 건너뛰기

올바른 실행 모드 선택하기

유틸리티 규모의 워크로드는 완료하는 데 수 시간이 걸릴 수 있으므로, 클래식 리소스와 양자 리소스를 효율적으로 스케줄링하여 실행을 간소화하는 것이 중요합니다. 실행 모드는 워크로드에 맞게 리소스를 최적으로 활용할 수 있도록 비용과 시간 간의 균형을 유연하게 조절할 수 있게 해 줍니다. 실행 모드를 선택할 때는 전체 실행 시간(최대 활성 유지 시간, TTL)과 작업 간 대기 시간(인터랙티브 TTL) 등 여러 가지 사항을 고려해야 합니다.

각 모드의 장점을 아래에 정리했습니다:

  • 배치(Batch)
    • 배치 내 모든 작업이 함께 스케줄링되므로, 각 작업에 대한 추가 대기 시간이 없습니다.
    • 컴파일 등 작업의 클래식 연산이 병렬로 실행됩니다. 따라서 여러 작업을 배치로 실행하면 직렬로 실행할 때보다 훨씬 빠릅니다.
    • 일반적으로 작업 간 지연이 최소화되어 드리프트(drift)를 방지하는 데 도움이 됩니다.
    • 워크로드를 여러 작업으로 분할하여 배치 모드로 실행하면 개별 작업의 결과를 얻을 수 있어 더 유연하게 활용할 수 있습니다. 예를 들어, 특정 작업의 결과가 기대에 미치지 못할 경우 나머지 작업을 취소할 수 있습니다. 또한 작업 하나가 실패하더라도 전체 워크로드를 다시 실행하는 대신 해당 작업만 재제출할 수 있습니다.
    • 일반적으로 Session보다 비용이 적게 듭니다.
  • Session
    • 배치 모드의 모든 기능을 포함합니다(단, 사용량이 증가합니다. 사용량 계산 방법에 대한 자세한 내용은 워크로드 사용량을 참고하세요).
    • Session 활성 창 동안 QPU에 대한 전용 및 독점적 액세스가 제공됩니다.
    • 처음부터 모든 입력이 준비되지 않은 워크로드, 다음 단계 실행 전 클래식 후처리가 필요한 반복적 워크로드, 가능한 한 긴밀하게 연속으로 실행해야 하는 실험에 유용합니다.
  • 작업(Job)
    • 소규모 실험을 실행할 때 가장 사용하기 쉽습니다.
    • 배치 모드보다 더 빨리 실행될 수 있습니다.

권장 사항 및 모범 사례

처음부터 모든 입력이 준비되지 않은 워크로드가 아닌 경우, 일반적으로 배치 모드를 사용하는 것을 권장합니다.

  • 처리 시간을 단축하기 위해 여러 primitive 작업을 동시에 제출할 때는 배치(batch) 모드를 사용하세요.

  • 반복적 워크로드 또는 QPU에 대한 전용 액세스가 필요한 경우 Session 모드를 사용하세요.

  • 단일 primitive 요청을 제출할 때는 항상 작업(job) 모드를 사용하세요.

  • Session은 일반적으로 더 비용이 많이 들기 때문에, Session의 추가적인 이점이 필요하지 않은 경우에는 배치를 사용하는 것을 권장합니다.

  • Open Plan 사용자는 Session 작업을 제출할 수 없습니다.

실행 모드를 가장 효율적으로 사용하려면 다음 사항을 권장합니다:

  • 작업 실행에는 고정 오버헤드가 수반됩니다. 일반적으로 각 작업의 _QPU 시간_이 1분 미만인 경우, 여러 작업을 하나의 더 큰 작업으로 통합하는 것을 고려하세요(모든 실행 모드에 해당). "QPU 시간"은 QPU 컴플렉스가 작업을 처리하는 데 소요된 시간을 의미합니다.

  • 각 작업의 QPU 시간이 1분을 초과하거나 작업 통합이 실용적이지 않은 경우에도 여러 작업을 병렬로 실행할 수 있습니다. 모든 작업은 클래식 처리와 양자 처리를 모두 거칩니다. QPU는 한 번에 하나의 작업만 처리할 수 있지만, 클래식 작업은 최대 5개까지 병렬로 처리할 수 있습니다. 배치 또는 Session 실행 모드에서 여러 작업을 제출하여 이 점을 활용할 수 있습니다.

위 내용은 일반적인 지침이며, 특히 Session을 사용할 때는 최적의 비율을 찾기 위해 워크로드를 조정해야 합니다. 예를 들어, Backend에 대한 독점 액세스를 위해 Session을 사용하는 경우, 큰 작업을 여러 개의 작은 작업으로 나누어 병렬로 실행하는 것을 고려하세요. 이렇게 하면 벽시계 시간(wall-clock time)을 줄일 수 있어 비용 효율이 높아질 수 있습니다.

예시

양자 변분 알고리즘 실행

양자 변분 알고리즘을 실행하는 일반적인 흐름은 다음과 같습니다:

  1. 앤사츠(ansatz)를 준비합니다.
  2. QPU에서 비용 함수를 평가합니다.
  3. 이전 단계의 결과를 클래식 옵티마이저를 통해 실행합니다.
  4. (3)의 출력에 따라 파라미터를 조정한 후 (2)단계로 돌아갑니다.

이 경우, 작업(job) 또는 배치 모드를 사용한다면 (2)단계에서 생성된 각 작업이 다시 대기열을 거쳐야 합니다. 이로 인해 대기 시간으로 인해 실험 시간(벽시계 시간)이 크게 늘어납니다. 또한 장치 드리프트(device drift)로 인해 수렴에 더 오랜 시간이 걸릴 수 있습니다. 즉, 매 반복마다 더 나은 결과를 얻어야 하지만 장치 드리프트로 인해 이후 결과가 오히려 나빠질 수 있습니다.

또한, PEA 또는 PEC를 사용하는 경우, 전용 Session에서 실행할 때 노이즈 모델을 한 번 학습한 후 이후 작업에 적용할 수 있습니다. 배치 또는 작업 모드에서는 다음 작업이 대기열에서 나올 때쯤 노이즈 모델이 오래된 것이 될 수 있으므로 일반적으로 이 방법이 적용되지 않습니다.

오류 완화 설정 비교

사용 가능한 오류 완화 방법의 효과를 비교하려면 다음과 같은 흐름을 따를 수 있습니다:

  1. Circuit과 옵저버블(observable)을 구성합니다.
  2. 서로 다른 오류 완화 설정 조합을 사용하는 primitive 작업을 제출합니다.
  3. 결과를 플롯하여 다양한 설정의 효과를 관찰합니다.

이 경우 모든 작업(서로 연관되어 있지만 독립적인)이 처음부터 준비되어 있습니다. 배치 모드를 사용하면 작업이 일괄 스케줄링되므로 대기열을 한 번만 거치면 됩니다. 또한 목표가 다양한 오류 완화 방법의 효과를 비교하는 것이므로, 작업들이 가능한 한 가까운 시간에 실행되는 것이 유리합니다. 따라서 배치가 좋은 선택입니다. Session에서도 이러한 작업을 실행할 수 있지만, Session은 일반적으로 더 비용이 많이 들기 때문에 Session의 추가 기능이 필요하지 않은 경우에는 배치를 사용하는 것을 권장합니다.

다음 단계