IBM Quantum Composer
무엇인가요?
IBM Quantum® Composer는 드래그 앤 드롭으로 양자 Circuit을 구성하고 양자 하드웨어에서 실행할 수 있는 그래픽 양자 프로그래밍 도구입니다.
무엇을 할 수 있나요?
Qubit 상태 시각화
Circuit의 변경 사항이 Qubit 상태에 어떤 영향을 미치는지 확인할 수 있습니다. 인터랙티브 q-구(q-sphere) 형태로 표시되거나, 측정 확률 또는 상태벡터 시뮬레이션을 보여주는 히스토그램으로 나타납니다.
양자 하드웨어에서 실행
실제 양자 하드웨어에서 Circuit을 실행하여 장치 노이즈의 영향을 이해할 수 있습니다.
코드 자동 생성
코드를 직접 작성하는 대신, Composer로 만든 Circuit과 동일하게 동작하는 OpenQASM 또는 Python 코드를 자동으로 생성할 수 있습니다.
인터페이스 둘러보기
IBM Quantum Composer는 양자 처리 장치(QPU)에서 양자 Circuit을 구성, 시각화, 실행할 수 있는 커스터마이즈 가능한 도구 모음을 제공합니다. 각 창의 "더 보기" 메뉴를 통해 추가 도구와 작업에 접근할 수 있습니다.
-
작업 카탈로그(Operations catalog) - 양자 Circuit의 구성 요소입니다. 이 Gate 및 기타 작업을 그래픽 Circuit 편집기로 드래그 앤 드롭하세요. 서로 다른 유형의 Gate는 색상별로 그룹화되어 있습니다. 예를 들어, 고전 Gate는 진한 파란색, 위상 Gate는 밝은 파란색, 비유니터리 연산은 회색으로 표시됩니다.
사용 가능한 Gate와 작업에 대해 알아보려면 작업을 우클릭하고 Info를 선택하여 정의를 읽어보세요.
-
코드 편집기(Code editor) - View 메뉴를 사용하여 코드 편집기를 열거나 닫을 수 있습니다. 코드 편집기에서는 Circuit의 OpenQASM 또는 Qiskit 코드를 볼 수 있습니다. OpenQASM 코드는 편집 가능하지만, Qiskit 코드는 읽기 전용입니다.
-
그래픽 Circuit 편집기(Graphical circuit editor) - Circuit을 구성하는 곳입니다. 양자 레지스터를 구성하는 수평 Qubit "와이어"에 Gate 및 기타 작업을 드래그 앤 드롭하세요.
와이어에서 Gate를 제거 하려면 해당 Gate를 선택하고 휴지통 아이콘을 클릭하세요.
편집을 지원하는 Gate의 파라미터 및 설정을 편집하려면 그래픽 편집기에서 Gate를 선택하고 Edit를 클릭하세요.
-
툴바(Toolbar) - 자주 사용하는 도구에 접근할 수 있습니다. 작업 취소 및 다시 실행, Gate 정렬 변경, 검사 모드 전환 등이 가능합니다. 검사 모드에서는 Circuit 연산이 진행됨에 따라 Qubit 상태를 단계별로 볼 수 있습니다. 자세한 내용은 Circuit 단계별 검사를 참고하세요.
-
위상 디스크(Phase disks) - 복소 평면에서 Qubit 상태 벡터의 위상은 다이어그램 중심에서 회색 디스크 가장자리까지 뻗어 있는 선으로 나타납니다(중심점을 기준으로 반시계 방향으로 회전합니다).
View 메뉴를 사용하여 위상 디스크를 표시하거나 숨길 수 있습니다.
-
시각화(Visualizations) - 시각화는 Circuit을 구성하면서 특성을 나타냅니다. 단일 샷 상태벡터 시뮬레이터를 사용하며, 이는 "Run circuit" 설정에서 지정한 QPU와 다릅니다. 시각화는 추가한 측정 작업을 무시한다는 점에 유의하세요. 지정된 Backend에서 결과를 얻으려면 로그인 후 Run circuit을 클릭하세요.
자세한 내용은 시각화 섹션을 참고하세요.
양자 Circuit 구성, 편집 및 검사
나중에 Circuit 작업을 계속하려면 현재 Composer 세션을 종료하기 전에 반드시 Circuit 파일을 다운로드하여 로컬에 저장해 두세요. 오른쪽 상단의 "Save file" 링크를 사용하거나 File 메뉴에서 "Save file"을 선택하세요. Circuit 작업을 다시 시작할 준비가 되면 File 메뉴에서 "Upload .qasm file"을 선택하고, 로컬 드라이브에서 Circuit 파일을 찾아 Open을 클릭하세요.
1. IBM Quantum Composer 열기
- (선택 사항) IBM Quantum에 현재 로그인되어 있지 않은 경우, 오른쪽 상단에서 Sign in을 선택하세요. 그런 다음 로그인하거나 Create an IBM Cloud account를 선택할 수 있습니다.
로그인하지 않으면 시각화는 최대 4개의 Qubit에 대한 시뮬레이션 결과를 자동으로 표시합니다. 양자 컴퓨터에서 Circuit을 실행하거나 4개 이상의 Qubit을 가진 Circuit을 시각화하려면 반드시 로그인해야 합니다.
-
학습 페이지 탐색 메뉴의 링크를 클릭하여 IBM Quantum Composer를 여세요. 작업 공간에 제목 없는 빈 Circuit이 표시됩니다. 새 Circuit을 만들거나 .qasm 파일을 업로드하여 이미 만든 Circuit 작업을 계속할 수 있습니다.
-
Untitled circuit이라는 텍스트를 클릭하고 Circuit 이름을 입력하여 이름을 지정하세요. 체크마크를 클릭하여 이름을 저장하세요.
-
(선택 사항) 작업 공간을 커스터마이즈하세요:
- View 메뉴를 사용하여 기본 테마에서 단색 테마로 변경할 수 있습니다. 작업 공간에 포함할 패널을 선택한 다음, 각 패널의 오른쪽 모서리에 있는 메뉴를 사용하여 추가 커스터마이즈 옵션에 접근할 수 있습니다. 위상 디스크 표시 또는 숨김, Circuit에서 Qubit 정렬 방식 선택, 작업 공간을 기본값으로 재설정하는 옵션도 View 메뉴에 있습니다.
- 하단 오른쪽 모서리의 footer에서 어두운 테마와 밝은 테마 간에 전환할 수 있습니다.
Circuit을 구성하려면 드래그 앤 드롭으로 작업 추가하거나, 코드 편집기에 OpenQASM 코드 입력을 사용할 수 있습니다.
2. 드래그 앤 드롭으로 Circuit 구성하기
작업 카탈로그
작업 카탈로그에서 양자 및 고전 레지스터로 작업을 드래그 앤 드롭하세요. 검색 아이콘을 클릭하고 검색창에 검색어를 입력하면 작업을 빠르게 찾을 수 있습니다.
작업 패널 오른쪽 상단의 아이콘을 클릭하여 작업 카탈로그를 접거나 펼칠 수 있습니다. 옆에 있는 아이콘을 클릭하면 카탈로그를 그리드 보기와 목록 보기로 전환할 수 있습니다.
작업 아이콘을 우클릭하고 Info를 선택하면 QASM 참조와 함께 해당 작업의 정의를 볼 수 있습니다.
실행 취소 또는 다시 실행하려면 툴바의 곡선 화살표를 사용하세요.
정렬
Freeform alignment를 선택하면 Circuit 어디에나 작업을 배치할 수 있습니다. 더 간결한 Circuit 보기를 위해 Left alignment를 선택하세요. 작업이 실행되는 순서를 보려면 Layers alignment를 선택하세요. 이 옵션은 왼쪽 정렬을 적용하고 왼쪽에서 오른쪽, 위에서 아래 순서로 실행 순서를 나타내는 열 구분선을 추가합니다.
작업을 Circuit에 배치한 후에도 드래그 앤 드롭으로 새 위치로 이동할 수 있습니다.
복사 및 붙여넣기
작업을 클릭하고 컨텍스트 메뉴의 아이콘을 사용하여 복사 및 붙여넣기 하세요.
여러 작업 선택
여러 작업을 선택하여 복사 및 붙여넣기하거나, 새 위치로 드래그하거나, 작업 카탈로그에 표시되고 단일 Gate로 기능하는 사용자 정의 유니터리 작업으로 그룹화할 수 있습니다.
두 개 이상의 작업을 선택하려면 커서를 작업 중 하나의 바로 바깥쪽에 놓고 클릭한 채로 영역을 가로질러 드래그하세요. 개별 작업을 Shift+클릭하여 선택하거나 선택 해제할 수 있습니다. 점선이 선택 중인 작업 집합의 윤곽을 나타내고, 실제로 선택에 포함된 각 작업은 파란색으로 윤곽이 표시됩니다.
예를 들어, 다음 이미지에서 q1의 Hadamard Gate와 CX Gate가 선택되어 있습니다. q0의 Hadamard Gate는 선택되지 않았습니다.
컨텍스트 메뉴에서 Copy를 선택하여 그룹을 복사하세요.
작업 그룹을 붙여넣으려면 Circuit을 우클릭하고 Paste를 선택하세요.
그룹 기능으로 사용자 정의 작업 만들기
여러 작업을 그룹화하여 사용자 정의 작업으로 저장하려면, 먼저 위에서 설명한 대로 작업을 선택한 다음 컨텍스트 메뉴에서 Group을 선택하세요. 사용자 정의 작업의 이름을 지정하거나 기본 이름을 그대로 사용할 수 있습니다. OK를 클릭하면 사용자 정의 작업이 Circuit과 작업 카탈로그 모두에서 단일 박스로 표시됩니다.
이제 Circuit 전체에서 새 작업을 드래그 앤 드롭할 수 있습니다. 이 작업은 현재 Circuit에만 저장되며 다른 Circuit의 작업 카탈로그에는 표시되지 않습니다.
OpenQASM 코드 편집기에서 직접 사용자 정의 작업을 만들 수도 있습니다. 자세한 내용은 OpenQASM에서 사용자 정의 작업 만들기를 참고하세요.
사용자 정의 또는 미리 정의된 작업 그룹 해제
사용자 정의 또는 미리 정의된 작업 내의 Gate를 그룹 해제하려면, Composer에서 해당 작업을 클릭하고 컨텍스트 메뉴에서 Ungroup을 선택하세요. 이제 개별 작업을 따로 이동할 수 있습니다. 작업을 그룹 해제하면 이전 그룹의 각 요소가 독립적으로 실행되므로, 그룹으로 묶여 있을 때와 실행 순서가 달라질 수 있습니다.
작업 정의 펼치기
사용자 정의 또는 미리 정의된 작업을 그룹 해제하지 않고 구성 작업을 보려면, 컨텍스트 메뉴에서 Expand definition을 클릭하여 정의 Gate를 확인하세요. 아이콘을 다시 클릭하면 정의를 접을 수 있습니다.
사용자 정의 작업 이름 변경 또는 삭제
사용자 정의 작업의 이름을 변경하거나 삭제하려면, 작업 카탈로그에서 해당 작업을 우클릭하고 Rename 또는 Delete를 선택하세요. 작업 카탈로그에서 사용자 정의 작업을 삭제하면 Circuit에 있는 해당 작업의 모든 인스턴스도 삭제됩니다.
Circuit 자체에서 사용자 정의 작업을 삭제해도 작업 카탈로그에서는 삭제되지 않습니다. 카탈로그에서 사용자 정의 작업을 삭제하려면 우클릭 후 Delete를 선택하는 방법만 사용할 수 있습니다.
레지스터 추가 또는 제거
양자 또는 고전 레지스터를 추가하거나 제거하려면 Edit → Manage registers를 클릭하세요. Circuit의 Qubit 또는 비트 수를 늘리거나 줄이고 레지스터 이름을 변경할 수 있습니다. Ok를 클릭하여 변경 사항을 적용하세요. 레지스터 이름(예: q[0])을 클릭하고 컨텍스트 메뉴의 옵션을 사용하여 레지스터나 Qubit을 빠르게 추가하거나 삭제할 수도 있습니다.
조건부 추가
Gate에 조건부를 추가하려면 if 작업을 해당 Gate로 드래그하고 자동으로 열리는 Edit operation 패널에서 파라미터를 설정하세요. Gate를 더블클릭하여 Edit operation 패널에 접근한 후 그 방법으로 조건부 파라미터를 설정할 수도 있습니다.
제어 수정자 추가
제어 수정자는 원래 작업이 제어 Qubit의 상태에 따라 결정되는 Gate를 생성합니다. 자세한 내용은 작업 카탈로그에서 제어 수정자 기호를 우클릭한 다음 Info를 클릭하세요.
제어 수정자를 Circuit의 Gate로 드래그하면 제어가 추가됩니다. 제어 Qubit에 점이 나타나고 대상 Qubit과 선으로 연결됩니다. 어느 Qubit이 제어인지 또는 대상인지 편집하려면 Gate를 클릭하고 Edit operation 아이콘을 선택하거나 Gate를 더블클릭하여 Edit operation 패널을 열고 파라미터를 지정하세요. Edit operation 패널에서 Qubit 이름 옆의 x를 클릭하여 Qubit에서 제어를 제거할 수도 있습니다.
Circuit 전체에서 위상 디스크로 시각화
Circuit의 어느 지점에서든 모든 Qubit의 상태를 시각화하려면, 작업 카탈로그에서 위상 디스크 아이콘을 드래그하여 Circuit의 원하는 위치에 배치하세요. 배리어 작업 열과 위상 디스크 열이 추가됩니다(Qubit당 배리어 작업과 위상 디스크가 하나씩). 각 위상 디스크 위에 마우스를 올리면 Circuit의 해당 지점에서 Qubit의 상태를 읽을 수 있습니다. 위상 디스크를 추가해도 Circuit이 변경되지 않으며, 이는 단순히 시각화 도구입니다.
위상 디스크 시각화에 대한 자세한 내용은 여기를 참고하세요.
Circuit 이미지 내보내기
Circuit 이미지를 내보내려면 File → Export circuit image를 선택하세요. 내보내기 옵션 창이 열리며, 테마(밝게, 어둡게, 검은 배경에 흰 색, 흰 배경에 검은 색), 형식(.svg 또는 .png), 줄 바꿈 적용 여부를 선택할 수 있습니다. 옵션을 선택한 후 Export를 클릭하세요.
3. OpenQASM 코드로 Circuit 만들기
IBM Quantum Composer는 현재 OpenQASM 2.0을 지원합니다.
- 코드 편집기를 열려면 보기 → 패널 → 코드 편집기를 클릭하세요.
- Gate 및 기타 연산의 OpenQASM 참조는 Composer 연산 용어집을 참조하세요.
- 사용자 정의 연산을 직접 정의할 수 있습니다. OpenQASM에서 사용자 정의 연산 만들기를 참조하세요.
- 예시 코드를 포함하여 OpenQASM 언어 사용에 대한 자세한 내용은 OpenQASM 소개 가이드를 참조하거나, 원본 연구 논문인 Open Quantum Assembly Language를 읽어보세요. 논 문에 수록된 OpenQASM 언어 구문 표는 아래에 재현되어 있습니다. OpenQASM 문법은 논문의 부록 A에서 확인할 수 있습니다.
| 구문 | 설명 | 예시 |
|---|---|---|
OPENQASM 2.0; | OpenQASM 형식의 파일임을 나타냅니다 ([a] 참조) | OPENQASM 2.0; |
qreg name[size]; | 이름이 지정된 Qubit 레지스터 선언 | qreg q[5]; |
creg name[size]; | 이름이 지정된 비트 레지스터 선언 | creg c[5]; |
include "filename"; | 다른 소스 파일을 열고 파싱 | include "qelib1.inc"; |
gate name(params) qargs | 유니타리 Gate 선언 | (논문 본문 참조) |
opaque name(params) qargs; | 불투명(opaque) Gate 선언 | (논문 본문 참조) |
// comment text | 해당 줄을 주석 처리 | // oops! |
U(theta,phi,lambda) qubit|qreg; | 내장 단일 Qubit Gate 적용 ([b] 참조) | U(pi/2,2*pi/3,0) q[0]; |
CX qubit|qreg,qubit|qreg; | 내장 CNOT Gate 적용 | CX q[0],q[1]; |
measure qubit|qreg -> bit|creg; | 기저에서 측정 수행 | measure q -> c; |
reset qubit|qreg; | Qubit을 상태로 초기화 | reset q[0]; |
gatename(params) qargs; | 사용자 정의 유니타리 Gate 적용 | crz(pi/2) q[1],q[0]; |
if(creg==int) qop; | 조건부 양자 연산 적용 | if(c==5) CX q[0],q[1]; |
barrier qargs; | 이 소스 줄을 가로질러 변환 방지 | barrier q[0],q[1]; |
[a] 이 줄은 파일의 첫 번째 비주석 줄로 나타나야 합니다.
[b] theta, phi, lambda 파라미터는 파라미터 표현식으로 지정됩니다. 자세한 내용은 논문 5페이지 및 부록 A를 참조하세요.