Skip to main content
IBM Quantum Platform

로컬 테스트 모드

  • 이 페이지의 코드는 다음 요구 사항을 사용하여 개발되었습니다. 다음 버전 이상을 사용하는 것이 좋습니다.

    qiskit[all]~=2.5.2
    qiskit-ibm-runtime~=0.47.0
    qiskit-aer~=0.17
    

로컬 테스트 모드( qiskit-ibm-runtime v0.22.0 이상에서 사용 가능)를 사용하여 프로그램을 미세 조정하고 실제 양자 하드웨어로 전송하기 전에 프로그램을 테스트하세요. 로컬 테스트 모드를 사용하여 프로그램을 검증한 후에는 백엔드 이름만 변경하면 QPU에서 실행할 수 있습니다.

Note

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에서만 사용할 수 있으며 cuQuantum cuTensorNet API를 사용하여 가속됩니다.

참고
  • 로컬 테스트 모드에서 ‘ 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 백엔드를 인스턴스화합니다. 원하는 경우 노이즈 모델을 구축할 수 있습니다.

Caution

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()

다음 단계

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