Skip to main content
IBM Quantum Platform

에서 BackendV1 로 마이그레이션 BackendV2

키스킷 BackendV1 클래스는 더 이상 사용되지 않으며 서비스에서 제거될 예정입니다. 이 마이그레이션 가이드에서는 다음과 같이 업그레이드한 공급업체를 사용하는 경우 수행해야 하는 작은 조정에 대해 설명합니다 BackendV1 에서 BackendV2.

Note

qiskit_ibm_runtimeqiskit_aer 전용으로 사용하는 경우 별도의 조치가 필요하지 않습니다. qiskit_ibm_runtime 패키지는 항상 BackendV2 을 사용했고 qiskit_aer 는 버전 0.13 부터 BackendV2 을 사용했습니다.


상위 수준의 변경 사항 BackendV2

키스킷 Backend 모델은 Qiskit SDK 에 추상화 레이어를 제공하도록 설계되었습니다 계층을 제공하여 SDK의 범위 내에서 양자 컴퓨터에 대한 추론을 가능하게 했습니다. 이 모델의 첫 번째 반복은 BackendV1 클래스로 도입되었습니다. 이 클래스는 일련의 데이터 컨테이너, 즉 의 데이터 컨테이너, 즉 BackendConfigurationBackendProperties 클래스입니다.

클래스의 BackendV2 클래스 재정의 대부분의 백엔드 속성에 대한 사용자 액세스를 재정의하여 네이티브 키스킷 데이터 구조와 함께 작동하고 더 평평한 액세스 패턴을 갖도록 했습니다. 모델의 핵심은 BackendV2 모델의 핵심은 Target 클래스로, 키스킷이 실행을 위해 회로를 최적화하는 데 사용할 수 있는 변환 제약 조건을 포함하는 QPU의 표현입니다.

Qiskit SDK 은 다음에서만 작동하도록 업데이트되었습니다 BackendV2 입력, 대부분의 공급자는 BackendV1 에서 BackendV2. 기존 제공업체는 가능한 경우 이전 액세스를 중단하여 점진적인 마이그레이션을 제공할 것으로 예상되지만, 결국 사용자는 코드를 조정해야 합니다.

의 원리는 BackendV2 의 원리는 백엔드에 대한 대부분의 정보는 해당 백엔드의 Target 객체에 포함되어 있으며, 백엔드의 어트리뷰트는 종종 BackendV2.target 어트리뷰트를 쿼리하여 정보를 반환합니다. 그러나 대부분의 경우 속성은 다음과 같은 정보만 제공합니다 대상에 포함할 수 있는 정보의 하위 집합만 제공합니다. 예를 들어 backend.coupling_mapCouplingMap 로 구성된 Target 속성에서 액세스 가능한 BackendV2.target 어트리뷰트에서 접근 가능한 구조체를 반환합니다. 그러나 대상에는 다음이 포함될 수 있습니다 두 개 이상의 큐비트에서 작동하는 명령어(이는 CouplingMap)로 표현할 수 없는) 또는 큐비트의 하위 집합(또는 2 큐비트 명령어의 경우 두 개의 링크)에서만 작동하는 명령어가 있을 수 있습니다 큐비트의 하위 집합 (또는 두 큐비트 명령어의 경우 두 큐비트 링크)에서만 작동하는 명령어를 포함할 수 있습니다 에 의해 반환된 전체 커플링 맵에 자세히 BackendV2.coupling_map. 따라서 사용 사례에 따라 다음과 같은 동등한 액세스보다 더 깊이 살펴봐야 할 수도 있습니다 BackendV2.


특정 변경 사항 BackendV2

대부분의 속성은 직접 대체할 수 있어 마이그레이션 작업을 간소화합니다. 인터페이스 간의 유일한 불일치 지점은 CouplingMap.

다음은 액세스 패턴의 예시 표입니다 BackendV1 과 새로운 양식 와 BackendV2.

Important

오른쪽으로 스크롤하여 중요한 메모를 확인합니다.

참고
backend.configuration().n_qubitsbackend.num_qubits
backend.configuration().coupling_mapbackend.coupling_map의 반환은 BackendV2 의 반환은 CouplingMap 객체입니다. In BackendV1 에서는 엣지 목록입니다. 또한 이는 backend.target 에 포함된 정보의 일부일 수 있는 보기일 뿐이며, 객체에 포함된 정보의 일부일 수 있습니다 Target 객체에 포함된 정보의 일부일 수 있습니다.
backend.configuration().backend_namebackend.name
backend.configuration().backend_versionbackend.backend_versionBackendV2.version 어트리뷰트는 객체가 구현하는 추상 인터페이스의 버전을 나타내며 Backend 인터페이스의 버전을 나타내며 BackendV2.backend_version 는 백엔드 자체의 버전에 대한 메타데이터입니다.
backend.configuration().basis_gatesbackend.operation_namesBackendV2backend.target 속성에 포함된 작업 이름 목록을 반환합니다. 의 Target 에는 이 이름 목록으로 표현할 수 있는 것보다 더 많은 정보가 포함될 수 있습니다. 예를 들어 일부 연산은 큐비트의 하위 집합에서만 작동하고, 일부 이름은 다른 매개변수로 동일한 게이트를 구현합니다.
backend.configuration().dtbackend.dt
backend.configuration().dtmbackend.dtm
backend.configuration().max_experimentsbackend.max_circuits
backend.configuration().online_datebackend.online_date
InstructionDurations.from_backend(backend)backend.instruction_durations
backend.defaults().instruction_schedule_mapbackend.instruction_schedule_map
backend.properties().t1(0)backend.qubit_properties(0).t1
backend.properties().t2(0)backend.qubit_properties(0).t2
backend.properties().frequency(0)backend.qubit_properties(0).frequency
backend.properties().readout_error(0)backend.target["measure"][(0,)].error에서 BackendV2에서 주어진 큐비트에 대한 Measure 연산에 대한 오류율은 판독 오류를 모델링하는 데 사용됩니다. 그러나 BackendV2 객체는 여러 측정 유형을 구현하여 Target.
backend.properties().readout_length(0)backend.target["measure"][(0,)].duration에서 BackendV2에서 주어진 큐비트에 대한 Measure 연산의 지속 시간은 판독 길이를 모델링하는 데 사용됩니다. 그러나 BackendV2 객체는 여러 측정 유형을 구현하여 Target.
이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.