Qiskit
“Qiskit”이란?
“Qiskit”이라는 이름은 양자 컴퓨터에서 프로그램을 실행하기 위한 소프트웨어 모음을 지칭하는 일반적인 용어입니다. 그중 가장 주목할 만한 것은 오픈소스 Qiskit SDK와 IBM® 양자 처리 장치(QPU)에서 작업 부하를 실행할 수 있는 런타임 환경(Qiskit Runtime을 통해 접근)입니다. 양자 기술이 발전함에 따라 Qiskit도 매년 새로운 기능을 추가하며 이 핵심 양자 소프트웨어 모음을 확장하고 있습니다.
또한, 더 넓은 Qiskit 생태계에는 여러 오픈소스 프로젝트가 포함되어 있습니다. 이러한 소프트웨어 도구들은 Qiskit 자체의 일부는 아니지만, Qiskit과 인터페이스를 이루며 유용한 추가 기능을 제공할 수 있습니다.
Qiskit 패턴의 모든 단계(문제 매핑, 하드웨어 최적화, 하드웨어 실행, 결과 후처리)가 표시됩니다. ’하드웨어 실행’을 제외한 모든 단계는 Qiskit SDK를 사용합니다. ’하드웨어 최적화’는 추가로 Qiskit Transpiler Service를 사용하며, ’하드웨어 실행’은 Qiskit Runtime Service만을 사용합니다.
IBM은 양자 컴퓨팅의 책임 있는 개발에 전념하고 있습니다. 자세한 내용과 책임 있는 양자 컴퓨팅 원칙은 책임 있는 양자 컴퓨팅 주제에서 확인할 수 있습니다.
Qiskit SDK
Qiskit SDK(패키지 이름: qiskit
)는 확장된(정적, 동적, 스케줄된) 양자 회로, 연산자, 프리미티브 수준에서 양자 컴퓨터를 다루기 위한 오픈소스 소프트웨어 개발 키트입니다. 이 라이브러리는 Qiskit의 핵심 구성 요소로, 양자 계산을 위한 가장 광범위한 도구 모음을 제공하며, 다른 많은 구성 요소가 여기에 연결됩니다.
Qiskit SDK의 가장 유용한 기능은 다음과 같습니다:
- 회로 구축 도구(qiskit.circuit): 레지스터, 회로, 명령, 게이트, 매개변수, 제어 흐름 객체를 초기화하고 조작하기 위한 도구.
- 회로 라이브러리(qiskit.circuit.library): 회로, 명령, 게이트의 방대한 범위 - 회로 기반 양자 계산의 핵심 구성 요소.
- 양자 정보 라이브러리(qiskit.quantum_info): 샘플링 노이즈 없이 정확한 계산을 통해 양자 상태, 연산자, 채널을 다루는 툴킷. 입력 관측 가능 항목을 지정하고 프리미티브 쿼리의 출력 충실도를 분석하는 데 사용.
- 트랜스파일러(qiskit.transpiler): 특정 장치 토폴로지에 맞게 양자 회로를 변환 및 적응시키고, 실제 양자 처리 장치(QPU)에서 실행을 최적화.
- 프리미티브(qiskit.primitives): Sampler와 Estimator 프리미티브의 기본 정의와 참조 구현을 포함하는 모듈로, 다양한 양자 하드웨어 제공자가 이를 기반으로 자체 구현을 파생할 수 있음. Qiskit Runtime 프리미티브에 대한 자세한 내용은 문서에서 확인 가능.
설치
Qiskit SDK 설치에 대한 자세한 소개는 설치 페이지를 확인하세요. 지금 설치할 준비가 되었다면 다음 명령어를 실행하세요:
pip install qiskit
벤치마킹과 Benchpress 패키지
벤치마킹은 개발 워크플로우의 여러 단계에서 양자 소프트웨어의 상대적 성능을 비교하는 데 중요합니다. 예를 들어, 양자 소프트웨어 벤치마킹 테스트는 회로 구축, 조작, 트랜스파일링의 속도와 품질을 평가할 수 있습니다. 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은 추가적인 고전 및 양자 컴퓨팅 자원을 활용하도록 설계되었으며, 오류 억제(error suppression)와 오류 완화(error mitigation) 같은 기술을 사용해 양자 회로 실행에서 더 높은 품질의 결과를 반환합니다. 예로는 오류 억제를 위한 동적 디커플링(dynamical decoupling), 오류 완화를 위한 판독 완화(readout mitigation)와 제로 노이즈 외삽(ZNE)이 있습니다. 이러한 옵션 설정 방법은 오류 완화 설정 페이지에서 확인할 수 있습니다.
Qiskit Runtime은 IBM 하드웨어에서 양자 프로그램을 실행하기 위해 세 가지 실행 모드(Job, Session, Batch)를 제공하며, 각각은 서로 다른 사용 사례와 양자 작업 큐에 대한 영향을 가집니다: - Job: 지정된 샷 수로 실행되는 단일 프리미티브 쿼리. - Session: 양자 컴퓨터에서 반복 작업 부하를 여러 작업으로 효율적으로 실행. - Batch: 모든 작업을 한 번에 제출해 병렬 처리. 참고: Open Plan 사용자는 세션 작업을 제출할 수 없습니다.
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 install qiskit_serverless
Qiskit Functions
Qiskit Functions(qiskit-ibm-catalog.QiskitFunctionsCatalog
)는 알고리즘 발견과 응용 프로토타이핑을 가속화하도록 설계된 추상화된 서비스입니다. Qiskit Functions Catalog를 탐색해보세요: - Circuit Functions: 트랜스파일링, 오류 억제, 오류 완화, 후처리 기술을 포함하며, 추상 회로와 원하는 측정 관측 가능 항목을 입력으로 받는 서비스. 사용자는 하드웨어 성능 관리를 신경 쓰지 않고 새로운 알고리즘과 응용을 탐구 가능. - Application Functions: 고전에서 양자로의 매핑, 하드웨어 최적화, 하드웨어 실행, 후처리를 포함한 전체 양자 워크플로우를 제공. 사용자는 산업별 친숙한 입력과 출력으로 응용 프로토타이핑 가능.
Premium Plan 회원은 IBM 제공 함수에 즉시 접근하거나 파트너가 제공하는 함수를 파트너로부터 직접 라이선스 구매 가능합니다. 카탈로그는 다음 명령어로 설치 가능:
pip install qiskit-ibm-catalog
Qiskit Transpiler as a Service
Qiskit Transpiler Service(패키지 이름: qiskit-ibm-transpiler
)는 IBM Quantum Premium Plan 사용자에게 클라우드에서 원격 트랜스파일링 기능을 제공하는 새로운 실험적 서비스입니다. 로컬 Qiskit SDK 트랜스파일러 기능 외에도, 이 서비스를 통해 트랜스파일링 작업은 IBM Quantum 클라우드 자원과 AI 기반 트랜스파일러 패스를 활용할 수 있습니다. 클라우드 기반 트랜스파일링을 Qiskit 워크플로우에 통합하는 방법은 문서에서 확인하세요.
트랜스파일러 서비스는 다음 명령어로 설치 가능:
pip install qiskit-ibm-transpiler
Qiskit Addons
Qiskit Addons는 유틸리티 규모 알고리즘 발견을 위한 연구 기능 모음입니다. 이러한 기능은 Qiskit의 고성능 기반 위에 양자 알고리즘 생성 및 실행 도구를 구축합니다. Addons는 워크플로우에 연결되어 새로운 양자 알고리즘을 확장하거나 설계하는 모듈형 소프트웨어 구성 요소입니다. 사용 가능한 Qiskit Addons 세트와 시작 방법은 문서에서 확인하세요.
관심 있는 연구 기능에 따라 여러 Addons가 있으며, 각기 pip로 설치 가능: - Sample-based Quantum Diagonalization (SQD): pip install qiskit-addon-sqd
- Approximate Quantum Compilation (AQC): pip install qiskit-addon-aqc-tensor[quimb-jax]
- Operator Backpropagation (OBP): pip install qiskit-addon-obp
- Multi-product Formulas (MPF): pip install qiskit-addon-mpf
Qiskit 생태계
Qiskit 외에도 “Qiskit” 이름을 사용하는 많은 오픈소스 프로젝트가 있으며, 이는 Qiskit 자체의 일부는 아니지만 Qiskit과 인터페이스를 이루며 핵심 Qiskit 워크플로우를 보완하는 유용한 추가 기능을 제공합니다. 일부 프로젝트는 IBM Quantum 팀이 유지 관리하며, 다른 일부는 더 넓은 오픈소스 커뮤니티에서 지원됩니다. Qiskit SDK는 모듈화되고 확장 가능한 방식으로 설계되어 개발자들이 이를 확장하는 프로젝트를 쉽게 만들 수 있습니다.
Qiskit 생태계의 인기 있는 프로젝트: - Qiskit Aer(qiskit-aer): 현실적인 노이즈 모델을 포함한 양자 컴퓨팅 시뮬레이터 패키지. 여러 시뮬레이션 방법으로 노이즈 유무에 따라 양자 회로 실행 가능. IBM Quantum 유지 관리. - qBraid SDK(qbraid): 양자 소프트웨어 및 하드웨어 제공자를 위한 플랫폼 독립적 양자 런타임 프레임워크로, 프로그램 사양 정의부터 작업 제출, 후처리 및 결과 시각화까지 양자 작업의 전체 수명 주기 관리를 간소화. qBraid 유지 관리. - mthree: M3(Matrix-free Measurement Mitigation) 측정 완화 기술을 구현하는 패키지로, 차원 축소 후 직접 LU 분해 또는 O(1) 단계로 수렴하는 전처리 반복 방법을 사용해 수정된 측정 확률을 계산하며 병렬 처리 가능. IBM Quantum 유지 관리.
Qiskit 생태계 페이지에서 프로젝트 카탈로그와 자신의 프로젝트를 추천하는 방법에 대한 정보를 확인할 수 있습니다.
Qiskit vs Cirq
입문자 입장에서 “더 전망 있는” 양자 프로그래밍 언어와 서비스를 배우고 싶다면, 몇 가지 기준을 고려해 선택할 수 있습니다: - 접근성: 배우기 쉽고 자료가 풍부한가? - 커뮤니티와 생태계: 활발한 지원과 활용도가 높은가? - 미래 전망: 산업 적용과 기술 발전 가능성이 큰가? - 하드웨어 연계: 실제 양자 컴퓨터에서 실행 가능한가?
IBM의 Qiskit과 Google의 Cirq를 중심으로 비교하면서, 입문자 관점에서 어떤 게 나을지 추천드릴게요.
1. Qiskit (IBM)
장점
- 초보자 친화적: Python 기반이라 문법이 익숙하고, Qiskit 튜토리얼과 무료 강의가 풍부합니다(예: Qiskit Textbook).
- 접근성: IBM Quantum Experience를 통해 무료로 클라우드에서 실제 양자 컴퓨터(5~127큐비트)를 사용해볼 수 있어요.
- 포괄적 생태계: Qiskit SDK, Runtime, Serverless 등으로 양자 회로 설계부터 실행, 최적화까지 모두 지원. 산업 응용(금융, 화학 등)에 강점.
- 커뮤니티: 오픈소스라 사용자와 개발자 커뮤니티가 크고, GitHub에서 활발히 업데이트됨.
- 전망: IBM은 상용화에 초점을 맞춰 2023년 1,000큐비트 이상 목표(Condor) 등 로드맵이 명확. 기업 고객 100곳 이상이 이미 활용 중.
단점
- IBM 하드웨어에 최적화되어 있어, 다른 회사(Google, Rigetti 등)의 양자 시스템과 호환성이 제한적일 수 있음.
- 혁신적인 연구보다는 실용적 응용에 더 치중.
입문자에게 좋은 이유
- 바로 시작 가능:
pip install qiskit
후 간단한 회로(예: Bell 상태)를 만들어 IBM 양자 컴퓨터에서 돌려볼 수 있어요. - 학습 곡선 완만: Python을 조금이라도 아는 사람이라면 금방 적응 가능.
- 미래 유망: 실질적인 산업 적용 사례가 늘어나고 있어 취업이나 프로젝트 기회가 많을 가능성 높음.
2. Cirq (Google)
장점
- 연구 중심: Google Quantum AI가 개발한 오픈소스 라이브러리로, Sycamore 같은 자사 하드웨어에 최적화됨. 양자 우위(Quantum Supremacy) 같은 혁신과 연계.
- 유연성: 특정 하드웨어 토폴로지와 노이즈 모델을 다루는 데 강력. 실험적 프로젝트에 적합.
- 전망: Google은 오류 정정과 확장 가능한 양자 시스템 연구에서 선도적. 장기적으로 양자 컴퓨팅의 “게임 체인저” 가능성.
- Python 기반: Qiskit처럼 Python으로 작성돼 초보자도 접근 가능.
단점
- 하드웨어 접근 제한: Google의 양자 컴퓨터는 일반인이 직접 사용하기 어렵고, 주로 시뮬레이터로 테스트해야 함.
- 문서와 자료 부족: Qiskit에 비해 튜토리얼과 커뮤니티 지원이 덜 풍부. 입문자가 혼자 배우기엔 약간 난이도 있음.
- 상용화 미진: Google은 연구 중심이라 실질적인 산업 적용 사례가 IBM보다 적음.
입문자에게 좋은 이유
- 혁신적 경험: 양자 우위와 관련된 알고리즘(랜덤 회로 샘플링 등)을 시뮬레이션하며 최첨단 기술을 접할 수 있음.
- 미래 잠재력: Google이 오류 정정과 하드웨어에서 돌파구를 내면 Cirq의 중요도가 급상승할 가능성.
비교와 추천
기준 | Qiskit (IBM) | Cirq (Google) |
---|---|---|
입문 난이도 | 쉬움 (자료 많음) | 중간 (자료 적음) |
하드웨어 접근 | 클라우드로 가능 | 시뮬레이터 위주 |
커뮤니티 | 매우 활발 | 상대적으로 작음 |
실용성 | 산업 응용 강점 | 연구 중심 |
미래 전망 | 상용화 선도 | 혁신적 돌파구 가능성 |
입문자 + 전망 중시라면: Qiskit 추천
- 왜?:
- 바로 실습 가능: IBM Quantum에서 무료로 양자 컴퓨터를 써볼 수 있어 실질적 경험을 쌓기 좋습니다.
- 취업/프로젝트 기회: 현재 기업들이 Qiskit 기반으로 양자 솔루션을 탐구 중이라 실무에서 활용도가 높아요.
- 학습 쉬움: 튜토리얼, YouTube 강의, Qiskit 캠프 등 지원이 많아 혼자 공부하기 편함.
- 안정적 전망: IBM의 상용화 로드맵(1,000큐비트 이상)이 명확하고, 금융/화학 등 실질적 응용이 진행 중.
혁신과 미래 가능성 중시라면: Cirq도 고려
- 왜?:
- Google이 하드웨어에서 큰 성과(예: 오류 정정 성공)를 내면 Cirq가 주목받을 가능성 높음.
- 연구자나 학문적 호기심이 강하다면 Google의 최첨단 작업을 따라갈 수 있음.
현실적 조언
- 첫걸음은 Qiskit: 입문자로서 양자 프로그래밍을 빠르게 익히고 실습해보려면 Qiskit이 최적입니다. 예를 들어, 1~2주 안에 간단한 양자 회로를 만들고 IBM 양자 컴퓨터에서 실행해볼 수 있어요.
- Cirq는 나중에: Qiskit으로 기본기를 다진 뒤, Google의 연구 성과나 특정 알고리즘(예: Grover, Shor)에 관심 생기면 Cirq로 확장해보세요.
- 전망 기준: 단기적으로는 Qiskit이 산업에서 더 쓰이고, 장기적으로는 Google의 하드웨어 돌파구에 따라 Cirq가 떠오를 수 있어요. 하지만 지금 시점에선 Qiskit이 더 “안전하고 유망한 선택”입니다.
시작 제안
- Qiskit 설치:
pip install qiskit
후 IBM Quantum 계정 만들어서 시작. - 무료 자료: Qiskit 공식 사이트의 “Learn” 섹션 또는 YouTube “Qiskit” 채널에서 튜토리얼 따라 하기.
- 첫 실습: Bell 상태(얽힘 회로) 만들어 IBM 양자 컴퓨터에서 돌려보기.
궁금한 점 더 있으면 말씀해주세요! Qiskit 시작하는 구체적 방법이나 Cirq와의 차이를 더 알고 싶으신가요?