Skip to main content
IBM Quantum Platform

IBM Quantum Compute (구 Qiskit Runtime ) 클라이언트

qiskit_ibm_runtime

IBM Quantum Compute (구 Qiskit Runtime ) 클라이언트와 관련된 모듈.

IBM Quantum Compute (이전 명칭: Qiskit Runtime )는 반복 연산이 많이 필요한 계산을 간소화하는 새로운 아키텍처입니다. 이러한 실험들은 개선된 하이브리드 양자/고전적 프로세스 내에서 훨씬 더 빠르게 수행될 것입니다.


기본 요소와 세션

IBM Quantum Compute 다음과 같은 두 가지 미리 정의된 기본 도형이 있습니다: SamplerEstimator. 이러한 기본 요소들은 기초적인 양자 컴퓨팅 작업을 수행하기 위한 간소화된 인터페이스를 제공하는 동시에, 양자 하드웨어 및 소프트웨어 분야의 최신 발전 동향도 반영하고 있습니다.

IBM Quantum Compute 또한 ‘세션’이라는 개념도 있습니다. 한 세션 내에서 제출된 작업은 스케줄러에 의해 우선순위가 지정됩니다. 세션을 사용하면 양자 컴퓨터에 대한 반복 호출을 보다 효율적으로 수행할 수 있습니다.

아래는 세션 내에서 프리미티브를 사용하는 예시입니다:

from qiskit_ibm_runtime import QiskitRuntimeService, Session
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit_ibm_runtime import EstimatorV2 as Estimator
from qiskit.circuit.library import real_amplitudes
from qiskit.circuit import QuantumCircuit, QuantumRegister, ClassicalRegister
from qiskit.quantum_info import SparsePauliOp
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager

# Initialize account.
service = QiskitRuntimeService()

# Prepare inputs.
psi = real_amplitudes(num_qubits=2, reps=2)
H1 = SparsePauliOp.from_list([("II", 1), ("IZ", 2), ("XI", 3)])
theta = [0, 1, 1, 2, 3, 5]
# Bell Circuit
qr = QuantumRegister(2, name="qr")
cr = ClassicalRegister(2, name="cr")
qc = QuantumCircuit(qr, cr, name="bell")
qc.h(qr[0])
qc.cx(qr[0], qr[1])
qc.measure(qr, cr)

backend = service.least_busy(operational=True, simulator=False)
pm = generate_preset_pass_manager(target=backend.target, optimization_level=1)

bell_isa_circuit = pm.run(qc)
psi_isa_circuit = pm.run(psi)
isa_observables = H1.apply_layout(psi_isa_circuit.layout)

with Session(backend=backend) as session:
    # Submit a request to the Sampler primitive within the session.
    sampler = Sampler(mode=session)
    job = sampler.run([bell_isa_circuit])
    pub_result = job.result()[0]
    print(f"Counts: {pub_result.data.cr.get_counts()}")

    # Submit a request to the Estimator primitive within the session.
    estimator = Estimator(mode=session)
    estimator.options.resilience_level = 1  # Set options.
    job = estimator.run(
        [(psi_isa_circuit, isa_observables, theta)]
    )
    pub_result = job.result()[0]
    print(f"Expectation values: {pub_result.data.evs}")

로컬 테스트 모드

로컬 테스트 모드를 사용하여 양자 프로그램을 실제 시스템으로 전송하기 전에 검증할 수 있습니다. 로컬 테스트 모드는 프리미티브 또는 세션을 인스턴스화할 때 qiskit_ibm_runtime.fake_provider 또는 키스킷 에어 백엔드 인스턴스의 가짜 백엔드 중 하나가 사용되는 경우 활성화됩니다. 예를 들어,

from qiskit_aer import AerSimulator
from qiskit.circuit.library import real_amplitudes
from qiskit.circuit import QuantumCircuit, QuantumRegister, ClassicalRegister
from qiskit.quantum_info import SparsePauliOp
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager

from qiskit_ibm_runtime import Session
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)
sampler = Sampler(backend=fake_manila)
result = sampler.run([isa_qc]).result()

# Run the sampler job locally using AerSimulator.
# Session syntax is supported but ignored.
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()

백엔드 데이터

backend()QiskitRuntimeService 또한, backends(), 및 least_busy() 과 같은 메서드를 통해 사용할 대상 백엔드를 조회할 수 있습니다. 이 메서드들은 백엔드를 설명하는 메서드와 속성을 포함하는 하나 이상의 IBMBackend 인스턴스를 반환합니다.


추가 정보

계정 초기화

IBM Quantum Compute 서비스를 이용하려면 먼저 계정을 초기화해야 합니다. 이는 사용자의 계정 인증 정보를 사용하여 인스턴스를 QiskitRuntimeService 초기화함으로써 이루어집니다. 매번 인증 정보를 전달하고 싶지 않다면, 이 메서드를 QiskitRuntimeService.save_account() 사용하여 인증 정보를 디스크에 저장할 수 있습니다.

IBM Quantum Compute IBM Cloud 에서 이용할 수 있으며, 또는 channel="ibm_cloud" 을 사용하여 채널을 지정할 수 있습니다 channel="ibm_quantum_platform".

IBM Quantum Compute 채용 정보

Sampler 메서드나 Estimatorrun() 사용하여 기본 함수를 호출하면, 인스턴스가 RuntimeJobV2 반환됩니다. RuntimeJobV2.cancel()RuntimeJobV2.status()이 클래스에는, RuntimeJobV2.result(), 및 과 같은 모든 기본 작업 메서드가 포함되어 있습니다.

로깅

qiskit-ibm-runtime qiskit_ibm_runtime 로거를 사용합니다.

두 가지 환경 변수를 사용하여 로깅을 제어할 수 있습니다:

  • QISKIT_IBM_RUNTIME_LOG_LEVEL: 사용할 로그 수준을 지정합니다.

    잘못된 레벨이 설정된 경우 로그 레벨은 기본적으로 WARNING 로 설정됩니다. 유효한 로그 수준은 DEBUG, INFO, WARNING, ERROR, CRITICAL (대소문자 구분 없음)입니다. 환경 변수가 설정되어 있지 않으면 상위 로거의 레벨이 사용되며, 기본값은 WARNING 입니다.

  • QISKIT_IBM_RUNTIME_LOG_FILE: 사용할 로그 파일의 이름을 지정합니다. 지정한 경우,

    메시지는 파일에만 기록됩니다. 그렇지 않으면 메시지가 표준 오류(일반적으로 화면)에 기록됩니다.

고급 사용을 위해 로거 자체를 수정할 수 있습니다. 예를 들어, 레벨을 WARNING 으로 수동 설정합니다:

import logging
logging.getLogger('qiskit_ibm_runtime').setLevel(logging.WARNING)

클래스

QiskitRuntimeServiceIBM Quantum Compute (구 Qiskit Runtime ) 서비스와 상호작용하기 위한 클래스입니다.
Estimator별칭 EstimatorV2
EstimatorV2EstimatorV2 IBM Quantum Compute (이전 명칭: Qiskit Runtime )의 기본 함수.
Sampler별칭 SamplerV2
SamplerV2SamplerV2 IBM Quantum Compute (이전 명칭: Qiskit Runtime )의 기본형.
ExecutorQuantumProgram\s를 실행하기 위한 클래스.
SessionIBM Quantum Compute (이전 명칭: Qiskit Runtime ) 세션을 생성하는 클래스입니다.
Batch일괄 실행 모드에서 작업을 실행하기 위한 클래스입니다.
IBMBackendIBM Quantum Compute (구 Qiskit Runtime ) 백엔드와 연동되는 백엔드 클래스입니다.
RuntimeJobV2IBM Quantum Compute (이전 명칭: Qiskit Runtime ) V2 기본 연산의 표현.
RuntimeEncoderIBM Quantum Compute 서비스에서 사용하는 JSON 인코더.
RuntimeDecoderIBM Quantum Compute 서비스에서 사용하는 JSON 디코더.
이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.