Qiskit과 PennyLane
Qiskit은 IBM Quantum 생태계에서 제공되는 오픈소스 양자 컴퓨팅 SDK입니다. Python 코드로 양자 회로를 만들고, 시뮬레이터에서 먼저 검증한 뒤, IBM Quantum의 실제 백엔드나 로컬/클라우드 실행 환경으로 이어지는 흐름을 익히기 좋습니다. 회로를 명시적으로 구성하고, 게이트를 추가하고, 측정 결과를 샷 단위 확률분포로 확인하는 과정이 비교적 직관적이라서 “양자 회로가 실제로 어떻게 실행 단위로 바뀌는가”를 공부할 때 기준 도구로 삼기 좋습니다. 이 위키에서는 Qiskit을 회로 모델, 알고리즘 실습, 노이즈가 있는 실행 결과 비교, 하드웨어 백엔드 감각을 잡는 도구로 사용한다고 생각하면 됩니다.
PennyLane은 Xanadu에서 개발한 오픈소스 Python 프레임워크로, 양자 회로를 미분 가능한 계산 그래프 안에 넣어 다루는 데 강점이 있습니다. Qiskit이 “회로를 만들고 실행한다”는 감각을 잡기 좋다면, PennyLane은 변분 양자 알고리즘(VQA), 양자 머신러닝(QML), 양자화학 계산처럼 고전 최적화 루프와 양자 회로가 반복적으로 맞물리는 문제를 실험하기 좋습니다. 특히 파라미터가 들어간 회로를 정의하고, 기대값을 목적함수로 만든 뒤, 고전 옵티마이저로 파라미터를 갱신하는 흐름이 자연스럽게 표현됩니다. 이 위키에서는 PennyLane을 pQC, VQA, QML, 해밀토니언 기반 실험을 빠르게 스케치하고 수식과 코드의 연결을 확인하는 도구로 사용한다고 보면 됩니다.
도구 선택
| 도구 | 용도 |
|---|---|
| uv | Python 버전, 가상환경, 패키지 설치를 빠르게 관리 |
| Qiskit | 회로 작성, transpilation, IBM Quantum 생태계 실습 |
| PennyLane | VQA, QML, automatic differentiation, hybrid workflow |
| JupyterLab | 노트북 기반 실험 기록 |
Qiskit(IBM사 제공)은 회로와 백엔드 실행 감각을 잡기 좋고, PennyLane(Xanadu사 제공)은 변분 알고리즘과 QML 실험을 짜기 좋습니다. 둘 다 설치해도 되지만, 처음에는 같은 가상환경 안에서 충돌이 없는지 확인하며 시작합니다.
Windows PowerShell
PowerShell을 열고 프로젝트 폴더를 만듭니다.
# 실습용 프로젝트 폴더 생성
mkdir yangja-lab
cd yangja-lab
uv를 설치합니다.
# uv 설치 스크립트 실행
irm https://astral.sh/uv/install.ps1 | iex
새 터미널을 열고 Python 프로젝트를 준비합니다.
uv python install
uv init
uv venv
.venv\Scripts\Activate.ps1
# Qiskit, PennyLane, 노트북과 기본 과학계산 패키지 설치
uv add qiskit pennylane jupyterlab matplotlib numpy scipy
Jupyter를 실행합니다.
# 가상환경 안에서 JupyterLab 실행
uv run jupyter lab
PowerShell 실행 정책 문제로 activate가 막히면, activate 없이도 \texttt{uv run}을 사용하면 됩니다.
uv run python -c "import qiskit, pennylane as qml; print('ok')"
macOS / Linux
터미널에서 프로젝트 폴더를 만듭니다.
# 실습용 프로젝트 폴더 생성
mkdir yangja-lab
cd yangja-lab
uv를 설치합니다.
# uv 설치 스크립트 실행
curl -LsSf https://astral.sh/uv/install.sh | sh
shell을 다시 열거나 PATH를 갱신한 뒤 환경을 만듭니다.
uv python install
uv init
uv venv
source .venv/bin/activate
# Qiskit, PennyLane, 노트북과 기본 과학계산 패키지 설치
uv add qiskit pennylane jupyterlab matplotlib numpy scipy
Jupyter를 실행합니다.
# 가상환경 안에서 JupyterLab 실행
uv run jupyter lab
설치 확인 코드
아래 파일을 `check_env.py`로 만들고 실행합니다.
# Qiskit과 PennyLane이 같은 가상환경에서 import되는지 확인
from qiskit import QuantumCircuit
import pennylane as qml
# Qiskit: Bell pair 회로 생성
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
print(qc)
# PennyLane: 1큐비트 회전 회로의 Z 기대값 계산
dev = qml.device("default.qubit", wires=1)
@qml.qnode(dev)
def circuit(x):
qml.RX(x, wires=0)
return qml.expval(qml.PauliZ(0))
print(circuit(0.2))
# check_env.py 실행
uv run python check_env.py
Qiskit 회로 그림과 PennyLane 기대값이 출력되면 기본 환경은 준비된 것입니다.
추천 폴더 구조
# 실험 코드와 결과를 분리해두는 기본 구조
yangja-lab/
pyproject.toml
uv.lock
notebooks/
01_qiskit_bell.ipynb
02_pennylane_vqa.ipynb
src/
circuits.py
observables.py
results/
raw/
figures/
실험을 재현하려면 `pyproject.toml`과 `uv.lock`을 같이 보관합니다. 결과 그래프만 남기지 말고 실행한 코드, shots, backend, seed, package version도 함께 남기는 습관이 좋습니다.
자주 막히는 지점
- Jupyter에서 import가 안 되면 Jupyter가 같은 가상환경에서 실행 중인지 확인합니다.
- Qiskit 0.x에서 1.x/2.x 계열로 올리는 경우 기존 환경을 재사용하지 말고 새 환경을 만듭니다.
- GPU 가속이나 특수 simulator는 처음부터 붙이지 말고 기본 CPU simulator가 먼저 동작하는지 확인합니다.
- 패키지 충돌이 나면 `.venv`를 지우고 `uv sync`로 다시 만드는 편이 빠릅니다.