Qiskit 소개
"Qiskit"은 양자 컴퓨터에서 프로그램을 실행하기 위한 소프트웨어 모음을 총칭하는 용어입니다. 이 소프트웨어 도구들 중 가장 주목할 만한 것은 오픈소스 Qiskit SDK와, IBM® 양자 처리 장치(QPU)에서 워크로드를 실행할 수 있는 런타임 환경(Qiskit Runtime을 통해 접근)입니다. 양자 기술이 발전함에 따라 Qiskit도 함께 발전하며, 매년 이 핵 심 양자 소프트웨어 모음을 확장하는 새로운 기능이 출시됩니다.
또한 많은 오픈소스 프로젝트들이 더 넓은 Qiskit 생태계의 일부를 이루고 있습니다. 이러한 소프트웨어 도구들은 Qiskit 자체의 일부가 아니라, Qiskit과 연동되어 유용한 추가 기능을 제공합니다.
IBM은 양자 컴퓨팅의 책임감 있는 개발에 전념하고 있습니다. 책임감 있는 양자 컴퓨팅 항목에서 자세한 내용을 확인하고 책임 있는 양자 원칙을 검토해 보세요.
Qiskit SDK
Qiskit SDK(패키지 이름 qiskit)는 확장된(정적, 동적, 스케줄된) 양자 Circuit, 연산자, 프리미티브 수준에서 양자 컴퓨터를 다루기 위한 오픈소스 SDK입니다. 이 라이브러리는 Qiskit의 핵심 구성 요소로, Qiskit 이름 하의 패키지 중 가장 크고 양자 계산을 위한 가장 광범위한 도구 모음을 갖추고 있으며, 많은 다른 구성 요소들이 이것과 연동됩니다.
Qiskit SDK의 가장 유용한 기능 중 일부는 다음과 같습니다:
-
Circuit 구축 도구 (
qiskit.circuit) - 레지스터, Circuit, 명령어, Gate, 파라미터, 제어 흐름 객체를 초기화하고 조작하기 위한 도구입니다. -
Circuit 라이브러리 (
qiskit.circuit.library) - Circuit 기반 양자 계산의 핵심 구성 요소인 다양한 Circuit, 명령어, Gate를 제공합니다. -
양자 정보 라이브러리 (
qiskit.quantum_info) - 정확한 계산(샘플링 노이즈 없음)을 사용하여 양자 상태, 연산자 및 채널을 다루기 위한 툴킷입니다. 이 모듈을 사용하여 입력 관측값을 지정하고 프리미티브 쿼리 출력의 충실도를 분석하세요. -
Transpiler (
qiskit.transpiler) - 특정 디바이스 토폴로지에 맞게 양자 Circuit을 변환 및 적용하고, 실제 양자 처리 장치(QPU)에서의 실행을 최적화하기 위한 도구입니다. -
Primitives (
qiskit.primitives) - Sampler 및 Estimator 프리미티브의 기본 정의와 참조 구현을 포함하는 모듈로, 다양한 양자 하드웨어 제공업체가 자체 구현을 파생할 수 있습니다. Qiskit Runtime 프리미티브에 대한 자세한 내용은 문서를 참조하세요.
설치
Qiskit SDK 설치에 대한 더 자세한 소개는 설치 페이지를 확인하세요. 지금 바로 설치할 준비가 되었다면 다음을 실행하세요:
pip install qiskit
벤치마킹과 Benchpress 패키지
벤치마킹은 개발 워크플로의 여러 단계에서 양자 소프트웨어의 상대적인 성능을 비교하는 데 중요합니다. 양자 소프트웨어의 벤치마킹 테스트는 예를 들어 Circuit 구축, 조작 및 Transpiler 처리 속도와 품질을 살펴볼 수 있습니다. IBM Quantum은 가능한 가장 성능이 뛰어난 SDK를 제공하기 위해 노력하고 있으며, 이를 위해 Qiskit SDK는 선도적인 대학, 국가 연구소, IBM 연구원들이 개발한 1,000개 이상의 테스트로 벤치마킹됩니다. 이러한 테스트에 사용되는 벤치마킹 스위트인 Benchpress가 이제 오픈소스 패키지로 제공됩니다. 이제 Benchpress 패키지를 사용하여 양자 SDK 성능에 대한 자체 분석을 수행할 수 있습니다.
Qiskit Runtime
Qiskit Runtime은 IBM Quantum® 하드웨어에서 양자 계산을 실행하기 위한 클라우드 기반 서비스입니다. qiskit-ibm-runtime 패키지는 해당 서비스의 클라이언트이며, Qiskit IBM Provider의 후속 제품입니다. Qiskit Runtime 서비스는 양자 계산을 간소화하고 IBM Quantum 하드웨어를 위한 Qiskit 프리미티브의 최적 구현을 제공합니다. Qiskit Runtime 프리미티브를 시작하려면 문서를 방문하세요.
Qiskit Runtime은 양자 Circuit을 양자 프로세서에서 실행할 때 더 높은 품질의 결과를 반환하기 위해 오류 억제 및 오류 완화와 같은 기법을 포함한 추가적인 고전 및 양자 컴퓨팅 자원을 사용하도록 설계되었습니다. 예시로는 오류 억제를 위한 동적 디커플링, 오류 완화를 위한 읽기 완화 및 제로 노이즈 외삽(ZNE)이 있습니다. 오류 완화 구성 페이지에서 이러한 옵션을 구성하는 방법을 알아보세요.
Qiskit Runtime에는 IBM 하드웨어에서 양자 프로그램을 실행하기 위한 세 가지 실행 모드도 포함되어 있습니다: Job, Session, Batch, 각각 사용 사례와 양자 작업 대기열에 대한 영향이 다릅니다. Job은 지정된 샷 수로 실행할 수 있는 프리미티브에 대한 단일 쿼리입니다. Session을 사용하면 양자 컴퓨터에서 반복적인 워크로드로 여러 작업을 효율적으로 실행할 수 있습니다. Batch 모드를 사용하면 모든 작업을 한 번에 제출하여 병렬 처리할 수 있습니다. Open Plan 사용자는 Session 작업을 제출할 수 없습니다.
Qiskit Runtime을 빠르게 설치하려면 다음 명령을 실행하세요:
pip install qiskit-ibm-runtime
양자 프로그램 구축을 위한 개발 환경 설정에 대한 자세한 내용은 설치 페이지에서 확인할 수 있습니다.
Qiskit Runtime은 오픈소스인가요?
간단히 말하면, 전부는 아닙니다. IBM Quantum 디바이스에서 양자 프로그램을 실행하는 기술적인 세부 사항(오류 완화 및 억제 포함)을 처리하는 Qiskit Runtime 서비스 소프트웨어는 오픈소스가 아닙니다. 그러나 Qiskit Runtime 클라이언트(사용자가 Qiskit Runtime 서비스에 접근하기 위한 인터페이스), 서버 측에서 실행되는 Qiskit SDK, 그리고 오류 완화에 사용되는 일부 소프트웨어는 오픈소스입니다. Qiskit 오픈소스 활동에 참여하려면 GitHub 조직 github.com/Qiskit 및 github.com/Qiskit-Extensions를 방문하세요.
Qiskit Serverless
유틸리티 규모의 양자 애플리케이션을 만들려면 일반적으로 다양한 컴퓨팅 자원 요구사항이 필요합니다. Qiskit Serverless(qiskit-ibm-catalog.QiskitServerless)는 양자-고전 자원 전반에 걸쳐 워크로드를 실행하기 위한 간단한 인터페이스를 제공합니다. 여기에는 IBM Quantum Platform에 프로그램을 배포하고 원격으로 워크로드를 실행하는 것은 물론, 멀티 클라우드 및 양자 중심 슈퍼컴퓨팅 사용 사례를 위한 손쉬운 자원 관리가 포함됩니다. 이 도구 모음을 사용하는 방법에 대해서는 Qiskit Serverless 문서에서 자세히 알아보세요:
- 전처리 및 후처리와 같은 고전적인 작업 병렬화
- 노트북이 꺼져 있어도 클라우드에서 장기 실행 워크로드 유지
- 클라우드에 재사용 가능한 프로그램 배포
Qiskit Serverless를 바로 사용하려면 pip으로 설치하세요:
pip install qiskit_serverless
Qiskit Functions
Qiskit Functions(qiskit-ibm-catalog.QiskitFunctionsCatalog)는 알고리즘 발견과 애플리케이션 프로토타이핑을 가속화하도록 설계된 추상화된 서비스입니다. Qiskit Functions 카탈로그를 살펴보세요:
- Circuit 함수: 추상 Circuit과 원하는 측정 관측값을 입력으로 받아 Transpiler 처리, 오류 억제, 오류 완화, 후처리 기법을 포함하는 서비스입니다. Circuit 함수를 통해 사용자는 Transpiler 처리나 양자 하드웨어 성능을 관리할 필요 없이 새로운 알고리즘과 애플리케이션을 발견할 수 있습니다.
- 애플리케이션 함수: 고전에서 양자로의 매핑, 하드웨어 최적화, 하드웨어 실행, 후처리에 이르는 전체 양자 워크플로를 포함하는 서비스입니다. 사용자는 도메인에 익숙한 입출력으로 산업 애플리케이션을 프로토타이핑할 수 있습니다.
Premium Plan, Flex Plan, On-Prem(IBM Quantum Platform API를 통한) Plan 회원은 IBM이 제공하는 함수에 바로 접근하거나, 파트너가 제공하는 함수에 대한 라이선스를 해당 파트너로부터 직접 구매할 수 있습니다.
카탈로그는 pip으로 설치할 수 있습니다:
pip install qiskit-ibm-catalog
Qiskit Transpiler Service
Qiskit Transpiler Service(패키지 이름 qiskit-ibm-transpiler)는 IBM Quantum Premium Plan, Flex Plan, On-Prem(IBM Quantum Platform API를 통한) Plan 사용자에게 클라우드에서 원격 Transpiler 처리 기능을 제공하는 새로운 실험적 서비스입니다. 로컬 Qiskit SDK Transpiler 기능에 더하여, 이 서비스를 사용하면 IBM Quantum 클라우드 자원과 AI 기반 Transpiler 패스를 활용하여 Transpiler 처리 작업을 수행할 수 있습니다. Qiskit 워크플로에 클라우드 기반 Transpiler 처리를 통합하는 방법에 대해 자세히 알아보려면 문서를 확인하세요.
Transpiler 서비스는 pip으로 설치할 수 있습니다:
pip install qiskit-ibm-transpiler
Qiskit 애드온
Qiskit 애드온은 유틸리티 규모의 알고리즘 발견을 위한 연구 기능의 모음입니다. 이러한 기능들은 양자 알고리즘 생성 및 실행을 위한 Qiskit의 고성능 기반 도구를 바탕으로 구축됩니다. 애드온은 새로운 양자 알고리즘을 확장하거나 설계하기 위해 워크플로에 연결되는 모듈식 소프트웨어 구성 요소입니다. 사용 가능한 Qiskit 애드온 세트와 시작하는 방법에 대해 자세히 알아보려면 문서를 방문하세요.
관심 있는 연구 기능에 따라 여러 가지 애드온이 있습니다. 각각 pip으로 설치할 수 있습니다.
pip install qiskit-addon-sqd
pip install qiskit-addon-aqc-tensor[quimb-jax]
pip install qiskit-addon-obp
pip install qiskit-addon-mpf
Qiskit 생태계
Qiskit 너머에는 "Qiskit"이라는 이름을 사용하지만 Qiskit 자체의 일부가 아닌 많은 오픈소스 프로젝트들이 있습니다. 이 프로젝트들은 Qiskit과 연동되어 핵심 Qiskit 워크플로를 보완하는 유용한 추가 기능을 제공할 수 있습니다. 이 프로젝트들 중 일부는 IBM Quantum 팀에 의해 유지 관리되며, 다른 것들은 더 넓은 오픈소스 커뮤니티에 의해 지원됩니다. Qiskit SDK는 개발자들이 기능을 확장하는 이러한 프로젝트를 쉽게 만들 수 있도록 모듈식이고 확장 가능한 방식으로 설계되었습니다.
Qiskit 생태계의 인기 있는 프로젝트로는 다음이 있습니다:
- Qiskit Aer (
qiskit-aer) - 현실적인 노이즈 모델을 갖춘 양자 컴퓨팅 시뮬레이터 패키지입니다. 여러 가지 다양한 시뮬레이션 방법을 사용하여 노이즈 유무에 관계없이 양자 Circuit을 실행하기 위한 인터페이스를 제공합니다. IBM Quantum에서 유지 관리합니다. - qBraid SDK (
qbraid) - 양자 소프트웨어와 하드웨어 제공업체 모두를 위한 플랫폼 독립적인 양자 런타임 프레임워크로, 프로그램 사양 정의부터 작업 제출, 결과의 후처리 및 시각화에 이르는 양자 작업의 전체 수명 주기 관리를 간소화하도록 설계되었습니다. qBraid에서 유지 관리합니다. - mthree
mthree- 차원 축소 단계에 이어 직접 LU 분해 또는 명목상 O(1) 단계로 수렴하고 병렬로 계산할 수 있는 전처리 반복 방법을 사용하여 수정된 측정 확률을 해결하는 측정 완화 기법인 M3(행렬 없는 측정 완화)를 구현하기 위한 패키지입니다. IBM Quantum에서 유지 관리합니다.
Qiskit 생태계 페이지에서 프로젝트 카탈로그와 자신의 프로젝트를 추천하는 방법에 대한 정보를 찾을 수 있습니다.
다음 단계
- Qiskit Circuit 라이브러리에서 사용 가능한 Circuit 및 명령어 라이브러리에 대해 알아보세요.
- Transpiler 섹션에서 Qiskit Transpiler와 다양한 Transpiler 처리 옵션에 대해 읽어보세요.
- Qiskit 프리미티브를 사용하여 양자 프로그래밍을 간소화하는 방법을 알아보세요.