Skip to main content
IBM Quantum Platform

프리미티브 소개

  • 이 페이지의 코드는 다음 요구 사항을 사용하여 개발되었습니다. 다음 버전 이상을 사용하는 것이 좋습니다.

    qiskit[all]~=2.3.0
    qiskit-ibm-runtime~=0.43.1
    

Qiskit은 왜 프리미티브를 도입했나요?

개발자가 CPU 레지스터를 직접 조작해야 했던 클래식 컴퓨터의 초창기와 마찬가지로, 초기 QPU 인터페이스는 단순히 제어 전자장치에서 원시 데이터를 반환하는 데 그쳤습니다. QPU가 연구실에 있고 연구자만 직접 액세스할 수 있을 때는 큰 문제가 되지 않았습니다. 대부분의 개발자가 이러한 원시 데이터를 0s 및 1s 로 추출하는 데 익숙하지 않을 것이며 익숙해져서도 안 된다는 점을 인식한 키스킷은 클라우드에서 QPU에 액세스하기 위한 첫 번째 추상화인 backend.run 를 도입했습니다. 이를 통해 개발자는 익숙한 데이터 형식으로 작업하고 더 큰 그림에 집중할 수 있게 되었습니다.

QPU에 대한 액세스가 더 널리 보급되고 더 많은 양자 알고리즘이 개발됨에 따라, 더 높은 수준의 추상화에 대한 필요성이 다시 대두되었습니다. 이에 따라 키스킷은 양자 알고리즘 개발의 두 가지 핵심 작업에 최적화된 프리미티브 인터페이스를 도입했습니다: 기대값 추정 (Estimator) 및 회로 샘플링 (Sampler). 목표는 다시 한 번 다시 한 번 개발자들이 데이터 변환에 덜 집중하고 혁신에 더 집중할 수 있도록 돕는 것입니다. Samplerbackend.run 에서 제공하는 것과 동일한 직접 하드웨어 액세스를 제공하므로 프리미티브 인터페이스가 backend.run 인터페이스를 대체합니다.


원시형이란 무엇인가?

컴퓨팅 시스템은 여러 계층의 추상화를 기반으로 구축됩니다. 추상화를 사용하면 현재 작업과 관련된 당면한 작업과 관련된 특정 수준의 세부 사항에 집중할 수 있습니다. 하드웨어에 가까워질수록 하드웨어에 가까워질수록 필요한 추상화 수준이 낮아집니다(예: CPU 명령어 수준에서 데이터를 이동하거나 조작해야 할 수 있습니다). 수행하려는 작업이 복잡할수록, 추상화의 수준이 높아집니다(예를 들어 프로그래밍 라이브러리를 사용하여 대수 계산을 수행하는 경우 대수 계산을 수행할 수 있습니다.)

이러한 맥락에서 프리미티브는 가장 작은 처리 명령어이며, 주어진 추상화 수준에서 유용하게 사용할 수 있는 주어진 추상화 수준에 유용한 무언가를 만들 수 있는 가장 단순한 빌딩 블록입니다.

최근 양자 컴퓨팅의 발전으로 인해 더 높은 수준의 추상화 작업의 필요성이 높아졌습니다. 이 분야가 더 큰 양자 처리 장치(QPU)와 더 복잡한 워크플로로 이동함에 따라, 개별 큐비트 신호와 상호 작용하는 것에서 큐비트 신호와 상호 작용하는 것에서 필요한 작업을 수행하는 시스템으로 양자 장치를 보는 것으로 초점이 이동하고 있습니다.

양자 컴퓨터의 가장 일반적인 두 가지 작업은 양자 상태 샘플링과 기대값 계산입니다. 이러한 작업으로 인해 Qiskit primitives : 추정기샘플러를 설계하게 되었습니다.

  • 추정기는 양자 회로에 의해 준비된 상태에 대한 관측 가능성의 기대값을 계산합니다.
  • 샘플러는 양자 회로 실행에서 출력 레지스터를 샘플링합니다.

간단히 말해, Qiskit primitives 에서 도입한 계산 모델은 양자 프로그래밍을 오늘날의 고전적 프로그래밍에 한 걸음 더 가깝게 만듭니다 하드웨어 세부 사항보다는 달성하려는 결과에 더 중점을 두는 고전적 프로그래밍에 한 걸음 더 가까워졌습니다 에 초점을 맞추고 있습니다.


기본 정의 및 구현

Qiskit primitives 에는 두 가지 유형이 있습니다. 바로 기본 클래스와 그 구현체입니다. Estimator 및 Sampler 프리미티브는 Qiskit SDK (모듈 qiskit.primitives 내)에 포함된 오픈소스 프리미티브 기본 클래스에 의해 정의됩니다. 서비스 제공자(예: IBM Quantum Compute Service)는 이러한 기본 클래스를 사용하여 자체적인 Sampler 및 Estimator 구현체를 파생시킬 수 있습니다. 대부분의 사용자는 기본 프리미티브가 아닌 제공자 구현체와 상호작용하게 될 것입니다.

기본 클래스

기본 Base 유형은 기본 유형을 구현하기 위한 공통 인터페이스를 정의하는 추상 클래스입니다. 이 qiskit.primitives 모듈의 다른 모든 클래스는 이러한 기본 클래스를 상속받습니다. 개발자는 특정 공급자를 위해 자체적인 프리미티브 기반 실행 모델을 구축하고자 할 경우 이를 활용해야 합니다. 이러한 클래스는 고도로 맞춤화된 처리를 수행하고자 하며, 기존 기본 요소 구현이 자신의 요구 사항에 비해 너무 단순하다고 느끼는 분들에게도 유용할 수 있습니다. 일반 사용자는 기본 클래스를 직접 사용하지 않습니다.

BaseEstimatorV1 그리고 BaseSamplerV1 - V1 기본 요소들도 여전히 사용할 수 있지만, 이 가이드에서는 V2 기본 요소들에 중점을 둡니다. 이는 해당 요소들이 최신 버전이며 더 널리 사용되기 때문입니다.

BaseEstimatorV2 그리고 BaseSamplerV2 - Qiskit 참조 프리미티브는 이러한 인터페이스 사양을 따릅니다.

구현

모든 기본 클래스는 기본 클래스에서 파생되므로, 일반적인 구조와 사용법이 동일합니다. 예를 들어, 모든 Estimator 프리미티브의 입력 형식은 동일합니다. 하지만 구현 방식에 차이가 있어 각기 독특한 특징을 지니고 있습니다.

이들은 프리미티브 기본 클래스의 구현입니다:

  • IBM Quantum 의 기본 요소인 EstimatorV2SamplerV2는 클라우드 기반 서비스로서 (예를 들어, 오류 완화 기능을 포함하는 등) 보다 정교한 구현 방식을 제공합니다. 이 기본 프리미티브 구현은 IBM Quantum® 하드웨어에 접근하는 데 사용됩니다.

  • StatevectorEstimator 그리고 StatevectorSampler - Qiskit에 내장된 시뮬레이터를 사용하는 기본 연산에 대한 참조 구현. 이 모델들은 Qiskit 모듈을 quantum_info 사용하여 구축되었으며, 이상적인 상태 벡터 시뮬레이션을 바탕으로 결과를 산출합니다. Qiskit을 통해 이에 접근할 수 있습니다. 사용 방법에 대한 자세한 내용은 “ Qiskit SDK 기본 요소로 정확한 시뮬레이션 수행”을 참조하십시오.

  • BackendEstimatorV2 그리고 BackendSamplerV2 - 이 클래스를 사용하면 어떤 양자 컴퓨팅 리소스든 기본 단위로 “포장”할 수 있습니다. 이를 통해 아직 기본형 기반 인터페이스가 없는 프로바이더에 대해 기본형 스타일의 코드를 작성할 수 있습니다. 이 클래스들은 일반적인 Sampler 및 Estimator와 똑같이 사용할 수 있지만, 실행할 양자 컴퓨터를 선택하기 위한 추가 backend 인수를 사용하여 초기화해야 한다는 점이 다릅니다. Qiskit을 사용하여 액세스할 수 있습니다. 자세한 내용은 백엔드 기본 요소 가이드를 참조하십시오.


옵션

기본 데이터형에 옵션을 전달하여 필요에 맞게 조정할 수 있습니다. 프라이머리 run() 메서드의 인터페이스는 모든 구현체에서 공통적이지만, 해당 옵션들은 그렇지 않습니다. 특정 기본 유형의 구현이 지원하는 옵션에 대해 알아보려면 API 참조 문서를 확인하십시오.

예를 들어, ‘ IBM Quantum ’ 프리미티브의 옵션에 대해서는 ‘Estimator options’‘Sampler options ’ 항목을 참조하거나, ‘Qiskit Aer’ 프리미티브의 옵션에 대해서는 Qiskit Aer API 참조 문서를 확인하십시오.


Qiskit primitives 의 장점

프리미티브를 활용하면 Qiskit 사용자는 모든 세부 사항을 명시적으로 관리할 필요 없이 특정 QPU용 양자 코드를 작성할 수 있습니다. 또한, 추상화 계층이 하나 더 추가됨에 따라 특정 제공업체의 고급 하드웨어 기능을 더 쉽게 활용할 수 있을 것입니다. 예를 들어, IBM Quantum 프리미티브를 사용하면, 이러한 기법을 직접 구현할 필요 없이 resilience_level, 프리미티브의 옵션을 전환함으로써 오류 완화 및 억제 분야의 최신 발전 성과를 활용할 수 있습니다.

하드웨어 제공업체의 경우 프리미티브를 기본적으로 구현한다는 것은 사용자에게 고급 후처리 기술과 같은 하드웨어 기능에 액세스할 수 있는 보다 "즉시 사용 가능한" 고급 포스트 프로세싱 기법과 같은 하드웨어 기능에 액세스할 수 있는 방법을 사용자에게 제공할 수 있습니다. 따라서 사용자가 하드웨어의 최상의 기능을 더 쉽게 활용할 수 있습니다.


다음 단계

권장사항
이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.