Skip to main content
IBM Quantum Platform

번역 소개

트랜스파일레이션 개요 및 로컬 또는 클라우드 환경에서 사용할 수 있는 관련 도구들.

트랜스파일레이션이란 주어진 입력 회로를 특정 양자 소자의 토폴로지에 맞게 재작성하고, 잡음이 있는 양자 컴퓨터에서 실행될 수 있도록 회로 명령어를 최적화하는 과정을 말합니다. 이 문서는 모든 Qiskit 사용자가 이용할 수 있는 로컬 트랜스파일링을 위한 도구 및 워크플로를 다룹니다. 프리미티브를 사용하고 있으며, IBM Quantum Compute Service에서 제공하는 기본 트랜스파일링 옵션에만 관심이 있다면, ‘오류 완화 및 억제 기법’ 항목을 참조하십시오.

번역 과정에는 지침이 포함된 회로가 필요합니다:

하다마드와 두 개의 CNOT 게이트를 포함하는 2큐비트 양자 회로.
양자 회로

그런 다음 트랜스필레이션은 선택한 백엔드에서 사용 가능한 명령어만 사용하도록 변환하고 해당 명령어를 최적화하여 노이즈의 영향을 최소화합니다:

트랜스필레이션 후 동일한 2큐비트 양자 회로.  여기에는 RZ, X, SX 및 ECR 게이트가 포함되어 있습니다.
변환 후 양자 회로

키스킷 SDK의 핵심 구성 요소인 트랜스파일러는 모듈성과 확장성을 위해 설계되었습니다. 주요 용도는 새로운 회로 변환(트랜스파일러 패스라고 함)을 작성하고 이를 기존의 다른 패스와 결합하여 양자 회로의 깊이와 복잡성을 크게 줄이는 것입니다. 어떤 패스가 서로 연결되어 있고 어떤 순서가 최종 결과에 큰 영향을 미치는지 확인합니다. 이 파이프라인은 PassManagerStagedPassManager 객체에 의해 결정됩니다. StagedPassManager 객체는 하나 이상의 PassManagers 실행을 조율하고 실행 순서를 결정하는 반면, PassManager 객체는 하나 이상의 패스의 모음일 뿐입니다. StagedPassManager 을 오케스트라의 지휘자, PassManagers 을 다양한 악기 섹션, Pass 개체를 개별 음악가라고 생각하면 됩니다. 이러한 방식으로 노이즈를 관리 가능한 수준으로 유지하면서 유틸리티 규모의 작업을 실행할 수 있는 하드웨어 효율적인 양자 회로를 구성할 수 있습니다.

패스 관리자 단계에 대한 자세한 내용은 트랜스파일러 단계 항목에서 확인하세요.


명령어 집합 아키텍처

트랜스파일러는 양자 회로의 깊이와 복잡성을 줄이는 것 외에도 특정 백엔드의 명령어 집합 아키텍처(ISA)를 따르도록 주어진 QuantumCircuit 에 포함된 명령어를 변환하도록 설계되었습니다. ISA를 따르는 회로는 백엔드의 명령어( Target에서 지원되는 명령어(예: 하드웨어의 사용 가능한 기본 게이트, 측정, 리셋 및 제어 흐름 연산)로만 구성되며 하드웨어의 연결에 의해 지정된 제약 조건, 즉 대상의 CouplingMap. IBM 퀀텀® 백엔드에 작업을 제출할 때, 회로는 백엔드의 ISA를 준수해야 합니다.


트랜스파일러 단계

키스킷의 사전 구축된 트랜스파일러 파이프라인은 6가지 기본 단계로 구성되어 있습니다:

  1. init - 이 패스는 회로를 임베드하기 전에 필요한 모든 초기 패스를 실행합니다. 여기에는 일반적으로 사용자 지정 명령어를 풀고 회로를 모든 단일 및 2비트 게이트로 변환하는 작업이 포함됩니다. 기본적으로 이것은 회로 명령어의 유효성을 검사하고 다중 큐비트 게이트를 단일 및 2큐비트 게이트로 변환합니다.
  2. layout - 이 패스는 레이아웃을 적용하여 회로의 가상 큐비트를 QPU의 물리적 큐비트에 매핑합니다.
  3. routing - 이 패스는 레이아웃이 적용된 후 실행되며 원래 회로에 게이트(즉, SWAP)를 삽입하여 QPU의 연결(커플링 맵)과 호환되도록 합니다.
  4. translation - 이 패스는 회로의 게이트를 QPU의 기본 명령어 집합으로 변환합니다.
  5. optimization - 이 패스는 조건(예: 고정 깊이)이 충족될 때까지 최적화 루프를 실행하여 양자 회로의 보다 효율적인 분해를 찾습니다.
  6. scheduling - 이 단계는 모든 하드웨어 인식 스케줄링 패스를 위한 단계입니다. 사용자가 스케줄링 방법을 지정한 경우 이 단계에서는 회로의 모든 유휴 시간을 고려합니다.

번역 워크플로를 사용자 지정하는 경우 개발 중에 이러한 단계를 가이드라인으로 활용하세요.


통과 관리자를 사용한 트랜스파일링

회로를 트랜스파일하는 권장 방법은 스테이지 패스 매니저를 생성한 다음 회로를 입력으로 하여 run 메서드를 실행하는 것입니다. 함수를 사용하여 generate_preset_pass_manager 함수를 사용하여 합리적인 기본값을 가진 스테이지 패스 관리자를 생성할 수 있습니다.

고급 사용자는 PassManagerStagedPassManager 개체 집합을 사용자 지정하고 각 단계가 실행되는 순서를 결정할 수 있습니다. 이렇게 하면 최종 출력 회로가 크게 바뀔 수 있습니다. 실제로 양자 알고리즘을 트랜스파일링하는 사용자 지정 접근 방식은 기본 접근 방식보다 오류를 더 효율적으로 억제하는 경우가 많습니다. 맞춤형 접근 방식은 하드웨어 제약 조건에 맞게 양자 회로를 재작성하고 노이즈의 영향을 억제하는 것입니다. 이 툴 체인의 로직 흐름은 사용자 정의할 수 있으며 선형적일 필요는 없습니다. 트랜슬레이션 프로세스는 반복 루프, 조건부 분기 및 기타 복잡한 동작을 준비할 수 있습니다. 사용자 지정 패스 세트를 개발할 때 좋은 출발점은 기본 변환 순서를 검토하는 것입니다.

패스 관리자를 사용한 트랜스파일링에 대한 개요는 패스 관리자를 사용한 트랜스파일링을 참조하세요.


기본 트랜스파일레이션

트랜스파일러를 더 간단하지만 커스터마이징이 제한된 "기본 제공" 방식으로 사용하려면 함수를 qiskit.compiler.transpile 사용하십시오. 이것은 0, 1, 2 또는 3으로 설정할 수 있는 optimization_level 플래그를 비롯한 여러 옵션에 기반하여 사전 설정된 StagedPassManager 객체 중 하나를 생성하고 실행합니다. 높은 수준은 더 긴 트랜스파일 시간을 대가로 더 최적화된 회로를 생성합니다.


다음 단계

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