시작하기
이 학습에서는 Qiskit Runtime 서비스 인스턴스를 설정하고 서비스 인스턴스에 로그인하며 퀀텀 컴퓨터에서 첫 번째 작업을 실행하는 단계를 안내합니다.
새로운 IBM Quantum Platform 인터페이스가 조기 액세스 모드로 출시되었습니다. IBM Quantum 서비스와 함께 사용하기 위해 해당 인터페이스를 사용하는 것이 좋습니다. IBM Cloud 를 기반으로 구축되었기 때문에 마이그레이션이 간단합니다. 자세한 내용은 마이그레이션 가이드를 참조하십시오.
- Qiskit Runtime을 설정해야 하는 IBM Quantum 프로그램에서 업그레이드하는 엔티티인 경우, 클라우드 계정, 서비스 인스턴스를 설정하고 사용자에 대해 작업하기 위한 지시사항은 Open 플랜에서 업그레이드 를 참조하십시오.
- 조직에 더 복잡한 구조가 있는 경우, 서비스 인스턴스를 설정하고 사용자에 대해 작업하기 위한 보다 유연한 지시사항은 조직에 대한 Qiskit Runtime 계획 을 참조하십시오.
- 처음으로 Qiskit Runtime 서비스를 설정하는 개인이거나 관리자가 인스턴스에 초대한 경우에는 이 주제의 단계를 계속하십시오.
서비스 인스턴스 작성
Qiskit Runtime 서비스 인스턴스를 이미 작성했거나 관리자가 초대한 경우 다음 단계로 건너뛰십시오. 인스턴스에 대한 액세스 권한이 이미 있는지 여부를 판별하려면 IBM Cloud 인스턴스 페이지를 확인하십시오. 하나 이상의 인스턴스가 표시된 경우 Qiskit 패키지 설치 로 건너뛸 수 있습니다.
-
Qiskit Runtime 프로비저닝 페이지에서 액세스해야 하는 항목에 따라 적절한 서비스 플랜을 선택하십시오. 이러한 계획에 대한 자세한 정보는 Qiskit Runtime 계획 주제를 참조하십시오.
- Lite (사용 중단 ): Qiskit Runtime 를 시작하는 데 도움이 되는 무료 시뮬레이터 전용 플랜입니다. 회로를 효율적으로 실행하는 데 사용할 수 있는 사전 빌드된 프로그램 중 하나에 대한 예제 및 학습서에 따라 Qiskit Runtime 을 사용하는 방법을 학습합니다.
- 기준: 액세스를 위한 종량제 모델IBM QPU 및 시뮬레이터. Lite 플랜에 사용 가능한 모든 시뮬레이터에 대한 액세스를 유지하면서 실제 Quantum 하드웨어에서 실행하여 사용자 고유의 프로그램을 빌드하고 Qiskit Runtime 의 모든 이점을 활용하십시오.
-
필요한 정보를 입력한 다음, 만들기를 클릭합니다.
Qiskit 패키지 설치 또는 갱신
개발 환경에서 다음 패키지를 설치하거나 업데이트하십시오. 이를 통해 Qiskit Runtime을 사용하여 회로를 작성하고 기본 프로그램에 대해 작업할 수 있습니다. 자세한 지시사항은 Qiskit 설치 및 설정 주제를 참조하십시오. 항상 최신 버전이 되도록 Qiskit 릴리스 정보 를 정기적으로 확인하거나 이 명령을 다시 실행하십시오.
' pip install -U qiskit
'을 사용하여 키스킷 0.x 버전에서 1.0 이상으로 업그레이드할 수 없습니다. 자세한 내용과 지침은 키스킷 1.0 마이그레이션 가이드를 참조하세요.
패키지를 이미 설치한 경우에도 이러한 명령을 실행하여 최신 버전이 있는지 확인하십시오.
# Installs the latest version of the Qiskit meta-package for circuit creation.
pip install qiskit -U
# Installs the latest version of the Qiskit Runtime package, which is needed to interact with the Qiskit Runtime primitives on IBM Cloud.
pip install qiskit-ibm-runtime -U
서비스에 인증
서비스를 인증하려면 IBM Cloud API키 및 CRN을 사용하여 QiskitRuntimeService
를 호출하십시오.
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService(channel="ibm_cloud", token="<IBM Cloud API key>", instance="<IBM Cloud CRN>")
액세스 신임 정보 찾기
선택적으로 신임 정보를 디스크에 저장하십시오.
선택적으로 신임 정보를 디스크에 저장하십시오 ( $HOME/.qiskit/qiskit-ibm.json
파일에 있음). 신임 정보를 디스크에 저장하지 않는 경우 새 세션을 시작할 때마다 신임 정보를 지정해야 합니다.
신임 정보를 디스크에 저장하는 경우 나중에 QiskitRuntimeService()
를 사용하여 계정을 초기화할 수 있습니다.
from qiskit_ibm_runtime import QiskitRuntimeService
# Save account to disk and save it as the default.
QiskitRuntimeService.save_account(channel="ibm_cloud", token="<IBM Cloud API key>", instance="<IBM Cloud CRN>", name="account-name", set_as_default=True)
# Load the saved credentials
service = QiskitRuntimeService(name="account-name")
저장된 신임 정보를 업데이트해야 하는 경우 save_account
를 다시 실행하여 overwrite=True
및 업데이트된 신임 정보를 전달하십시오.
클라우드 Quantum Qiskit API 사용에 대한 지시사항은 API 문서의 인증 절을 참조하십시오.
설정 테스트
Sampler
를 사용하여 단순 회선을 실행하여 환경이 올바르게 설정되었는지 확인하십시오.
from qiskit import QuantumCircuit
from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2 as Sampler
# Create empty circuit
example_circuit = QuantumCircuit(2)
example_circuit.measure_all()
# You'll need to specify the credentials when initializing QiskitRuntimeService, if they were not previously saved.
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
sampler = Sampler(backend)
job = sampler.run([example_circuit])
print(f"job id: {job.job_id()}")
result = job.result()
print(result)
프로그램 실행
Qiskit Runtime 은 기본 프로그램 을 사용하여 퀀텀 컴퓨터와 인터페이스합니다. 다음 프로그램은 공개적으로 사용 가능합니다. V2 기본요소의 변경사항에 대해 자세히 학습하려면 V2 기본요소로 마이그레이션 을 읽으십시오.
- 샘플러: 사용자가 회로를 입력으로 지정한 다음 모든 샷에서 출력(비트 문자열)을 반환할 수 있습니다(V2 ) 또는 준확률(V1 ). 이는 사용자가 파괴적 간섭의 컨텍스트에서 다수의 관련 데이터 포인트들의 가능성을 보다 효율적으로 평가할 수 있게 한다.
- 평가자: 사용자가 회로 및 관찰 가능 항목의 목록을 지정하고 목록 간에 선택적으로 그룹화하여 지정된 매개변수 입력에 대한 기대값 및 분산을 효율적으로 평가할 수 있습니다. 사용자가 많은 알고리즘에 필요한 양자 연산자의 기대값을 효율적으로 계산하고 해석할 수 있도록 설계되었습니다.
이 예제에서는 샘플러 기본요소를 사용합니다.
# Prepare the input circuit.
from qiskit import QuantumCircuit
bell = QuantumCircuit(2)
bell.h(0)
bell.cx(0, 1)
bell.measure_all()
# Execute the circuit
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit_ibm_runtime.fake_provider import FakeManilaV2
# Run the sampler job locally using FakeManilaV2
backend = FakeManilaV2()
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
pm = generate_preset_pass_manager(backend=backend, optimization_level=1)
isa_bell = pm.run(bell)
sampler = Sampler(backend)
job = sampler.run([(isa_bell,)])
result = job.result()
pub_result = result[0]
# Get counts from the classical register "meas".
print(f" >> Counts for the meas output register: {pub_result.data.meas.get_counts()}")
ISA 입력
더 빠르고 효율적인 결과를 보장하려면 2024년 3월 1일부터 회로와 관측 가능 항목을 QPU에서 지원하는 명령어만 사용하도록 변환해야 합니다.* 명령어 세트 아키텍처(ISA)* 회로 및 관찰 가능 항목)에 제출되기 전에Qiskit Runtime 기초 요소. 회로 변환에 대한 지시사항은 이식 문서 를 참조하십시오.
이 변경사항은 다음과 같은 중요한 영향을 미칩니다.
-
특정 백엔드에서 사용 가능한 회로를 일치시키기 위해 이식이 수행되므로 반드시 백엔드를 지정해야 합니다. 백엔드를 지정하지 않으면 오류가 수신됩니다.
이전에는 백엔드를 지정하지 않으면 액세스 권한이 있는 가장 사용량이 적은 QPU가 사용되었습니다. 지금 사용량이 가장 적은 QPU를 사용하려면 다음과 유사한 코드를 사용하십시오.
backend = service.least_busy(operational=True, simulator=False)
. -
기본요소는 더 이상 레이아웃 또는 라우팅 오퍼레이션을 수행하지 않습니다. 따라서 해당 태스크를 참조하는 이식 옵션은 더 이상 적용되지 않습니다. 사용자는 여전히
optimization_level=0
를 사용하여 기본요소가 입력 회로의 최적화를 수행하지 않도록 요청할 수 있습니다.
ISA 회로 및 관찰 가능 항목을 생성하기 위한 예제 코드:
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
# Create a new circuit with two qubits (first argument) and two classical
# bits (second argument)
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
# Set up six different observables.
observables_labels = ["ZZ", "ZI", "IZ", "XX", "XI"]
from qiskit.quantum_info import SparsePauliOp
observables = [SparsePauliOp(label) for label in observables_labels]
# Convert to an ISA circuit and layout-mapped observables.
pm = generate_preset_pass_manager(backend=backend, optimization_level=1)
isa_circuit = pm.run(qc)
observables = [
observable.apply_layout(isa_circuit.layout) for observable in observables
]
다음 단계
- API 참조를 보십시오.
- IBM Quantum Computing에 대해 알아보십시오.