로컬 테스트 모드
이 페이지의 코드는 다음 요구 사항을 사용하여 개발되었습니다. 다음 버전 이상을 사용하는 것이 좋습니다.
qiskit[all]~=2.5.2 qiskit-ibm-runtime~=0.47.0 qiskit-aer~=0.17
로컬 테스트 모드( qiskit-ibm-runtime v0.22.0 이상에서 사용 가능)를 사용하여 프로그램을 미세 조정하고 실제 양자 하드웨어로 전송하기 전에 프로그램을 테스트하세요. 로컬 테스트 모드를 사용하여 프로그램을 검증한 후에는 백엔드 이름만 변경하면 QPU에서 실행할 수 있습니다.
Executor 기본 객체는 로컬 테스트 모드를 지원하지 않습니다.
로컬 테스트 모드를 사용하려면, IBM Quantum 프리미티브나 세션을 인스턴스화할 때 가짜 백엔드 중 하나를 지정하거나 qiskit_ibm_runtime.fake_provider Qiskit Aer 백엔드를 지정하십시오.
-
가짜 백엔드 :
qiskit_ibm_runtime.fake_provider의 가짜 백엔드는 QPU 스냅샷을 사용하여 IBM® QPU의 동작을 모방합니다. QPU 스냅샷에는 커플링 맵, 기저 게이트, 큐비트 속성 등 QPU에 대한 중요한 정보가 포함되어 있어 트랜스파일러를 테스트하고 QPU의 노이즈 시뮬레이션을 수행하는 데 유용합니다. 스냅샷의 노이즈 모델은 시뮬레이션 중에 자동으로 적용됩니다. -
Aer 시뮬레이터 : 키스킷 에어의 시뮬레이터는 더 큰 회로와 맞춤형 노이즈 모델을 처리할 수 있는 고성능 시뮬레이션을 제공합니다. 로컬 테스트 모드에서
AerSimulator을 사용하면 시뮬레이션 방법 옵션 목록을 사용할 수 있습니다. 많은 수의 큐비트가 있는 클리포드 회로를 효율적으로 시뮬레이션하는 방법을 보여주는 클리포드 시뮬레이션 모드 예시를 참조하세요.자세한 내용은
AerSimulator문서를 참조하세요.-
"automatic": 기본 시뮬레이션 방법. 회로 및 노이즈 모델에 따라 시뮬레이션 방법을 자동으로 선택합니다. -
"statevector": 모든 측정값이 회로의 끝에 있는 이상적인 회로에서 측정 결과를 샘플링할 수 있는 고밀도 상태 벡터 시뮬레이션입니다. 노이즈 시뮬레이션의 경우, 각 샷은 노이즈 모델에서 무작위로 샘플링된 노이즈 회로를 샘플링합니다. -
"density_matrix": 모든 측정값이 회로의 끝에 있는 잡음이 많은 회로에서 측정 결과를 샘플링할 수 있는 밀도 매트릭스 시뮬레이션입니다. -
"stabilizer": 잡음 모델의 모든 오차가 클리포드 오차이기도 한 경우 잡음이 있는 클리포드 회로를 시뮬레이션할 수 있는 효율적인 클리포드 안정기 상태 시뮬레이터입니다. -
"extended_stabilizer": 상태를 순위 안정화 상태로 분해하여 클리포드 + T 회로의 대략적인 시뮬레이터입니다. 항의 수는 클리포드(T)가 아닌 게이트의 수에 따라 증가합니다. -
"matrix_product_state": 상태의 행렬 곱 상태(MPS) 표현을 사용하는 텐서 네트워크 상태 벡터 시뮬레이터입니다. 이 작업은 시뮬레이터 옵션에 따라 MPS 본드 치수를 자르거나 자르지 않고 수행할 수 있습니다. 기본 동작은 잘림 없음입니다. -
"unitary": 이상적인 회로의 고밀도 유니타리 매트릭스 시뮬레이션. 이는 초기 양자 상태의 진화가 아닌 회로 자체의 단일 행렬을 시뮬레이션합니다. 이 방법은 게이트 시뮬레이션만 가능하며 측정, 리셋 또는 노이즈는 지원하지 않습니다. -
"superop": 이상적인 또는 잡음이 있는 회로의 고밀도 슈퍼 연산자 매트릭스 시뮬레이션입니다. 이는 초기 양자 상태의 진화가 아닌 회로 자체의 슈퍼 연산자 행렬을 시뮬레이션합니다. 이 방법은 이상적이고 잡음이 많은 게이트와 리셋을 시뮬레이션할 수 있지만 측정은 지원하지 않습니다. -
"tensor_network": 상태 벡터와 밀도 행렬을 모두 지원하는 텐서 네트워크 기반 시뮬레이션입니다. 현재 이 기능은 GPU에서만 사용할 수 있으며 cuQuantumcuTensorNetAPI를 사용하여 가속됩니다.
-
- 로컬 테스트 모드에서 ‘ IBM Quantum ’ 컴퓨트 옵션 전체를 지정할 수 있습니다. 그러나 로컬 시뮬레이터에서 실행할 때는 샷을 제외한 모든 옵션이 무시됩니다.
- 가짜 백엔드나 에어 시뮬레이터를 사용하기 전에
pip install qiskit-aer를 실행하여 키스킷 에어를 설치하는 것이 좋습니다. 가짜 백엔드는 가능한 경우 Aer 시뮬레이터를 은밀하게 사용하여 성능을 활용합니다.
가짜 백엔드 예시
from qiskit.circuit import QuantumCircuit
from qiskit.transpiler import generate_preset_pass_manager
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit_ibm_runtime.fake_provider import FakeManilaV2
# Bell Circuit
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()
# Run the Sampler job locally using FakeManilaV2
fake_manila = FakeManilaV2()
pm = generate_preset_pass_manager(backend=fake_manila, optimization_level=1)
isa_qc = pm.run(qc)
# You can use a fixed seed to get fixed results.
options = {"simulator": {"seed_simulator": 42}}
sampler = Sampler(mode=fake_manila, options=options)
result = sampler.run([isa_qc]).result()AerSimulator 예시
노이즈가 없는 세션의 예입니다:
from qiskit_aer import AerSimulator
from qiskit.circuit import QuantumCircuit
from qiskit.transpiler import generate_preset_pass_manager
from qiskit_ibm_runtime import Session, SamplerV2 as Sampler
# Bell Circuit
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()
# Run the Sampler job locally using AerSimulator.
# Session syntax is supported but ignored because local mode doesn't support sessions.
aer_sim = AerSimulator()
pm = generate_preset_pass_manager(backend=aer_sim, optimization_level=1)
isa_qc = pm.run(qc)
with Session(backend=aer_sim) as session:
sampler = Sampler(mode=session)
result = sampler.run([isa_qc]).result()노이즈로 시뮬레이션하려면 QPU(양자 하드웨어)를 지정하고 이를 Aer에 제출하세요. Aer는 해당 QPU의 캘리브레이션 데이터를 기반으로 노이즈 모델을 빌드하고 해당 모델을 사용하여 Aer 백엔드를 인스턴스화합니다. 원하는 경우 노이즈 모델을 구축할 수 있습니다.
QPU는 다양한 종류의 노이즈에 영향을 받을 수 있습니다. 여기에 사용된 키스킷 에어 노이즈 모델은 일부만 시뮬레이션하므로 실제 QPU의 노이즈보다 덜 심각할 수 있습니다.
QPU에서 노이즈 모델을 초기화할 때 어떤 오류가 포함되는지에 대한 자세한 내용은 Aer NoiseModel API 레퍼런스를 참조하세요.
노이즈가 있는 예시입니다:
from qiskit_aer import AerSimulator
from qiskit.circuit import QuantumCircuit
from qiskit.transpiler import generate_preset_pass_manager
from qiskit_ibm_runtime import SamplerV2 as Sampler, QiskitRuntimeService
# Bell Circuit
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()
service = QiskitRuntimeService()
# Specify a QPU to use for the noise model
real_backend = service.backend("ibm_fez")
aer = AerSimulator.from_backend(real_backend)
# Run the Sampler job locally using AerSimulator.
pm = generate_preset_pass_manager(backend=aer, optimization_level=1)
isa_qc = pm.run(qc)
sampler = Sampler(mode=aer)
result = sampler.run([isa_qc]).result()클리포드 시뮬레이션
클리포드 회로를 효율적으로 시뮬레이션하여 검증 가능한 결과를 얻을 수 있기 때문에 클리포드 시뮬레이션은 매우 유용한 도구입니다. 자세한 예시는 키스킷 에어 프리미티브를 사용한 안정기 회로의 효율적인 시뮬레이션을 참조하세요.
예:
import numpy as np
from qiskit.circuit.library import efficient_su2
from qiskit_ibm_runtime import SamplerV2 as Sampler
n_qubits = 500 # <---- note this uses 500 qubits!
circuit = efficient_su2(n_qubits)
circuit.measure_all()
rng = np.random.default_rng(1234)
params = rng.choice(
[0, np.pi / 2, np.pi, 3 * np.pi / 2],
size=circuit.num_parameters,
)
# Tell Aer to use the stabilizer (Clifford) simulation method
aer_sim = AerSimulator(method="stabilizer")
pm = generate_preset_pass_manager(backend=aer_sim, optimization_level=1)
isa_qc = pm.run(qc)
sampler = Sampler(mode=aer_sim)
result = sampler.run([isa_qc]).result()