2020.03.20

현존하는 퀀텀 컴퓨팅 서비스 따라해보기

Martin Heller | InfoWorld
양자 컴퓨팅을 보다 구체적으로 준비해야 할 시점이다. 마이크로소프트 퀀텀 디벨롭먼트 킷과 IBM Q, 퀴스킷(Qiskit : Quantum Information Science Kit) SDK를 함께 살펴본다. 이 주제에 익숙하지 않은 이라면 이해가 쉽지 않을 수 있음을 알린다. 

1980년대에 제안되었던 퀀텀 컴퓨팅이 드디어 현실화되기 시작했다. 비록 아직은 큐비트의 수가 적고 붕괴율이 높으며 노이즈의 양이 상당하지만 문턱이 대폭 낮아진 것이다. 이를테면 IBM과 마이크로소프트는 자사의 클라우드에서 양자 컴퓨터와 양자 시뮬레이터 액세스를 제공하기 시작했다.

그 외에도 구글은 자사의 연구소에서 퀀텀 컴퓨팅 역량을 시연하고 양자우위를 주장했다. 인텔도 양자 칩과 시스템을 개발하고 있지만 아직 상용화를 발표하지 않았다.

-> IBM 오픈소스 양자컴퓨팅 프레임워크 '퀴스킷'을 아시나요?

정의
큐비트는 퀀텀비트이다. 전통적인 비트는 0과 1의 값을 가질 수 있다. 퀀텀비트는 무한한 수의 값을 가질 수 있다. 전통적인 두 상태의 조합 또는 중첩을 통해서다. 규준 1을 가진 실수 또는 복소수의 2차원 열벡터는 큐비트가 가질 수 있는 양자 상태를 나타낸다.

달리 설명하자면 블로흐(Bloch) 구체라는 단위 구체의 표면에 벡터들이 놓여 있는 3D 형상으로 생각할 수 있다(아래 이미지 참조). 중첩된 상태의 큐비트를 측정할 때, 양자 상태가 무작위로 2가지 전통적인 상태 중 하나로 결정된다. 또한 큐비트를 명시적으로 전통적인 값(0 또는 1)으로 설정할 수 있다. 전통적인 값을 가진 큐비트를 측정해도 상태가 영향을 받지 않는다.
 
ⓒ MICROSOFT


중첩(superposition), 얽힘(entanglement), 간섭(interference) 등 3가지의 양자역학적 속성을 이용해 큐비트를 다루게 된다. 중첩은 전통적인 상태들의 조합이며, 특히 측정할 때까지 둘 다 동시에 존재할 수 있다. 얽힘은 아인슈타인이 ‘먼 거리에서 일어나는 유령 같아 보이는 작용’(spooky action at a distance)이라는 거동이다. 2개의 얽힌 큐비트는 측정 시 항상 같은 상태를 갖는다. 간섭은 건설적(constructive)이거나 파괴적(destructive)일 수 있다. 건설적인 양자 간섭은 양자 컴퓨터에서 옳은 답으로 이어지는 신호를 증폭하기 위해 사용되며 파괴적인 양자 간섭은 잘못된 답으로 이어지는 신호를 취소하기 위해 사용된다.

양자 게이트 또는 싱글 큐비트 연산자의 주제는 상당히 전문적 지식을 필요로 한다. 복소해석학, 선형 대수, 양자역학에 익숙하다면 이 논의를 이해할 수 있을 것이다. 이러한 지식을 보유하지 않았다면, 싱글 큐비트 연산자가 있는 것으로 일단 생각하라. 클리포드 게이트(Clifford gates)라고 불리는, 더 큰 세트로 조합할 수 있는 아다마르 게이트와 T 게이트의 기본 세트를 포함해서다. 다수의 큐비트가 얽힐 수 있다. 이는 양자 원거리 이동양자 오류 보정 등 여러 양자 프로토콜에 필수적이다.

알고리즘
지금껏 전통적인 알고리즘보다 빠를 수 있는 여러 양자 알고리즘이 제안되었다. 그러나 충분한 큐비트, 충분히 긴 가간섭성 시간, 충분히 낮은 오류율을 가진 양자 컴퓨터가 없었기에 빛을 발하지 못했을 뿐이다. 

예를 들어, 1996년에 로브 그로버가 고안한 그로버의 알고리즘은 함수의 역의를 O(√N)개의 단계로 발견했다. 또한 무질서한 목록을 검색하기 위해 사용할 수 있다. O(N)개의 단계가 필요한 전통적인 방법보다 이차 속도 증가를 제공한다.

1994년에 피터 쇼어가 고안한 쇼어의 알고리즘은 정수의 소인수를 발견했다. log(N)에서 다항 시간으로 실행하여 전통적인 일반 수체보다 기하급수적으로 빨라진다. 이런 기하급수적인 속도 증가로 결국 양자 노이즈와 기타 양자 흩어짐 현상이 없고 큐비트가 충분한(정확한 수는 고려하는 정수의 크기에 따라 다름) 양자 컴퓨터가 있을 때 RSA 등의 공개 키 암호 기법 스키마를 풀 수 있다.

양자우위
양자우위는 전통적인 컴퓨터가 매우 오랫동안 수행해야 하는 유의미한 연산을 신속하게 양자 컴퓨터가 수행할 수 있게 됐음을 의미한다. 구글은 2019년 10월 무작위성 계산에 대해 양자우위를 주장했다. 그러나 이에 대해 IBM은 전통적인 슈퍼컴퓨터가 같은 계산을 구글이 추정한 1만 년이 아닌 며칠 안에 수행할 수 있다고 받아쳤다. 어쨌든, 구글의 시연은 인상적이긴 했지만 일반용 양자 컴퓨팅이 아니었고 RSA 암호화를 사용하는 사람들은 최소한 지금으로서는 걱정할 것이 없다.

마이크로소프트 Q#, 퀀텀 개발 킷, 애저 퀀텀
마이크로소프트 퀀텀 개발 킷은 Q# 프로그래밍 언어, Q#에서 복소함수를 추상화하는 일련의 라이브러리, Q#으로 작성된 양자 프로그램을 실행하기 위한 파이썬 및 .NET 언어C#, F#, VB.NET)용 API, 개발을 용이하게 하는 툴로 구성된다. 윈도우, 리눅스, 맥OS에 C#용 Q#, 파이썬용 Q#, 주피터 노트북용 Q#을 설치할 수 있다.

컴퓨터에서 Q#을 구동할 때 양자 시뮬레이터를 사용해야 한다. 애저에서 구동하는 경우 결국 극저온 냉각 나노와이어(아래 사진 참조)로 만든 실제 양자 컴퓨터에 연결할 수 있게 될 것이다. 마이크로소프트는 양자 액세스 프리뷰가 2020년 중에 출시될 것이라고 밝혔다.



Q#용 ‘헬로, 월드(Hello, World)’ 프로그램은 임의의 정수를 생성한다. 기본적으로 아다마르 게이트를 통해 측정 시 0 또는 1을 반환할 확률이 같은 양자 중첩에 큐비트를 설정하여 작동하며(벨(Bell) 상태) 이런 ‘H’ 및 ‘M’ 연산을 필요한 만큼 반복하여 원하는 범위의 정수를 생성한다. Q#에서 임의의 비트를 생성하기 위한 양자 연산 코드는 다음과 같다.
 
namespace Qrng {
    open Microsoft.Quantum.Intrinsic;
    operation SampleQuantumRandomNumberGenerator() : Result {
        using (q = Qubit())  { // Allocate a qubit.
            H(q);             // Put the qubit to superposition. It now has a 50% chance of being 0 or 1.
            let r = M(q);     // Measure the qubit value.
            Reset(q);
            return r;
        }
    }
}


이 Q# 코드를 호출하여 양자 컴퓨터(결국 가능해질 것이다.) 또는 양자 시뮬레이터(현재)에서 파이썬 또는 C# 등의 .NET 언어에서 구동할 수 있다.

IBM Q & IBM Qiskit SDK
IBM Q 익스피리언스(아래 스크린샷 참조)는 양자 회로를 구성하는 2가지 방법을 제공한다. 그래픽 드래그 & 드롭 환경인 서킷 컴포저와 파이썬과 주피터 노트북을 사용하여 회로를 코드로 생성하는 퀴스킷 노트북이다. 두 방법 모두 결국 같지만 윈도우, 우분투, 맥OS 등에 비스킷 SDK를 설치하면 퀴스킷 노트북을 구동할 수 있다.



IBM의 ‘헬로, 월드’ 회로는 아다마르 게이트(H)를 사용하여 큐비트 0을 중첩된 벨 상태로 설정하며 CNOT 게이트(CX)를 사용하여 큐비트 0과 1을 얽히게 한다. 그리고 두 큐비트를 여러 번 측정한다. 예상되는 답변은 대략 [0,0]과 [1,1]이 반반이며 [0,1] 및 [1,0]은 거의 없어야 한다.

시뮬레이터 백엔드를 갖춘 상태에서 키스킷 경로를 선택하면 실험이 아래와 같게 된다.



온라인 IBM 퀀텀 익스피리언스에서 회로도로 시작하고 4개의 게이트를 도해로 드래그하여 같은 목적을 달성할 수 있다.



하지만 여기에서 백엔드를 그래픽으로 선택하고 회로 변경 코드를 실행하는 횟수를 선택할 수 있다.



시뮬레이터에서 구동하면 [0,0] 및 [1,1] 상태만 측정된다. 완벽하긴 하지만 실질적인 양자 회로 노이즈를 대변하지는 않는다.



IBM Q 아몽크에서 같은 회로를 구동해 보자.



트랜스컴파일이 되지 않았다. 왜일까? 이런! 우리는 2개의 큐비트가 필요한데 그 양자 컴퓨터는 큐비트가 하나였다. 사용할 대기열이 없었던 것도 당연하다.



큐비트가 5개인 IBM Q 벌링턴으로 시도해 보자.



이제 실질적인 거동이 보인다. 양자 오류는 약 20%의 얽히지 않은 결과를 제공했다. 우리는 이 작은 회로를 위해 실제 양자 컴퓨터를 사용함에 따른 시간 절약 효과를 전혀 누리지 못했다. 약 2분 동안 대기열에서 기다려야 했을 뿐 아니라 10초의 실행시간을 사용했고 그 중 시뮬레이터의 대기열에서 1초 동안 기다리고 4밀리초의 실행시간을 사용했다.

이것이 퀀텀 컴퓨팅의 현 주소이다. 대중이 액세스할 수 있는 기존의 양자 컴퓨터는 큐비트가 적고 오류율이 상당히 높다. 많은 이들이 양자 오류 보정과 더욱 긴 큐비트 상태 붕괴율을 이행하기 위해 노력하고 있지만 둘 다 어렵다.

향후 공개될 마이크로소프트의 애저 퀀텀이 체험용 버전은 좀더 개선된 모습을 갖췄을 수 있따. 마이크로소프트에 따르면 와이어 끝에서 마요라나 입자를 생성하는 자사의 초전도 나노와이어 위상 큐비트는 IBM의 조셉슨 정션 큐비트보다 내재적으로 오류율이 낮다.
 

* Martin Heller는 인포월드 객원 편집자이자 리뷰어다. ciokr@idg.co.kr



2020.03.20

현존하는 퀀텀 컴퓨팅 서비스 따라해보기

Martin Heller | InfoWorld
양자 컴퓨팅을 보다 구체적으로 준비해야 할 시점이다. 마이크로소프트 퀀텀 디벨롭먼트 킷과 IBM Q, 퀴스킷(Qiskit : Quantum Information Science Kit) SDK를 함께 살펴본다. 이 주제에 익숙하지 않은 이라면 이해가 쉽지 않을 수 있음을 알린다. 

1980년대에 제안되었던 퀀텀 컴퓨팅이 드디어 현실화되기 시작했다. 비록 아직은 큐비트의 수가 적고 붕괴율이 높으며 노이즈의 양이 상당하지만 문턱이 대폭 낮아진 것이다. 이를테면 IBM과 마이크로소프트는 자사의 클라우드에서 양자 컴퓨터와 양자 시뮬레이터 액세스를 제공하기 시작했다.

그 외에도 구글은 자사의 연구소에서 퀀텀 컴퓨팅 역량을 시연하고 양자우위를 주장했다. 인텔도 양자 칩과 시스템을 개발하고 있지만 아직 상용화를 발표하지 않았다.

-> IBM 오픈소스 양자컴퓨팅 프레임워크 '퀴스킷'을 아시나요?

정의
큐비트는 퀀텀비트이다. 전통적인 비트는 0과 1의 값을 가질 수 있다. 퀀텀비트는 무한한 수의 값을 가질 수 있다. 전통적인 두 상태의 조합 또는 중첩을 통해서다. 규준 1을 가진 실수 또는 복소수의 2차원 열벡터는 큐비트가 가질 수 있는 양자 상태를 나타낸다.

달리 설명하자면 블로흐(Bloch) 구체라는 단위 구체의 표면에 벡터들이 놓여 있는 3D 형상으로 생각할 수 있다(아래 이미지 참조). 중첩된 상태의 큐비트를 측정할 때, 양자 상태가 무작위로 2가지 전통적인 상태 중 하나로 결정된다. 또한 큐비트를 명시적으로 전통적인 값(0 또는 1)으로 설정할 수 있다. 전통적인 값을 가진 큐비트를 측정해도 상태가 영향을 받지 않는다.
 
ⓒ MICROSOFT


중첩(superposition), 얽힘(entanglement), 간섭(interference) 등 3가지의 양자역학적 속성을 이용해 큐비트를 다루게 된다. 중첩은 전통적인 상태들의 조합이며, 특히 측정할 때까지 둘 다 동시에 존재할 수 있다. 얽힘은 아인슈타인이 ‘먼 거리에서 일어나는 유령 같아 보이는 작용’(spooky action at a distance)이라는 거동이다. 2개의 얽힌 큐비트는 측정 시 항상 같은 상태를 갖는다. 간섭은 건설적(constructive)이거나 파괴적(destructive)일 수 있다. 건설적인 양자 간섭은 양자 컴퓨터에서 옳은 답으로 이어지는 신호를 증폭하기 위해 사용되며 파괴적인 양자 간섭은 잘못된 답으로 이어지는 신호를 취소하기 위해 사용된다.

양자 게이트 또는 싱글 큐비트 연산자의 주제는 상당히 전문적 지식을 필요로 한다. 복소해석학, 선형 대수, 양자역학에 익숙하다면 이 논의를 이해할 수 있을 것이다. 이러한 지식을 보유하지 않았다면, 싱글 큐비트 연산자가 있는 것으로 일단 생각하라. 클리포드 게이트(Clifford gates)라고 불리는, 더 큰 세트로 조합할 수 있는 아다마르 게이트와 T 게이트의 기본 세트를 포함해서다. 다수의 큐비트가 얽힐 수 있다. 이는 양자 원거리 이동양자 오류 보정 등 여러 양자 프로토콜에 필수적이다.

알고리즘
지금껏 전통적인 알고리즘보다 빠를 수 있는 여러 양자 알고리즘이 제안되었다. 그러나 충분한 큐비트, 충분히 긴 가간섭성 시간, 충분히 낮은 오류율을 가진 양자 컴퓨터가 없었기에 빛을 발하지 못했을 뿐이다. 

예를 들어, 1996년에 로브 그로버가 고안한 그로버의 알고리즘은 함수의 역의를 O(√N)개의 단계로 발견했다. 또한 무질서한 목록을 검색하기 위해 사용할 수 있다. O(N)개의 단계가 필요한 전통적인 방법보다 이차 속도 증가를 제공한다.

1994년에 피터 쇼어가 고안한 쇼어의 알고리즘은 정수의 소인수를 발견했다. log(N)에서 다항 시간으로 실행하여 전통적인 일반 수체보다 기하급수적으로 빨라진다. 이런 기하급수적인 속도 증가로 결국 양자 노이즈와 기타 양자 흩어짐 현상이 없고 큐비트가 충분한(정확한 수는 고려하는 정수의 크기에 따라 다름) 양자 컴퓨터가 있을 때 RSA 등의 공개 키 암호 기법 스키마를 풀 수 있다.

양자우위
양자우위는 전통적인 컴퓨터가 매우 오랫동안 수행해야 하는 유의미한 연산을 신속하게 양자 컴퓨터가 수행할 수 있게 됐음을 의미한다. 구글은 2019년 10월 무작위성 계산에 대해 양자우위를 주장했다. 그러나 이에 대해 IBM은 전통적인 슈퍼컴퓨터가 같은 계산을 구글이 추정한 1만 년이 아닌 며칠 안에 수행할 수 있다고 받아쳤다. 어쨌든, 구글의 시연은 인상적이긴 했지만 일반용 양자 컴퓨팅이 아니었고 RSA 암호화를 사용하는 사람들은 최소한 지금으로서는 걱정할 것이 없다.

마이크로소프트 Q#, 퀀텀 개발 킷, 애저 퀀텀
마이크로소프트 퀀텀 개발 킷은 Q# 프로그래밍 언어, Q#에서 복소함수를 추상화하는 일련의 라이브러리, Q#으로 작성된 양자 프로그램을 실행하기 위한 파이썬 및 .NET 언어C#, F#, VB.NET)용 API, 개발을 용이하게 하는 툴로 구성된다. 윈도우, 리눅스, 맥OS에 C#용 Q#, 파이썬용 Q#, 주피터 노트북용 Q#을 설치할 수 있다.

컴퓨터에서 Q#을 구동할 때 양자 시뮬레이터를 사용해야 한다. 애저에서 구동하는 경우 결국 극저온 냉각 나노와이어(아래 사진 참조)로 만든 실제 양자 컴퓨터에 연결할 수 있게 될 것이다. 마이크로소프트는 양자 액세스 프리뷰가 2020년 중에 출시될 것이라고 밝혔다.



Q#용 ‘헬로, 월드(Hello, World)’ 프로그램은 임의의 정수를 생성한다. 기본적으로 아다마르 게이트를 통해 측정 시 0 또는 1을 반환할 확률이 같은 양자 중첩에 큐비트를 설정하여 작동하며(벨(Bell) 상태) 이런 ‘H’ 및 ‘M’ 연산을 필요한 만큼 반복하여 원하는 범위의 정수를 생성한다. Q#에서 임의의 비트를 생성하기 위한 양자 연산 코드는 다음과 같다.
 
namespace Qrng {
    open Microsoft.Quantum.Intrinsic;
    operation SampleQuantumRandomNumberGenerator() : Result {
        using (q = Qubit())  { // Allocate a qubit.
            H(q);             // Put the qubit to superposition. It now has a 50% chance of being 0 or 1.
            let r = M(q);     // Measure the qubit value.
            Reset(q);
            return r;
        }
    }
}


이 Q# 코드를 호출하여 양자 컴퓨터(결국 가능해질 것이다.) 또는 양자 시뮬레이터(현재)에서 파이썬 또는 C# 등의 .NET 언어에서 구동할 수 있다.

IBM Q & IBM Qiskit SDK
IBM Q 익스피리언스(아래 스크린샷 참조)는 양자 회로를 구성하는 2가지 방법을 제공한다. 그래픽 드래그 & 드롭 환경인 서킷 컴포저와 파이썬과 주피터 노트북을 사용하여 회로를 코드로 생성하는 퀴스킷 노트북이다. 두 방법 모두 결국 같지만 윈도우, 우분투, 맥OS 등에 비스킷 SDK를 설치하면 퀴스킷 노트북을 구동할 수 있다.



IBM의 ‘헬로, 월드’ 회로는 아다마르 게이트(H)를 사용하여 큐비트 0을 중첩된 벨 상태로 설정하며 CNOT 게이트(CX)를 사용하여 큐비트 0과 1을 얽히게 한다. 그리고 두 큐비트를 여러 번 측정한다. 예상되는 답변은 대략 [0,0]과 [1,1]이 반반이며 [0,1] 및 [1,0]은 거의 없어야 한다.

시뮬레이터 백엔드를 갖춘 상태에서 키스킷 경로를 선택하면 실험이 아래와 같게 된다.



온라인 IBM 퀀텀 익스피리언스에서 회로도로 시작하고 4개의 게이트를 도해로 드래그하여 같은 목적을 달성할 수 있다.



하지만 여기에서 백엔드를 그래픽으로 선택하고 회로 변경 코드를 실행하는 횟수를 선택할 수 있다.



시뮬레이터에서 구동하면 [0,0] 및 [1,1] 상태만 측정된다. 완벽하긴 하지만 실질적인 양자 회로 노이즈를 대변하지는 않는다.



IBM Q 아몽크에서 같은 회로를 구동해 보자.



트랜스컴파일이 되지 않았다. 왜일까? 이런! 우리는 2개의 큐비트가 필요한데 그 양자 컴퓨터는 큐비트가 하나였다. 사용할 대기열이 없었던 것도 당연하다.



큐비트가 5개인 IBM Q 벌링턴으로 시도해 보자.



이제 실질적인 거동이 보인다. 양자 오류는 약 20%의 얽히지 않은 결과를 제공했다. 우리는 이 작은 회로를 위해 실제 양자 컴퓨터를 사용함에 따른 시간 절약 효과를 전혀 누리지 못했다. 약 2분 동안 대기열에서 기다려야 했을 뿐 아니라 10초의 실행시간을 사용했고 그 중 시뮬레이터의 대기열에서 1초 동안 기다리고 4밀리초의 실행시간을 사용했다.

이것이 퀀텀 컴퓨팅의 현 주소이다. 대중이 액세스할 수 있는 기존의 양자 컴퓨터는 큐비트가 적고 오류율이 상당히 높다. 많은 이들이 양자 오류 보정과 더욱 긴 큐비트 상태 붕괴율을 이행하기 위해 노력하고 있지만 둘 다 어렵다.

향후 공개될 마이크로소프트의 애저 퀀텀이 체험용 버전은 좀더 개선된 모습을 갖췄을 수 있따. 마이크로소프트에 따르면 와이어 끝에서 마요라나 입자를 생성하는 자사의 초전도 나노와이어 위상 큐비트는 IBM의 조셉슨 정션 큐비트보다 내재적으로 오류율이 낮다.
 

* Martin Heller는 인포월드 객원 편집자이자 리뷰어다. ciokr@idg.co.kr

X