양자 컴퓨팅 구현을 위해서 무엇이 필요할까?
양자 컴퓨팅은 현대 정보 처리의 한계를 뛰어넘을 잠재력을 지닌 혁신적인 기술이다. 이러한 양자 컴퓨터를 실제로 구현하기 위해서는 몇 가지 핵심적인 물리적 요구 사항이 충족되어야 한다. IBM T.J. 왓슨 연구 센터의 데이비드 디빈센조(David P. DiVincenzo)는 2000년에 양자 컴퓨터 구축을 위한 7가지 기준을 제시했으며, 이는 현재까지도 양자 컴퓨팅 하드웨어 연구의 기본 방향을 제시하고 있다.
본 글에서는 디빈센조의 7가지 기준을 중심으로 양자 컴퓨팅 구현에 필요한 조건들을 살펴보고자 한다.
더불어 ibm quantum platform에서 큐비트의 error와 relaxation time(T1), dephasing time(T2) 등을 확인해보고자 한다.
1. 확장 가능하며 잘 특성화된 큐비트 시스템 (A scalable physical system with well characterized qubits)
양자 컴퓨터의 가장 기본적인 구성 요소는 큐비트(qubit)이다. 큐비트는 고전 비트와 달리 0과 1 상태의 중첩(superposition)이 가능하며, 이는 양자 컴퓨터의 강력한 연산 능력의 기반이 된다.
- 확장성: 많은 수의 큐비트를 제어하고 상호작용시킬 수 있어야 한다. 대규모 양자 계산을 위해서는 수십만 개 이상의 큐비트가 필요할 것으로 예상된다. (추측입니다)
- 잘 특성화된 큐비트: 큐비트의 물리적 매개변수(내부 해밀토니안, 다른 상태와의 결합, 다른 큐비트와의 상호작용, 외부 필드와의 결합 등)가 정확하게 알려져야 한다. 큐비트가 3준위 이상의 상태를 가질 경우, 원치 않는 상태로의 전이를 최소화하도록 제어 장치가 설계되어야 한다.
- 다양한 물리적 구현: 큐비트는 다양한 물리적 시스템으로 구현될 수 있다. 이온 트랩의 이온 에너지 준위, 중성 원자의 원자 에너지 준위, 양자점이나 불순물의 스핀 상태, 초전도 소자의 양자화된 상태 등이 그 예이다.
2. 큐비트 상태를 $|000...\rangle$과 같은 단순한 기준 상태로 초기화할 수 있는 능력 (The ability to initialize the state of the qubits to a simple fiducial state, such as $|000...\rangle$)
양자 계산을 시작하기 전에 모든 큐비트를 알려진 초기 상태로 설정하는 것은 필수적이다. 또한 양자 오류 수정(quantum error correction)을 위해서는 낮은 엔트로피 상태(예: $|0\rangle$ 상태)의 큐비트가 지속적으로 공급되어야 한다.
- 초기화 방법: 시스템의 해밀토니안의 바닥 상태가 원하는 상태일 때 "자연적으로" 냉각하는 방법, 또는 측정으로 시스템을 원하는 상태로 투영시키는 방법 등이 있다.
- 시간 척도: 초기화 시간이 게이트 작동 시간(요구사항 4 참조)에 비해 길다면, "큐비트 컨베이어 벨트"와 같은 방식이 필요할 수 있다.
3. 게이트 작동 시간보다 훨씬 긴 긴 관련 디코히어런스(decoherence) 시간 (Long relevant decoherence times, much longer than the gate operation time)
디코히어런스는 큐비트가 환경과 상호작용하여 양자 일관성을 잃는 현상을 의미하며, 이는 양자 컴퓨터의 계산 능력을 저해하는 가장 큰 장애물 중 하나이다.
- 코히어런스 유지: 큐비트의 고유한 양자 특성이 발현될 수 있을 만큼 충분히 긴 디코히어런스 시간이 확보되어야 한다.
- 양자 오류 수정: 1995-1996년에 양자 오류 수정이 가능하다는 것이 발견되면서, 필요한 디코히어런스 시간에 대한 요구 사항이 완화되었다. 오류 수정이 성공하려면 디코히어런스 시간이 개별 양자 게이트 실행 시간의 $10^4 \sim 10^5$배가 되어야 한다.
- 시스템 특정 현상: 디코히어런스는 시스템의 모든 큐비트가 다양한 환경적 자유도와 결합하는 방식에 따라 달라지는 매우 시스템 특정적인 현상이다.
- 오류 수정의 오버헤드: 양자 오류 수정의 가장 제한적인 적용조차도 상당한 오버헤드를 필요로 한다. 계산에 사용되는 개별 큐비트마다 대략 10개의 보조 큐비트(ancillary qubits)가 추가되어야 한다. 이러한 오버헤드 비율은 양자 계산의 규모가 증가함에 따라 로그적으로만 증가한다.
4. "보편적인" 양자 게이트 세트 (A "universal" set of quantum gates)
양자 알고리즘은 일반적으로 소수의 큐비트에 작용하는 유니터리 변환의 시퀀스로 표현된다. 이러한 변환을 물리적으로 구현하기 위해 특정 해밀토니안을 켜고 끄는 방식이 필요하다.
- 유니버설 게이트: 모든 양자 계산을 수행하기 위해서는 '보편적인' 게이트 세트가 필요하다. 일반적으로 단일 큐비트 게이트와 CNOT (Controlled-NOT) 게이트만으로도 충분하다.
- 오류 허용 범위: 양자 게이트는 완벽하게 구현될 수 없으며, 계통적 오류와 무작위 오류가 발생할 수 있다. 무작위 오류의 경우 게이트 작동당 $10^{-4} \sim 10^{-5}$ 정도의 오차율이 허용된다.
- 병렬 작동: 오류 수정의 성공적인 구현을 위해서는 게이트 연산이 큐비트의 유한한 부분에 대해 동시에 병렬로 작동할 수 있어야 한다.
5. 큐비트 특정 측정 능력 (A qubit-specific measurement capability)
양자 계산의 결과를 읽어내기 위해서는 특정 큐비트를 측정할 수 있는 능력이 필요하다.
- 이상적인 측정: 이상적인 측정은 큐비트의 상태를 다른 큐비트나 시스템에 영향을 주지 않고 정확하게 읽어내야 한다.
- 양자 효율: 측정의 충실도(fidelity)는 양자 효율(quantum efficiency)로 요약될 수 있다. 100% 양자 효율이 바람직하지만, 훨씬 낮은 효율로도 신뢰할 수 있는 계산이 가능하다. 예를 들어, 양자 효율이 90%일 경우 세 번의 계산 반복으로 97%의 신뢰도를 얻을 수 있다. 이는 각 측정의 독립성을 가정했을 때, 과반수(2번 또는 3번)가 올바른 결과를 보일 확률 $P_{\text{total}} = q^3 + 3q^2(1-q)$ (여기서 $q$는 양자 효율)를 통해 계산될 수 있다.
- 낮은 양자 효율과 트레이드오프: 양자 효율이 1%와 같이 훨씬 낮은 경우에도 양자 계산에 활용될 수 있는데, 이는 동일한 출력 큐비트를 수백 개의 큐비트에 '복사'하고 이들을 모두 측정하는 방식이 비용으로 발생하기 때문이다.
6. 정지 큐비트와 비행 큐비트를 상호 변환할 수 있는 능력 (The ability to interconvert stationary and flying qubits)
양자 정보 처리는 단순히 계산뿐만 아니라 정보 통신에서도 독특한 이점을 제공한다. 이를 위해서는 정지 상태의 큐비트와 이동하는 큐비트 간의 상호 변환이 가능해야 한다.
- 정지 큐비트: 안정적으로 정보를 저장하고 연산하는 데 최적화된 큐비트를 의미한다. (확실하지 않음)
- 비행 큐비트: 장거리 정보 전송에 최적화된 큐비트를 의미하며, 광자 상태가 일반적으로 이에 해당한다.
- 필요성: 양자 통신을 위해서는 정지 큐비트에 저장된 정보를 비행 큐비트로 변환하여 전송하고, 다시 정지 큐비트로 변환하여 수신하는 과정이 필수적이다.
7. 지정된 위치 간에 비행 큐비트를 충실하게 전송할 수 있는 능력 (The ability faithfully to transmit flying qubits between specified locations)
양자 통신은 손상되지 않은 큐비트를 한 장소에서 다른 장소로 전송하는 것을 의미한다.
- 충실도 높은 전송: 비행 큐비트의 양자 상태가 전송 과정에서 손상되지 않고 높은 충실도로 유지되어야 한다.
- 광자 활용: 일반적으로 광자 상태가 비행 큐비트로 선택되며, 광섬유를 통한 빛 전송 기술은 큐비트 전송을 위한 매우 유망한 시스템이다.
- 양자 암호화: 양자 암호화는 비행 큐비트의 생성 및 직접 감지만으로도 충분하다.
결론
데이비드 디빈센조의 7가지 기준은 양자 컴퓨터를 물리적으로 구현하는 데 있어 필수적인 지침이 된다. 이 기준들은 큐비트의 설계부터 제어, 상호작용, 측정, 그리고 양자 정보의 통신에 이르기까지 양자 컴퓨팅 시스템의 모든 핵심 측면을 포괄한다. 현재까지 이 모든 기준을 완벽하게 충족하는 "승리하는" 기술은 없지만, 다양한 연구 분야에서 활발한 노력이 이루어지고 있다. 이러한 기준에 대한 심도 깊은 이해는 미래 양자 컴퓨팅 실험의 합리적인 계획 수립에 매우 유용하다. 양자 정보 이론의 아이디어는 복잡한 양자 시스템의 근본적인 양자 특성에 대한 추가 연구에 결정적인 영향을 미칠 것이며, 앞으로도 많은 창의적이고 흥미로운 발전을 촉진할 것이다.
실습 : 큐비트 에러 확인하기
이번 실습에서는 Qiskit Runtime Service를 활용하여 IBM 양자 프로세서의 성능 지표를 확인하고, 이를 바탕으로 에러가 가장 적은 최적의 큐비트 및 큐비트 쌍을 찾는 방법을 알아보자.
우리가 확인할 성능 지표들은 양자 컴퓨터의 안정성과 정확도를 나타내는 중요한 요소들로, 디빈센조의 양자 컴퓨터 구현 기준과도 밀접하게 관련되어 있다. 특히 디코히어런스 시간 (T1, T2)은 큐비트가 양자 상태를 얼마나 오래 유지할 수 있는지를 나타내며, 게이트 오류율과 측정 오류율은 각 연산 및 측정의 정확도를 보여준다.
1. Qiskit Runtime Service 연결 및 백엔드 지정
먼저 Qiskit Runtime Service에 연결하고, 정보를 확인할 양자 프로세서(백엔드)를 지정한다.
from qiskit_ibm_runtime import QiskitRuntimeService
# Qiskit Runtime Service에 연결한다.
service = QiskitRuntimeService()
# service.backends()를 사용하여 현재 사용 가능한 백엔드 목록을 확인할 수 있다.
# 예시: print(service.backends())
# 정보를 확인할 백엔드를 지정한다.
# "fill your backend" 부분에 사용할 백엔드의 이름을 입력해야 한다.
# 예: backend = service.backend("ibm_brisbane")
backend = service.backend("fill your backend")
2. 백엔드의 게이트 정보 확인
지정된 백엔드에서 어떤 종류의 게이트를 지원하고 있는지 확인할 수 있다. backend.basis_gates는 백엔드가 지원하는 기본 게이트의 목록을, backend.instructions는 백엔드의 모든 지시어(instruction)를 보여준다.
# 백엔드에서 지원하는 기본 게이트를 확인할 수 있다.
print("기본 게이트:", backend.basis_gates)
# 백엔드에서 지원하는 모든 지시어를 확인할 수 있다.
# print("모든 지시어:", backend.instructions)
3. 최적의 성능 지표를 가진 큐비트 찾기
아래 코드는 백엔드의 properties() 메서드를 활용하여 각 큐비트의 T1 시간, T2 시간, X 게이트 오류율, 측정 오류율, 그리고 큐비트 쌍의 ECR 게이트 오류율을 가져와서 가장 좋은 성능을 보이는 큐비트 또는 큐비트 쌍을 찾아낸다.
def find_best_metrics(backend: QiskitRuntimeService.backend) -> list[tuple[int or list, float]]:
"""다양한 하드웨어 성능 지표를 확인해 가장 좋은 큐비트와 큐빗 쌍을 찾는다"""
# 백엔드의 현재 속성 정보를 가져온다.
properties = backend.properties()
# 백엔드의 전체 큐비트 수를 가져온다.
num_qubits = backend.num_qubits
# 백엔드의 큐비트 연결 맵(coupling map)을 가져온다.
# 이는 어떤 큐비트 쌍이 직접적인 2큐비트 게이트 연산을 수행할 수 있는지를 나타낸다.
coupling_map = backend.coupling_map
# 백엔드의 모든 큐비트의 성능 지표를 읽어 배열로 만든다.
# T1, T2 시간은 길수록 좋고, 오류율은 낮을수록 좋다.
t1, t2, gate_error_x, readout_error, gate_error_ecr = [], [], [], [], []
for i in range(num_qubits):
# 각 큐비트의 T1 시간 (에너지 이완 시간)을 가져온다.
t1.append(properties.t1(i))
# 각 큐비트의 T2 시간 (위상 이완 시간, 코히어런스 시간)을 가져온다.
t2.append(properties.t2(i))
# 각 큐비트의 X 게이트(단일 큐비트 게이트) 오류율을 가져온다.
gate_error_x.append(properties.gate_error(gate="x", qubits=i))
# 각 큐비트의 측정(readout) 오류율을 가져온다.
readout_error.append(properties.readout_error(i))
# 연결된 모든 큐비트 쌍(coupling_map)에 대해 ECR 게이트 오류율을 가져온다.
# ECR은 IBM Qiskit에서 주로 사용하는 2큐비트 게이트 중 하나이다.
for pair in coupling_map:
gate_error_ecr.append(properties.gate_error(gate="ecr", qubits=pair))
# T1 시간이 가장 긴 큐비트와 그 값을 찾는다.
index_t1_max = t1.index(max(t1))
max_t1 = max(t1)
# T2 시간이 가장 긴 큐비트와 그 값을 찾는다.
index_t2_max = t2.index(max(t2))
max_t2 = max(t2)
# X 게이트 오류가 가장 작은 큐비트와 그 값을 찾는다.
index_min_x_error = gate_error_x.index(min(gate_error_x))
min_x_error = min(gate_error_x)
# 측정 오류가 가장 작은 큐비트와 그 값을 찾는다.
index_min_readout = readout_error.index(min(readout_error))
min_readout = min(readout_error)
# ECR 게이트 오류가 가장 작은 큐비트 쌍과 그 값을 찾는다.
# coupling_map은 튜플의 리스트이므로, 이를 리스트로 변환하여 인덱스 접근이 용이하게 한다.
coupling_list = list(coupling_map)
min_ecr_pair = coupling_list[gate_error_ecr.index(min(gate_error_ecr))]
min_ecr_error = min(gate_error_ecr)
# 찾은 최적의 지표들을 리스트 형태로 반환한다.
# 각 요소는 [큐비트 번호 또는 큐비트 쌍, 해당 지표 값] 형태이다.
solutions = [
[int(index_t1_max), max_t1], # [최대 T1 큐비트 인덱스, 최대 T1 값]
[int(index_t2_max), max_t2], # [최대 T2 큐비트 인덱스, 최대 T2 값]
[int(index_min_x_error), min_x_error], # [최소 X 게이트 오류 큐비트 인덱스, 최소 X 게이트 오류 값]
[int(index_min_readout), min_readout], # [최소 측정 오류 큐비트 인덱스, 최소 측정 오류 값]
[list(min_ecr_pair), min_ecr_error], # [최소 ECR 게이트 오류 큐비트 쌍, 최소 ECR 게이트 오류 값]
]
return solutions
# 함수를 실행하여 최적의 지표들을 찾고 결과를 출력한다.
solutions = find_best_metrics(backend)
print(solutions)
4. 실습 결과의 의미 및 응용
위 코드를 실행하면 backend로 지정된 양자 프로세서에서 T1, T2 시간이 가장 긴 큐비트, 단일 게이트 및 2-큐비트 게이트 오류율이 가장 낮은 큐비트 또는 큐비트 쌍, 그리고 측정 오류율이 가장 낮은 큐비트의 정보를 얻을 수 있다.
이러한 정보는 다음과 같이 활용될 수 있다:
최적의 큐비트 레이아웃 선정: 양자 알고리즘을 실행할 때, 오류율이 낮고 코히어런스 시간이 긴 큐비트들을 우선적으로 사용하여 양자 회로의 성능을 극대화할 수 있다. 예를 들어, 민감한 양자 상태를 유지해야 하는 계산에는 T1, T2 시간이 긴 큐비트를 할당하고, 복잡한 2-큐비트 연산이 많은 부분에는 ECR 게이트 오류가 가장 낮은 큐비트 쌍을 사용하는 전략을 세울 수 있다. 이는 디빈센조의 '확장 가능하며 잘 특성화된 큐비트 시스템' 기준(첫 번째 기준)과 연관된다.
하드웨어 개선 방향 제시: 각 지표의 최솟값과 전체적인 분포를 파악함으로써, 양자 하드웨어 개발자들은 어떤 큐비트나 어떤 종류의 오류를 개선하는 데 집중해야 할지 명확한 목표를 설정할 수 있다. 예를 들어,
Median T1과Median T2는 큐비트의 수명과 코히어런스 유지 능력을 직접적으로 나타내며,2Q error와Median SX error는 게이트 연산의 정확도를,Median readout error는 측정의 신뢰도를 보여준다. 디빈센조는 양자 오류 수정이 성공하려면 디코히어런스 시간이 게이트 작동 시간의 $10^4 \sim 10^5$배가 되어야 한다고 제시했다. 이러한 목표를 달성하기 위해 각 에러 지표들을 개선하는 것이 중요하다.
이러한 실습을 통해 우리는 이론적인 양자 컴퓨팅의 요구 사항이 실제 하드웨어의 성능 지표와 어떻게 연결되는지 이해하고, 주어진 하드웨어 자원을 가장 효율적으로 활용하는 방안을 모색할 수 있다.
참고문헌
DiVincenzo, D. P. (2000). The Physical Implementation of Quantum Computation. arXiv:quant-ph/0002077v3. https://arxiv.org/abs/quant-ph/0002077
Wikipedia: DiVincenzo's criteria [https://en.wikipedia.org/wiki/DiVincenzo%27s_criteria]
(https://en.wikipedia.org/wiki/DiVincenzo%27s_criteria)QCC. (n.d.). DiVincenzo's Criteria. Retrieved from https://qc-at-davis.github.io/QCC/How-Quantum-Computing-Works/DiVincenzo's-Criteria/DiVincenzo's-Criteria.html
KIAS Horizon. (n.d.). [양자 컴퓨팅의 다양한 물리적 플랫폼] 원자 기반 QPU를 통해 본 양자 컴퓨팅 연구 동향. Retrieved from https://horizon.kias.re.kr/31761/
'양자컴퓨터' 카테고리의 다른 글
| Computer Science for Quantum Computing (0) | 2025.11.01 |
|---|---|
| Quantum Mechanics for Quantum Computing (0) | 2025.11.01 |
| 2025-1 QIYA (Quantum Informatics at Yonsei Academy) IBM Learning Course Team Project (0) | 2025.10.31 |