텐서 네트워크 오류 완화(TEM): Algorithmiq의 Qiskit 함수
API 참조 보기
키스킷 기능은 IBM 퀀텀 프리미엄 요금제, 플렉스 요금제 및 온프레미스( IBM 퀀텀 플랫폼 API를 통해) 요금제 사용자에게만 제공되는 실험적 기능입니다. 프리뷰 릴리스 상태이며 변경될 수 있습니다.
이 페이지의 코드는 다음 요구 사항을 사용하여 개발되었습니다. 이 버전 또는 그 이상의 버전을 사용하는 것을 권장합니다.
qiskit[all]~=2.5.1
개요
알고리즘믹의 텐서 네트워크 오류 완화(TEM) 방식은 하이브리드형 양자-클래식 알고리즘으로, 노이즈 완화를 전적으로 기존의 포스트 프로세싱 단계에서 노이즈 완화를 수행하도록 설계된 하이브리드 양자 알고리즘입니다. TEM을 사용하면 사용자는 불가피한 노이즈 유발 오류를 완화하는 관측값의 기대치를 계산하여 노이즈에 의한 불가피한 오류를 완화하고 를 완화하여 정확도와 비용 효율성을 높일 수 있습니다, 양자 연구자와 업계 종사자 모두에게 매우 매력적인 옵션입니다 양자 연구자와 업계 종사자 모두에게 매우 매력적인 옵션입니다.
이 방법은 다음의 역수를 나타내는 텐서 네트워크를 구성하는 것으로 구성됩니다 양자 프로세서의 상태에 영향을 미치는 글로벌 노이즈 채널의 역수를 나타내는 텐서 네트워크를 구성한 다음 이 지도를 잡음 상태로부터 얻은 정보적으로 완전한 측정 결과에 적용하여 관측값에 대한 편향되지 않은 추정치를 얻기 위해 노이즈 상태로부터 얻은 측정 결과에 적용합니다.
장점으로서, TEM은 정보적으로 완전한 측정을 활용하여 관측 가능한 양자의 완화된 기대값에 대한 방대한 집합에 접근할 수 있게 하며arXiv:2307.11740, Filippov et al. (2023) 및 Filippov et al. (2024)에 arXiv:2403.13542기술된 바와 같이 양자 하드웨어에 대한 최적의 샘플링 오버헤드를 가집니다 측정 오버헤드는 효율적인 오류 완화를 수행하는 데 필요한 추가 측정 횟수를 의미하며, 이는 양자 계산의 실현 가능성에서 핵심적인 요소입니다 따라서 TEM은 양자 카오스, 다체 물리학, 허바드 역학, 소분자 화학 시뮬레이션 분야와 같은 복잡한 시나리오에서 양자 우위를 실현할 잠재력을 지닙니다
TEM의 주요 기능과 장점은 다음과 같이 요약할 수 있습니다:
- 최적의 측정 오버헤드 : TEM은 다음과 관련하여 최적입니다 이론적 한계, 즉, 이보다 더 작은 측정 오버헤드를 달성할 수 있는 방법은 없습니다. 다른 말로 즉, TEM은 최소한의 추가 측정이 필요합니다 오류 완화. 이는 곧 TEM이 최소한의 퀀텀 런타임을 사용한다는 것을 의미합니다.
- 비용 효율성 : TEM은 노이즈 완화를 전적으로 후처리 단계에서 처리하기 때문에 후처리 단계에서 처리하기 때문에 양자 컴퓨터에 추가 회로를 추가할 필요가 없습니다 계산을 더 저렴하게 만들뿐만 아니라 계산의 불완전성으로 인한 추가 오류 발생 위험을 양자 장치의 불완전성으로 인한 추가 오류 발생 위험 장치의 불완전성으로 인한 추가 오류 발생 위험을 줄일 수 있습니다.
- 여러 관측값의 추정 : 정보적으로 완전한 측정 덕분에 TEM은 양자 컴퓨터의 동일한 측정 데이터로 여러 관측 변수를 효율적으로 여러 관측값을 효율적으로 추정합니다.
- 측정 오류 완화 : TEM 키스킷 기능에는 또한 독자적인 측정 오류 완화 방법 짧은 캘리브레이션 실행 후 판독 오류를 크게 줄일 수 있습니다.
- 정확성 : TEM은 디지털 양자 시뮬레이션의 정확성과 신뢰성을 크게 향상시켜 디지털 양자 시뮬레이션의 정확성과 신뢰성을 크게 향상시켜 양자 알고리즘을 더욱 정확하고 신뢰할 수 있습니다.
설명
TEM 함수를 사용하면 최소한의 샘플링 오버헤드로 다음과 같은 여러 관측값에 대해 샘플링 오버헤드를 최소화하면서 양자 회로에서 여러 관측값을 얻을 수 있습니다. 회로는 회로는 정보적으로 완전한 양의 연산자 값으로 측정됩니다 측정(IC-POVM)으로 회로를 측정하고 수집된 측정 결과는 클래식 컴퓨터에서 처리됩니다. 이 측정값은 텐서 네트워크 메서드를 수행하고 노이즈 반전 맵을 구축하는 데 사용됩니다. 이 함수는 텐서 네트워크를 사용하여 전체 노이즈 회로를 완전히 텐서 네트워크를 사용하여 전체 노이즈 회로를 반전시켜 노이즈가 있는 레이어를 표현합니다.
회로가 함수에 제출되면 트랜스파일링되고 2 큐비트 게이트(양자 소자에서 가장 노이즈가 많은 게이트)로 레이어 수를 최소화하도록 최적화됩니다 양자 디바이스의 게이트). 레이어에 영향을 미치는 노이즈는 다음을 통해 학습됩니다 Qiskit Runtime 에 설명된 대로 스파스 폴리-린드블라드 노이즈 모델을 사용하여 학습합니다. van den Berg, Z. 미네브, A. 칸달라, K. 템메, Nat. 실제 (2023). arXiv:2201.09866.
노이즈 모델은 디바이스의 노이즈에 대한 정확한 설명으로, 다음과 같은 미묘한 특징을 포착할 수 있습니다 큐비트 누화를 포함한 미묘한 특징을 포착할 수 있습니다. 그러나 디바이스의 노이즈는 장치의 노이즈는 변동 및 드리프트될 수 있으며 학습된 노이즈는 추정이 완료된 시점에 정확하지 않을 수 있습니다. 부정확한 결과가 나올 수 있습니다 결과를 초래할 수 있습니다.
시작하기
IBM Quantum Platform API 키를 사용하여 인증한 후, 다음과 같이 TEM 기능을 선택하십시오. (이 코드 조각은 이미 계정을 로컬 환경에 저장해 두었다고 가정합니다.)
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()Output:
[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을 사용하는 예시를 보여줍니다.
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)키스킷 서버리스 API를 사용하여 키스킷 함수 워크로드의 상태를 확인하세요:
# Print the ID so you can use it later, if necessary
print(job.job_id)
print(job.status())Output:
ea1d7802-b067-4cc9-af39-3c2402d22413
QUEUED
결과를 다음과 같이 반환할 수 있습니다:
result = job.result()
evs = result[0].data.evs
print(evs[0])Output:
-0.10628832892063486
주어진 연산자에 대한 무잡음 회로의 예상 값은 0.18409094298943401 정도여야 합니다.
지원 받기
다음과 같은 정보가 포함되어야 합니다.
- 키스킷 함수 작업 ID (
qiskit-ibm-catalog),job.job_id - 문제에 대한 자세한 설명
- 관련 오류 메시지 또는 코드
- 이 문제를 재현하는 단계
다음 단계
- Algorithmiq 텐서 네트워크 오류 완화 기능에 대한 액세스 권한을 요청합니다.
- 이 Qiskit 함수에 대한 API 참조 를 확인해 보세요.