Qiskit Runtime 서비스 계정 초기화하기
Qiskit Runtime을 사용하기 전에, 자격 증명을 제출(불 러오기)하여 계정을 초기화(인스턴스화)해야 합니다. 이 자격 증명은 Qiskit Runtime 서비스를 초기화할 때마다 수동으로 제출하거나, 재사용을 위해 저장해 둘 수 있습니다.
- 공용 컴퓨터 또는 신뢰할 수 없는 환경을 사용하는 경우, 대신 신뢰할 수 없는 환경에서 서비스 초기화하기의 지침을 따르세요.
- Qiskit 대신 REST API를 사용하여 연결하려면 이 지침을 따르세요.
- 필요한 경우, 이 정보를 참고하여 IBM Quantum API 엔드포인트에 접근할 수 있도록 방화벽을 구성하세요.
시작하기 전에
다음 단계를 완료했는지 확인하세요.
- IBM Cloud 계정의 구성원인지 확인하세요. 지침은 IBM Cloud 계정 설정하기를 참고하세요.
- 하나 이상의 인스턴스를 생성하거나 접근 권한이 있는지 확인하세요. 다음 단계에 따라 확인하세요.
- IBM Quantum Platform에 로그인합니다.
- 헤더의 계정 전환기에서 올바른 계정과 리전이 선택되어 있는지 확인합니다.
- 하나 이상의 인스턴스가 표시되면 이 단계는 완료된 것입니다. 그렇지 않은 경우 인스턴스를 생성하세요.
- Qiskit SDK 및 Qiskit Runtime이 설치된 활성 Python 환경에서 작업하고 있는지 확인하세요.
- Python 가상 환경을 활성화하고 가상 환경에서 Python을 실행하세요.
액세스 자격 증명 찾기
- API 키(또는 _API 토큰_이라고도 함)를 찾으세요. 대시보드에서 API 키를 생성한 후, 인증에 사용할 수 있도록 안전한 위치에 복사해 두세요. 토큰은 다시 표시되지 않습니다. 하나의 API 키로 모든 리전에 연결할 수 있다는 점에 유의하세요.
- 선택 사항: 인스턴스 페이지에서 사용할 인스턴스를 찾으세요. 해당 CRN 위에 마우스를 올려 복사 아이콘을 클릭한 후, 인스턴스를 식별하는 데 사용할 수 있도록 안전한 위치에 저장하세요.
Qiskit을 Qiskit Runtime 서비스 인스턴스에 연결하기
이 지침은 qiskit_ibm_runtime v0.42 이상을 위해 설계되었습니다. 일부 기능은 이전 버전의 qiskit_ibm_runtime에서는 지원되지 않습니다. 이 경우, channel, token, instance에 대한 값을 항상 명시적으로 또는 저장된 계정을 통해 제공해야 합니다.
다음은 Qiskit을 Qiskit Runtime 서비스 인스턴스에 연결하는 기본 코드입니다. 그러나 필요에 따라 QiskitRuntimeService 옵션을 사용자 정의하는 여러 가지 방 법이 있습니다. 이 옵션들은 다음 섹션에서 설명합니다.
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService(channel=<channel>,
token=<your-API_KEY>, # Use the 44-character API_KEY you created and saved from the IBM Quantum Platform Home dashboard
instance=<instance_CRN>)
기본 채널은 ibm_quantum_platform입니다. 거의 항상 적절한 채널이므로, 예제에는 포함되지 않습니다.
빠른 시작 경로: 자격 증명 명시적으로 지정하기
QiskitRuntimeService 인스턴스를 실행하는 가장 빠른 방법은 직접 인스턴스화 방법입니다. Qiskit Runtime 서비스를 초기화할 때마다 API 토큰(키)과 CRN(인스턴스 식별자)을 명시적으로 제공합니다. 필요한 경우 액세스 자격 증명 찾기를 참고하세요.
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService(token=<cloud_api_key>, # Use the 44-character API_KEY you created and saved from the IBM Quantum Platform Home dashboard
instance=<instance_CRN>)
이 방법은 신뢰할 수 있지만, 동일한 정보를 반복적으로 불러와야 하는 경우 번거로울 수 있습니다. 자격 증명을 여러 번 불러오는 것을 피하려면, 신뢰할 수 있는 Python 환경(예: 개인 노트북 또는 워크스테이션)에서 작업하는 경우 다음 섹션에서 설명하는 저장된 계정 자격 증명을 사용할 수 있습니다.
instance 입력 매개변수는 선택 사항이지만, 여러 인스턴스에서 단일 서비스를 사용하려는 경우가 아니라면 항상 이 정보를 제공하는 것이 권장됩니다. 이 경우에는 자동 인스턴스 선택 섹션을 참고하세요.
빠른 시작 경로: 저장된 자격 증명 지정하기
자격 증명을 이미 저장한 경우, 다음 코드를 사용하여 기본 자격 증명을 적용하세요. 자격 증명 저장 방법은 액세스 자격 증명 저장하기를 참고하세요.
from qiskit_ibm_runtime import QiskitRuntimeService
# run every time you need the service
service = QiskitRuntimeService()
...
예를 들어, 개방형 접근과 프리미엄 접근을 위해 하나 이상의 자격 증명 세트에 이름을 지정한 경우, 다음 코드를 사용하여 명명된 자격 증명 세트를 사용하세요.
from qiskit_ibm_runtime import QiskitRuntimeService
# run every time you need the service
service = QiskitRuntimeService(name="<name_of_saved_credentials>")
...
저장된 자격 증명 불러올 때 고려 사항
-
token과name으로 서비스를 초기화하면,token은 무시되고name계정의 저장된 세부 정보가 불러와집니다.다음 예제에서, 서비스는
account_A의 세부 정보를 불러오고token_B는 사용하지 않습니다.from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService(token="token_B", name="account_A") -
서비스를 초기화할 때
name과instance를 함께 제공하면, 서비스는name계정을 불러오고 동시에 지정된instance에 연결하려 시도합니다. 충돌이 있으면 경고가 발생합니다.다음 예제에서, 서비스는
account_A의 자격 증명을 불러오고 인스턴스CRN_B를 사용하려 시도합니다.account_A에 다른 인스턴스가 지정되어 있더라도 마찬가지입니다.from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService(instance="CRN_B", name="account_A") -
서비스를 초기화할 때
token또는name을 제공하지 않은 경우에만 기본 저장 계정을 불러오려 시도합니다. 그러나instance가 명시적으로 제공된 경우, 서비스는 기본 자격 증명을 사용하여 해당 인스턴스에 연결하려 시도합니다. 충돌이 있으면 경고가 발생합니다.다음 예제에서, 서비스는 기본 자격 증명을 불러오고 인스턴스
CRN_B를 사용하려 시도합니다. 기본 계정에 다른 인스턴스가 지정되어 있더라도 마찬가지입니다.from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService(instance="CRN_B") -
여러 자격 증명 세트를 저장했지만 서비스 초기화 시 하나를 지정하지 않았고 기본 저장 계정도 없는 경우, 알파벳 순서로 마지막에 오는 이름의 자격 증명이 사용됩니다.
다음 예제에서, 사용자는 "my_premium"과 "my_open"이라는 이름의 계정을 저장했지만 어느 것도 기본값으로 지정하지 않았습니다. 그런 다음 다음 코드를 사용하여 서비스를 초기화했습니다. 이 경우 "my_premium" 자격 증명이 사용됩니다.
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService() -
"401 Unauthorized" 오류가 지속적으로 발생하는 경우, API 키 대신 베어러 토큰을 사용하고 있을 수 있습니다.
인스턴스 자동 선택
서비스를 인스턴스화할 때 토큰을 제공하지만 인스턴스 CRN을 제공하지 않으면, QiskitRuntimeService는 토큰으로 식별된 계정에 인증하고 자동 인스턴스 선택을 사용하여 요청된 작업에 가장 적합한 인스턴스를 선택합니다. 계정 내에 여러 인스턴스가 있는 경우, 서비스는 요청된 리소스와 다음 QiskitRuntimeService 옵션(설정된 경우)에 따라 사용 가능한 인스턴스 중에서 자동으로 선택합니다: plans_preference, region, tags.
plans_preference: 우선시할 인스턴스 플랜 유형입니다. 예를 들어, [open]이 전달되면 개방형 플랜 인스턴스만 사용 가능합니다. 허용되는 값은open,premium,pay-as-you-go,flex,on-prem입니다.plans_preference가 지정되지 않으면 무료 플랜이 유료 플랜보다 우선합니다.region: 인스턴스 리전입니다. 허용되는 값은us-east와eu-de입니다.tags: 인스턴스 태그입니다. 태그 이름 문자열 목록을 허용합니다.
인스턴스를 자동으로 선택하도록 저장된 자격 증명을 설정할 수 있습니다.
인스턴스는 다음 순서로 찾아 사용됩니다.
- 계정에 하나의 인스턴스에만 접근 권한이 있는 경우, 기본적으로 해당 인스턴스가 선택됩니다.
- 저장된 자격 증명이 사용 중이고 자격 증명과 함께 인스턴스가 지정된 경우, 해당 인스턴스가 사용됩니다. 저장된 자격 증명 불러올 때 고려 사항을 참고하세요.
- 계정에 요청된 QPU에 접근할 수 있는 여러 인스턴스가 있는 경우, 시스템은 지정된 플랜 기본 설정을 사용하여 플랜과 인스턴스를 선택합니다. Qiskit Runtime v0.42 이상에서는 기본적으로 무료 플랜이 우선시됩니다.
- 계정이 여러 인스턴스에 접근할 수 있지만 요청된 QPU에 접근할 수 있는 인스턴스가 하나뿐인 경우, 접근 권한이 있는 인스턴스가 선택됩니다. 이 인스턴스가 무료 플랜과 연결되지 않은 경우 비용이 발생합니다.
예제
이 예제에서, 서비스는 계정에서 사용 가능한 모든 인스턴스를 검색하여 지정된 Backend에 접근할 수 있는 인스턴스를 찾습니다.
service = QiskitRuntimeService(token=<your-API_KEY>)
이 예제에서, 서비스는 EU 리전에서 계정에 사용 가능한 모든 인스턴스를 검색하여 지정된 Backend에 접근할 수 있는 인스턴스를 찾습니다.
service = QiskitRuntimeService(token=<your-API_KEY>, region="eu-de")
이 예제에서, 서비스는 계정에서 사용 가능하고 services로 태그된 모든 인스턴스를 검색하여 지정된 Backend에 접근할 수 있는 인스턴스를 찾습니다.
service = QiskitRuntimeService(token=<your-API_KEY>, tags=['services'])
이 예제에서, 서비스는 계정에서 사용 가능한 모든 프리미엄 및 개방형 인스턴스를 검색하여 지정된 Backend에 접근할 수 있는 인스턴스를 찾습니다. Backend가 프리미엄 플랜과 개방형 플랜 인스턴스 모두에 있는 경우, plans_preference에서 premium이 먼저 지정되었으므로 프리미엄 플랜 인스턴스가 우선시됩니다.
service = QiskitRuntimeService(token=<your-API_KEY>, plans_preference=['premium', 'open'])
선택된 인스턴스 확인하기
선택된 인스턴스는 경고로 반환됩니다. 또한 service.active_instance()를 실행하여 활성 인스턴스를 확인할 수 있습니다.
Qiskit Runtime을 사용한 로컬 테스트
QiskitRuntimeService 클래스는 로컬 시뮬레이션을 수행하기 위해 channel=local로 초기화할 수 있습니다. 이 경우 인증이 필요하지 않으며 token 또는 instance에 대한 값을 제공할 필요가 없습니다. 따라서 로컬 계정을 저장하는 것은 권장되지 않습니다. 대신 직접 인스턴스화를 사용할 수 있습니다.
from qiskit_ibm_runtime import QiskitRuntimeService
# Initialize for local testing
service = QiskitRuntimeService(channel="local")
다음 단계
- 인스턴스 생성 및 관리하기.
- 신뢰할 수 없는 환경에서 서비스 초기화하기.
- REST API를 사용하여 IBM Quantum Platform 사용 설정하기.
- Hello world의 단계를 따라 양자 프로그램을 작성하고 실행하세요.