통합 하이브리드 컴퓨팅

통합 하이브리드 컴퓨팅은 클래식 및 양자 프로세스를 함께 제공하므로 클래식 코드는 물리적 큐비트가 활성 상태로 유지되는 동안 중간 회로 측정을 기반으로 양자 연산의 실행을 제어할 수 있습니다. 중첩된 조건부, 루프 및 함수 호출과 같은 일반적인 프로그래밍 기술을 사용하면 단일 양자 프로그램이 복잡한 문제를 실행하여 필요한 샷 수를 줄일 수 있습니다. 큐비트 재사용 기술을 사용하면 더 적은 수의 큐비트를 활용하는 컴퓨터에서 더 큰 프로그램을 실행할 수 있습니다.

중요

통합 하이브리드 양자 컴퓨팅은 현재 I 커널%azure, 매직 명령 또는 qsharp.azure 모듈과 같은Q# 이 페이지의 예제에 있는 다른 구성 요소와 함께 Visual Studio Code 대한 최신 Quantum Development Kit (최신 QDK) 확장에서 지원되지 않습니다. 통합 하이브리드 작업을 실행하려면 Microsoft Quantum Development Kit (클래식 QDK)를 사용합니다. 자세한 내용은 클래식 QDK에서 계속 작업을 참조하세요.

자세한 내용은 다음을 참조하세요.

통합 하이브리드 양자 컴퓨팅

targets 지원됨

현재 Azure Quantum의 통합 하이브리드 컴퓨팅 모델은 Quantinuumtargets에서 지원됩니다.

Quantinuum

지원되는 기능 참고
클래식 루프 제한된 루프만
임의 제어 흐름 if/else 분기 사용
중간 회로 측정 클래식 레지스터 리소스 활용
큐비트 재사용 해당 없음
실시간 클래식 컴퓨팅 부호 없는 32비트 정수 산술
클래식 레지스터 리소스 활용

시작

통합 하이브리드 프로그래밍 탐색을 시작하려면 이 문서의 샘플을 살펴보거나 Azure Quantum 포털의 샘플 갤러리에서 하이브리드 양자 컴퓨팅 탭을 살펴보는 것이 좋습니다.

통합 하이브리드 작업 제출

통합 하이브리드 작업을 제출할 때 를 지정한 target 후 기능 매개 변수를 target추가해야 합니다. 그 외에 Azure Quantum의 통합 하이브리드 프로그램은 일반 양자 작업처럼 실행되고 관리됩니다. 각 작업에는 단일 작업 ID가 있으며 결과는 단일 히스토그램입니다.

중요

통합 하이브리드 양자 컴퓨팅은 현재 I 커널%azure, 매직 명령 또는 qsharp.azure 모듈과 같은Q# 이 페이지의 예제에 있는 다른 구성 요소와 함께 Visual Studio Code 대한 최신 Quantum Development Kit (최신 QDK) 확장에서 지원되지 않습니다. 통합 하이브리드 작업을 실행하려면 Microsoft Quantum Development Kit (클래식 QDK)를 사용합니다. 자세한 내용은 클래식 QDK에서 계속 작업을 참조하세요.

나Q#

Jupyter Notebook IQ# 커널을 사용하는 경우 %azure를 사용합니다.target매개 변수가 있는AdaptiveExecution -capability 매직 명령입니다.

%azure.target quantinuum.sim.h1-1e
%azure.target-capability AdaptiveExecution

Python + Q#

qsharp Python 패키지를 사용하는 경우 매개 변수와 qsharp.azure.target_capability 함께 함수를 AdaptiveExecution 사용합니다.

qsharp.azure.target("quantinuum.sim.h1-1e")
qsharp.azure.target_capability("AdaptiveExecution")

Azure CLI

Azure CLI를 사용하여 작업을 제출할 때 값AdaptiveExecution이 인 --target-capability 매개 변수를 추가합니다.

az quantum job submit \
    --target-capability AdaptiveExecution \
    --target-id quantinuum.sim.h1-1e \
    --job-name IterativePhaseEstimation \
    --shots 100 \
    --output table

세션 내에서 통합 하이브리드 작업 제출

및 Python을 사용하여 Q#세션 내에서 여러 통합 하이브리드 작업을 결합할 수 있습니다. 세션을 제출할 때 값AdaptiveExecution이 인 targetCapability 입력 매개 변수를 추가합니다.

with target.open_session(name="Q# session") as session:
    target.submit(input_data=QuantumOperation, name="Job 1", input_params={"count":100, "targetCapability":"AdaptiveExecution"}) # First job submission
    target.submit(input_data=QuantumOperation, name="Job 2", input_params={"count":200, "targetCapability":"AdaptiveExecution"}) # Second job submission
    target.submit(input_data=QuantumOperation, name="Job 3", input_params={"count":300, "targetCapability":"AdaptiveExecution"}) # Third job submission

자세한 내용은 세션 시작을 참조하세요.

참고

모든 양자 컴퓨팅 하드웨어 공급자에 대해 세션을 사용할 수 있지만 통합 하이브리드 양자 컴퓨팅 작업은 현재 Quantinuum targets에서 지원됩니다.

통합 하이브리드 작업의 비용 예측

먼저 에뮬레이터에서 실행하여 Quantinuum 하드웨어에서 통합 하이브리드 작업을 실행하는 비용을 예측할 수 있습니다.

에뮬레이터에서 성공적으로 실행된 후:

  1. Azure Quantum 작업 영역에서 작업 관리를 선택합니다.
  2. 제출한 작업을 선택합니다.
  3. 작업 세부 정보 팝업에서 비용 예측을 선택하여 사용된 eHQC(Quantinuum 에뮬레이터 크레딧)를 확인합니다. 이 숫자는 Quantinuum 하드웨어에서 작업을 실행하는 데 필요한 HQC(Quantinuum 양자 크레딧)의 수로 직접 변환됩니다.

비용 예측

참고

Quantinuum은 전체 회로의 등록을 취소하고 조건부로 실행되었는지 여부에 관계없이 모든 코드 경로에 대한 비용을 계산합니다.

통합 하이브리드 샘플

다음 샘플에서는 통합 하이브리드 컴퓨팅에 대한 현재 기능 집합을 보여 줍니다.

  • 얽힌 GHZ 상태 확인
  • 3큐비트 반복
  • 반복 위상 추정

사전 요구 사항

  • Azure Quantum을 새로 사용하는 경우 양자 하드웨어에 대해 샘플을 실행하려면 Azure 구독 및 Azure Quantum 작업 영역이 필요합니다. 자세한 내용은 Azure Quantum 작업 영역 만들기를 참조하세요.
  • VS Code 및 Quantum Development Kit 로컬 환경에서 설정. 자세한 내용은 설정을 참조하세요 Quantum Development Kit.
  • VS Code의 최신 버전 Quantum Development Kit (0.27.258160)이 있는지 확인합니다.
    • VS Code에서 Ctrl + Shift + X 를 선택하고 "Microsoft Quantum Development Kit"를 검색합니다.

이 문서의 샘플은 VS(Visual Studio) 코드에서 실행되고 기본 제공 Azure CLI(명령줄 인터페이스)를 사용하여 Azure Quantum에 작업을 제출하도록 설정됩니다. 이러한 샘플 및 기타 샘플의 Jupyter Notebook 버전을 실행하려면 Azure Portal 작업 영역에 로그인하고 샘플 갤러리의 하이브리드 양자 컴퓨팅 탭에서 샘플을 확인합니다. 클라우드에서 Notebook을 실행하거나 다운로드하여 로컬로 실행할 수 있습니다.

통합 하이브리드 프로그램의 문제를 해결하려면 통합 하이브리드 문제 해결을 참조하세요.

이 샘플에서는 양자 컴퓨팅 백 엔드에서 완전히 처리되는 동일한 프로그램에서 클래식 및 양자 명령을 혼합하는 방법을 알아보세요.

이 샘플에 대해 주의할 기능은 다음과 같습니다.

  • 루프 및 큐비트 측정은 큐비트가 일관되게 유지되는 동안 발생합니다.
  • 루틴은 클래식 및 양자 컴퓨팅 작업을 혼합합니다.
  • QPU(예: FPGA) 옆에 실행되는 특수 고성능 하드웨어를 프로그래밍하는 방법을 배울 필요가 없습니다.
  • 통합 하이브리드 기능 없이 동등한 프로그램을 실행하려면 모든 중간 측정 결과를 반환한 다음 데이터에 대한 후처리를 실행해야 합니다.

VS Code 프로젝트 만들기

  1. VS Code에서 CheckGHZ라는 새 Q# 독립 실행형 콘솔 애플리케이션 프로젝트를 만듭니다.

    1. 명령 팔레트 >Q#보기>: 새 프로젝트 > 독립 실행형 콘솔 애플리케이션 만들기를 선택합니다.
  2. CheckGHZ.csproj의 구성을 다음으로 바꿉니다.

    <Project Sdk="Microsoft.Quantum.Sdk/0.27.258160">
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net6.0</TargetFramework>
        <ExecutionTarget>quantinuum</ExecutionTarget>
        <TargetCapability>AdaptiveExecution</TargetCapability>
      </PropertyGroup>
    </Project>
    
  3. Program.qs의 코드를 다음으로 바꿉니다.

    namespace Microsoft.Quantum.Samples {
    
        open Microsoft.Quantum.Measurement;
        open Microsoft.Quantum.Intrinsic;
    
        /// # Summary
        /// Counts the number of times measurements of a prepared GHZ state did not match the expected correlations.
        @EntryPoint() // The EntryPoint attribute is used to mark that this operation is where a quantum program will start running.
        operation CheckGHZ() : Int {
            use q = Qubit[3];
            mutable mismatch = 0;
            for _ in 1..10 {
                // Prepare the GHZ state.
                H(q[0]);
                CNOT(q[0], q[1]);
                CNOT(q[1], q[2]);
    
                // Measures and resets the 3 qubits
                let (r0, r1, r2) = (MResetZ(q[0]), MResetZ(q[1]), MResetZ(q[2]));
    
                // Adjusts classical value based on qubit measurement results
                if not (r0 == r1 and r1 == r2) {
                    set mismatch += 1;
                }
            }
            return mismatch;
        }
    }
    
  4. VS Code의 터미널 창에서 Azure Quantum 작업 영역에 연결하고 기본 리소스를 설정합니다.

    az login
    

    참고

    az quantum workspace list를 실행하여 로그인한 후 터미널 창에 Azure 구독 ID, 리소스 그룹 및 작업 영역 이름을 나열할 수 있습니다. 또는 Azure Quantum 작업 영역의 개요 페이지에서 Azure Portal 찾을 수 있습니다.

    az account set --subscription <MySubscriptionID>
    
    az quantum workspace set --resource-group <MyResourceGroup> --workspace <MyWorkspace> --location <MyLocation>
    
  5. 작업을 제출하고 결과를 봅니다. 이 실행에서는 약 10.65 eHQC(Quantinuum 에뮬레이터 청구 단위)를 사용합니다.

    az quantum job submit \
      --target-id quantinuum.sim.h1-1e \
      --job-name CheckGHZ \
      --target-capability AdaptiveExecution \
      --shots 50
    
    az quantum job output \
      -o table \
      --job-id [job-id]
    

GHZ 출력

다음 단계

분산 하이브리드 컴퓨팅