텐서 네트워크 오류 완화(TEM) - Algorithmiq의 Qiskit Function
API 레퍼런스를 참조하세요
Qiskit Functions는 IBM Quantum® Premium Plan, Flex Plan, On-Prem(IBM Quantum Platform API 경유) Plan 사용자에게만 제공되는 실험적 기능입니다. 현재 미리 보기 릴리스 상태이며 변경될 수 있습니다.
패키지 버전
이 페이지의 코드는 다음 요구 사항을 사용하여 개발되었습니다. 아래 버전 이상을 사용해 주세요.
qiskit[all]~=2.5.1
개요
Algorithmiq의 텐서 네트워크 오류 완화(TEM) 방법은 노이즈 완화를 고전 후처리 단계에서 전적으로 수행하도록 설계된 하이브리드 양자-고전 알고리즘이에요. TEM을 사용하면 정확도와 비용 효율성을 높여 양자 하드웨어에서 불가피하게 발생하는 노이즈 유발 오류를 완화하면서 관측량의 기댓값을 계산할 수 있고, 이는 양자 연구자와 산업 실무자 모두에게 매우 매력적인 옵션이에요.
이 방법은 양자 프로세서의 상태에 영향을 미치는 전역 노이즈 채널의 역 채널을 나타내는 텐서 네트워크를 구성한 다음, 노이즈가 있는 상태에서 획득한 정보 완전 측정 결과에 해당 맵을 적용하여 관측량에 대한 비편향 추정값을 얻는 방식으로 이루어져요.
TEM의 장점은 정보 완전 측정을 활용하여 광범위한 관측량의 완화된 기댓값에 접근할 수 있다는 점이에요. 또한 Filippov et al. (2023), arXiv:2307.11740 및 Filippov et al. (2024), arXiv:2403.13542에 설명된 것처럼 양자 하드웨어에서 최적의 샘플링 오버헤드를 가져요. 측정 오버헤드는 효율적인 오류 완화를 수행하는 데 필요한 추가 측정 횟수를 의미하며, 양자 계산의 실현 가능성에 있어 핵심적인 요소예요. 따라서 TEM은 양자 카오스, 다체 물리학, 허바드 동역학, 소분자 화학 시뮬레이션 등 복잡한 분야의 응용에서 양자 우위를 가능하게 할 잠재력을 지니고 있어요.
TEM의 주요 특징과 이점을 요약하면 다음과 같습니다:
- 최적의 측정 오버헤드: TEM은 이론적 한계에 대해 최적화되어 있으며, 어떠한 방법도 더 작은 측정 오버헤드를 달성할 수 없다는 뜻이에요. 즉, TEM은 오류 완화를 수행하는 데 필요한 최소한의 추가 측정만을 요구해요. 이는 곧 TEM이 최소한의 양자 런타임을 사용한다는 뜻이에요.
- 비용 효율성: TEM은 노이즈 완화를 후처리 단계에서 전적으로 처리하므로 양자 컴퓨터에 추가 Circuit을 삽입할 필요가 없어 계산 비용을 절감할 뿐만 아니라 양자 디바이스의 불완전성으로 인한 추가 오류 발생 위험도 줄여요.
- 다중 관측량 추정: 정보 완전 측정 덕분에 TEM은 양자 컴퓨터로부터 동일한 측정 데이터로 여러 관측량을 효율적으로 추정해요.
- 측정 오류 완화: TEM Qiskit Function에는 짧은 보정 실행 후 판독 오류를 크게 줄일 수 있는 독자적인 측정 오류 완화 방법도 포함되어 있어요.
- 정확도: TEM은 디지털 양자 시뮬레이션의 정확도와 신뢰성을 크게 향상시켜 양자 알고리즘을 더욱 정밀하고 신뢰할 수 있게 해줘요.
설명
TEM 함수를 사용하면 최소한의 샘플링 오버헤드로 양자 Circuit에서 여러 관측량에 대한 오류 완화된 기댓값을 얻을 수 있습니다. Circuit은 정보 완전 양의 연산자 값 측정(IC-POVM)으로 측정되며, 수집된 측정 결과는 고전 컴퓨터에서 처리됩니다. 이 측정은 텐서 네트워크 방법을 수행하고 노이즈 역전 맵을 구축하는 데 사용됩니다. 함수는 텐서 네트워크를 사용하여 노이즈 레이어를 표현하고 전체 노이즈 Circuit을 완전히 역전하는 맵을 적용합니다.
Circuit이 함수에 제출되면 두 qubit 게이트(양자 디바이스에서 더 노이즈가 많은 Gate)의 레이어 수를 최소화하도록 트랜스파일되고 최적화돼요. 레이어에 영향을 미치는 노이즈는 E. van den Berg, Z. Minev, A. Kandala, K. Temme, Nat. Phys. (2023), arXiv:2201.09866에 설명된 희소 Pauli-Lindblad 노이즈 모델을 사용하여 Qiskit Runtime을 통해 학습돼요.
노이즈 모델은 qubit 크로스토크를 포함한 미묘한 특징을 포착할 수 있는 디바이스 노이즈에 대한 정확한 설명이에요. 그러나 디바이스의 노이즈는 변동하고 드리프트할 수 있고, 학습된 노이즈는 추정이 수행되는 시점에서 정확하지 않을 수 있어요. 이로 인해 부정확한 결과가 발생할 수 있어요.
시작하기
IBM Quantum Platform API 키를 사용하여 인증하고, 다음과 같이 TEM 함수를 선택하세요. (이 스니펫은 이미 계정을 로컬 환경에 저장했다고 가정합니다.)
# Added by doQumentation — installs the packages this notebook needs if they are missing
import importlib.util
_needed = {"qiskit": "qiskit", "qiskit_ibm_catalog": "qiskit-ibm-catalog"}
_missing = [pip for module, pip in _needed.items()
if importlib.util.find_spec(module) is None]
# One at a time, so a package that fails to install does not block the others
for _pip in _missing:
%pip install -q {_pip}
if not _missing:
print("\u2713 All required packages are installed")
from qiskit_ibm_catalog import QiskitFunctionsCatalog
tem_function_name = "algorithmiq/tem"
catalog = QiskitFunctionsCatalog(channel="ibm_quantum_platform")
# verify that you have access to the function
catalog.list()
[QiskitFunction(qunova/hivqe-chemistry),
QiskitFunction(global-data-quantum/quantum-portfolio-optimizer),
QiskitFunction(algorithmiq/tem),
QiskitFunction(qedma/qesem),
QiskitFunction(multiverse/singularity),
QiskitFunction(ibm/circuit-function),
QiskitFunction(q-ctrl/optimization-solver),
QiskitFunction(colibritd/quick-pde),
QiskitFunction(q-ctrl/performance-management),
QiskitFunction(kipu-quantum/iskay-quantum-optimizer)]
# Load your function
tem = catalog.load(tem_function_name)
예제
다음 스니펫은 TEM을 사용하여 간단한 양자 Circuit에 대해 관측량의 기댓값을 계산하는 예제를 보여줘요.
from qiskit import QuantumCircuit
from qiskit.quantum_info import SparsePauliOp
# Create a quantum circuit
qc = QuantumCircuit(3)
qc.u(0.4, 0.9, -0.3, 0)
qc.u(-0.4, 0.2, 1.3, 1)
qc.u(-1.2, -1.2, 0.3, 2)
for _ in range(2):
qc.barrier()
qc.cx(0, 1)
qc.cx(2, 1)
qc.barrier()
qc.u(0.4, 0.9, -0.3, 0)
qc.u(-0.4, 0.2, 1.3, 1)
qc.u(-1.2, -1.2, 0.3, 2)
# Define the observables
observable = SparsePauliOp("IYX", 1.0)
# Define the execution options
pub = (qc, [observable])
options = {"default_precision": 0.02}
# Define backend to use. TEM will choose the least-busy device
# reported by IBM if not specified
backend_name = "ibm_marrakesh"
# Run the TEM function (uses around three minutes of QPU time)
job = tem.run(pubs=[pub], backend_name=backend_name, options=options)
Qiskit Serverless API를 사용하여 Qiskit Function 워크로드의 상태를 확인하세요:
# Print the ID so you can use it later, if necessary
print(job.job_id)
print(job.status())
ea1d7802-b067-4cc9-af39-3c2402d22413
QUEUED
다음과 같이 결과를 반환할 수 있습니다:
result = job.result()
evs = result[0].data.evs
print(evs[0])
-0.10628832892063486
주어진 연산자에 대한 노이즈 없는 Circuit의 기댓값은 0.18409094298943401 근처여야 합니다.
지원 받기
qiskit_ibm@algorithmiq.fi로 문의하세요.
다음 정보를 반드시 포함해 주세요:
- Qiskit Function 작업 ID(
qiskit-ibm-catalog),job.job_id - 문제에 대한 자세한 설명
- 관련 오류 메시지 또는 코드
- 문제 재현 단계
다음 단계
-
이 Qiskit Function의 API 참조를 방문하세요.