양자컴퓨터2024. 1. 20. 18:33

 처음에 양자 컴퓨터를 상상하면 지금의 컴퓨터보다 훨씬 나은, 대체되는 무엇인가를 상상하게 된다. 다른 운영체제가 설치되고 작동방식도 완전히 다른, 새로 사야하는 컴퓨터 말이다. 그리고 이때 또다른 헷갈리는 말은 qubit이다. 중첩을 설명하려고 나온 이 qubit은 정작 일반 엔지니어들이 이 양자 컴퓨터의 실제를 이해하는 것을 처음에는 방해한다고 생각한다.

 

  그런데 실제 양자 컴퓨터는 아래 그림처럼 상상해볼 수 있다. 여기서 핵심은 오른쪽 컴퓨터와 모니터는 현대의 PC 그대로이고 왼쪽의 양자를 구성 및 관측하는 usb로 연결된 보조 기기가 달려 있는 모습이 실제 형상이라는 점이다. 즉 양자 컴퓨터는 기존의 PC가 완전히 바뀌는 것이 아니라, 단순히 기존 PC에 양자관측 장치를 붙인 모습이다.

 그리고 그러면 왜 그런 부가 장치가 이 PC를 양자 컴퓨터라는 존재로 만들어줄까?

양자 중첩/얽힘을 관측하는 기기가 usb로 연결된 컴퓨터

 

 예를 들면 어떤 '공(ball)'을 특정 각도와 힘으로 던져서, 어떤 분자들이 가득한 대기 상태를 지나 착지하는 지점을 계산하는 작업이 필요하다고 하자. 그런데 그 계산이 뜻하지 않게, 매우 엄밀하게 대기의 모든 분자를 고려해야 한다면 또 어떨까? 이런 경우는 말 그대로 그 계산에 지나치게 많은 시간이 든다. 대기중에 존재할 10의 수십 제곱쯤 되는 분자들을 하나하나 계산에 포함해야 한다면 말이다. 그러면 어떤 우회 방법이 있는가? 조금 무리해보일지라도, 실제로 그러한 환경을 정확히 실제로 구성해서 관측해서 사용하는 방법이 있다. 계산을 하지 않고 계산 값을 자연으로부터 직접 훔치는 방법이다. 물론 매우 정확하게 대기 상태를 조성하고, 정확한 방향으로 정확한 힘으로 던져서 정확하게 측정해야 하는 말도 안되는 난해함이 있겠지만, 그것만 해결하면, 대기중에 존재할 그 모든 분자상태를 고려한 계산을 하려면 걸릴 수년의 시간보다, 공을 던져서 떨어지는 정도의 시간밖에 소요되지 않는다.

 

 그리고 이는 정확히 양자 컴퓨터의 원리나 어려움과 비교되어 설명될 수 있다. 양자 컴퓨터는 양자적인 현상을 직접 실제와 같이 구성하고 관측하는 방법에 기초한다. 어마어마한 계산이 필요한 일을 자연을 직접 관측해서 해결하는 것이다. 이 아이디어는 맨 처음 리처드 파인만 교수에 의해 제안되었다고 알려져있다. 양자들이 너무 많이 얽혀 있는 경우는 계산에 너무 오래 걸리니까 계산을 하지 말고, 직접 해버리면 되잖는가?

공을 던져 착지점을 알아내는 장치가 부착된 컴퓨터

 

  그런데 이점은 놀랍지 않은가? 엄청난 계산이 필요한 작업도 자연은 금방 해낸다는 점이다. 사실은 고전 컴퓨터도 자연의 원리를 해킹한 것과 같다. 전기적인 신호의 원리를 활용하여, 즉 트랜지스터라는 전자적 스위치를 확장하여 입력과 출력을 제어하고, 그것들에 규칙을 설정하여 현대의 컴퓨터는 어떤 계산도 할 수 있도록 구성되어 있다. 그런데 이 전기/전자 원리에 의한 현대의 디지털 컴퓨터의 한계는 어떤 특정한 계산을 해내려면 너무나 오랜 시간이 걸리도록 반복하는 작업이 필요하다는 한계가 있다.

 

 그러면 아예 자연이 하는 복잡한 계산인 양자의 계산력을 훔쳐오면 어떨까? 물론 그 계산이 우리가 원하는 모든 계산은 아니지만, 특정한 상황에서 그 값을 써먹을 수 있다면 어떨까? 그 계산만이라도 가속할 수 있지 않겠는가?

 

 바로 그런 상상이 양자 컴퓨터를 상정하게 만들었다. 그러면 대체 무엇을 자연에서 관측하는 것이고, 어떤 계산을 빠르게 할 수 있는 것일까? 여기서는 이미 양자 컴퓨터가 기존의 PC에다가 다량의 양자 구성/관측 장치를 연결하는 것이라고 밝혀두었기 때문에 이 양자 구성/관측 장치에 대해서 살펴보자.

 

1. 양자 구성/관측 장치가 하는 일

 

 이 장치를 설명하는 핵심은 양자 중첩과 얽힘이다. 이 부분의 깊은 영역은 아래 section에서 다루도록 해보자.

https://infoengineer.tistory.com/3

 

이야기로 풀어보는 영자컴퓨터를 위한 양자역학 - 두번째 / 중첩 (Superposition)

자 이제부터 빛을 가지고 풀어보는 양자와 연관된 개념들을 파헤쳐보자. 중첩(super position)의 개념이다. 양자 역학의 다양한 이론들을 이해하기 위해서는 특정 실험의 결과와 이에 대한 해석을

infoengineer.tistory.com

 

 양자는 미시적인 소재는 무엇이든 가능하다. 전자/양성자/원자/광자/.. 무엇이든 양자역학적으로 작동하면 그래서 양자역학의 구성/관측 장치로 만들어볼 수 있다.

 

 즉, 파동의 형태로 존재하는 이 입자들은 관측되기 전에는 확률로 존재하다가, 관측되면 확정되는 과정을 거치는데, 이 입자들이 얽혀있는 특정한 상태가 되면, 이 수많은 입자들이 한꺼번에 확정된다. 이를 테면 양자 100개를 얽히게 어떤 특정 관계로 만든 다음에 관측하면, 단 1 cycle에 그 모든 양자들의 상태가 확정된다.

 이 각 양자를 qubit이라고 부르는데, 어떤 관계를 구성(양자 회로 구성)한 후에 몇번을 반복해서 관측해보면, 이 전체 상태가 가지는 대략의 확률 분포를 알 수 있다. 즉 대략 결과값을 알 수 있다.

 

 그리고 이 "확률 분포"는 어떤 복잡한 계산을 하는 힌트가 된다. 그 높은 확률을 따라가면서 다음 단계를 진행하다보면, 수만년이 걸릴 계산이 몇 초로 줄어들 수 있다는 것이 이 양자 구성/관측 장치의 응용 핵심이다.

 

 그래서 양자 컴퓨터는 대략 이런 과정을 거쳐서 계산을 완료할 수 있다.

 

 A. 다량의 양자를 가지고 어떤 관계를 구성한다(양자 회로 구성).

 B. A를 반복해서 만들고 관측을 원하는 만큼 반복해서, 확률 분포를 구한다. 기본적으로 qubit이 많고 오차가 클 수록 더 많이 반복해서 정확한 확률 분포를 구한다.

 C. 그 확률에 따라 다음 연산을 구성하고, 다시 A로 돌아간다.

 D. 중간중간 그 확률을 따라간 결과가 맞는지 확인하다가 답이 맞으면 멈춘다.

 

 따라서 양자 컴퓨터는 모든 종류의 계산을 빨리하지 못한다. 흔히 이야기하는 범용 컴퓨터가 아니다. 이 양자 회로의 관측 값의 확률 분포로 가속할 수 있는 계산만 가속할 수 있고, 그런 계산이 아직 많이 발견된 것은 아니다. 몇가지 이 고속 계산화 가능한 분야의 몇개의 알고리즘이 알려져 있고, 가장 유명한 것이 바로 피터 쇼어 알고리즘, 즉 소인수 분해 알고리즘이다.

 

2. 소인수 분해 알고리즘은 어떤 것인가?

 

 이 소인수 분해를 양자 컴퓨터로 고속화 하려면, 먼저 소인수 분해 과정을 양자 컴퓨터에 맞는 것으로 바꾸고, 그 분해 과정 중 특정 계산을 위해 양자 구성/관측을 해야한다.

 

 이 소인수 분해 알고리즘에 대한 설명은 아래 영상에서,

https://www.youtube.com/watch?v=gjp9301in0U

 이 알고리즘을 양자 컴퓨터로 회로화하여 구하는 것은 이 아래 영상에서 참조해볼 수 있다.

https://www.youtube.com/watch?v=qV3k-bQgmK0

 

이 알고리즘은 이해하기 까다롭지만, 결론은 그렇다. 양자 회로(양자를 얽힘 상태로 특정 관계를 갖게 구성)를 만들고 그 관측을 여러번 해서 나오는 확률 값들로 어떤 계산을 가속할 수 있다는 점이다. 그리고 어떤 회로 구성으로 어떤 계산을 가속할지는 지금도 계속 연구하고 있다. 아직 응용 분야는 적다. 탐색/최적화/소인수분해/양자시뮬레이션 등이 알려져있다.

 

3. 양자 컴퓨터는 어떤 방식으로 만들어지는가?

 

 양자는 그야말로, 양자 하나씩을 다뤄야 하니 기술적인 난이도는 엄청나다. 외부와 차단시켜 결잃음(간섭이나 관측)을 최종 순간까지 막아야 하기 때문에, 대부분의 방식에서 절대온도 0도 가까운 냉각이나 진공 등의 이슈가 나온다. 회로를 구성하기 위해서 양자 하나하나를 제어하는 것도, 그리고 하나하나 관측하는 것도 쉽지가 않다. 광자는 상온에서도 다룰 수가 있지만 도대체 광자 하나를 측정한다는게 너무 어려운게 현실이다.

 

 이 부분에 대한 이해는 아래 영상을 추천해본다.

https://www.youtube.com/watch?v=Gem0N1JEm9k

 

실제로 양자 컴퓨터는 이미 이러한 회로 구성과 관측 들이 모두 클라우드 API로 제공되고, 에뮬레이터도 같이 제공된다. 에뮬레이터는 근사 확률값을 조금 느려도 계산해주는 역할을 한다. 실제 양자 컴퓨터가 작동한다고 하면 수천/수만개의 큐빗을 구성해서 우리는 단 한번의 싸이클로 그 값을 관측할 수 있다. 그렇게 다수 관측한 값을 가지고 특정 계산을 빠르게 하는 셈이다.

 

위 영상들이 일반인도 짧은 시간안에 양자 컴퓨터를 개괄할 수 있는 한국어로 된 좋은 내용이라고 생각되어 정리해본다.

 

반응형
Posted by 작동미학
양자컴퓨터2020. 12. 10. 23:29

 양자 컴퓨터에 대해서 가장 좋은 질문 중의 하나가 바로 이 질문이라고 생각한다. 중첩도 알겠고, 관측할때 확정된다는 것도 알겠는데 어떻게 이런 것을 가지고 계산을 하는 것인가요?

 

 이 질문에 심각하게 답을 하려면 당연히도 몇가지 천재들의 도약을 자세히 이해해야 될텐데, 문득 평범하게는 이렇게 비유해볼 수 있겠다는 생각이 들었다.

 

 우리가 디아블로 같은 3D게임을 하기 위해서는 컴퓨터는 열심히 계산을 해야한다. 컴퓨터 안에는 온갖 사물들에 대한 3D 틀이나 표면 정보가 들어있고, 시야가 바뀌면 GPU를 동원해서 정확히 우리 눈에 비추게될 장면을 만들어내고 있는 것이다.

 

 자연도 사실은 똑같이 자연의 법칙에 따라 움직이도록 특정 계산을 수행하고 있다. 예를들면 양자 하나의 운명을 결정하기 위해서는 양자역학 법칙들을 계산해낼 필요가 있는 것이다. 그런데 이 양자들이 백개 정도 얽혀서 이루는 결과를 고전 컴퓨터로 계산하려면 얼마의 컴퓨팅이 필요할까? 정답은 어마어마하다. 양자가 더 많이 동시에 다뤄질수록 이 컴퓨팅 필요량은 기하급수적으로 늘어난다.

 

 자 이제 다시 디아블로 게임 이야기로 돌아가보자. 디아블로의 물체들의 실제 위치나 모양은 알고 있고, 조금 움직여서 발생하는 두 장면의 차이를 측정했다고 치자. 그러면 우리는 무엇을 알 수 있는가? 바로 그 차이를 구해낸 GPU의 계산 결과를 확보하게 된 셈이다. 즉 디아블로 게임을 위해 GPU가 한 계산의 결과를 알게 된 셈이다. 내가 한 것이라고는 측정 뿐인데, 내가 손에 들게 된 것은 GPU의 계산 결과이다. 즉 우리는 디아블로의 물체를 어느정도 움직였을때 한 계산의 결과를 알게 되었다. 모든 경우에 대한 결과값을 알아낼 수 있다면 더 범용 컴퓨터를 만들 수 있을텐데, 여하튼 이 특수 케이스의 계산에 대해서는 입력과 출력을 알게되었다. 그렇다. 컴퓨팅을 살짝 훔친 것과 같다.

 

 그러면 양자 100개를 동시에 다뤄서 어떤 결과를 측정했다고 치자. 그것은 우리가 앞서 소개한, 고전 컴퓨터로 엄청난 시간을 계산해야만 얻을 수 있는 결과를 한번에 알아낸 셈이 된다. 짜잔! 우리는 방금 자연이라는 컴퓨터의 초고성능 컴퓨터의 결과를 훔친 셈이다. 앞서 디아블로에서 GPU의 계산 결과를 훔친 것과 또 같다.

 

 그런데 한번 더 아이디어를 내서 이 계산 결과를 가지고 무언가 우리에게 유익한 계산을 할 수는 없을까? 분명히 전세계 컴퓨터를 다 합쳐도 수억년 걸리는 계산의 결과를 순식간에 거머쥐었는데, 이 결과를 가지고 무언가 해낼 수는 없을까? 그렇다 그것이 바로 피터 쇼어의 알고리즘이며 그루버 알고리즘인 것이다. 그리고 이 결과를 가지고 더 많은 범용적인 계산을 하고 싶어하는 연구가 바로 요즘의 양자 컴퓨터 계산 알고리즘 연구가 되겠다.(그러나 사실은 이 과정이 쉽지 않기 때문에 양자 컴퓨터로 범용의 계산을 하기가 어려운 것이다.)

 

 양자 컴퓨터 자체도 예전에 소개했듯이 리처드 파인만이 처음 제안한 것은 이 양자 시뮬레이션이었다. 도저히 컴퓨터로 계산을 할 수가 없으니까, 직접 양자를 가지고 돌려보자(?)에서 시작되었다고 볼 수 있다. 그런데 지금은 이 양자를 측정한 결과치를 특정한 단계를 거쳐서 간접적으로 어떤 계산을 빠르게 하는데 응용하고 있다고 볼 수 있다.

 

 대개 그 계산이라는게 역시 사실은 양자를 어찌어찌 배열해가면서 혹은 바꿔가면서 그 결과를 관측하는 것이다. 그런데 그렇게 하면 고전 컴퓨터로는 엄청난 시간이 걸리는 계산들을 계속 살짝살짝 훔치게 되고 그것들을 정교하게 복잡한 알고리즘을 거쳐 특정 계산을 수행해 내는 것이다.

 

 자 그러면 대체 이 관측 결과를 어떻게 응용해서 특정 계산을 한다는 말인가? 이제 피터 쇼어의 알고리즘 공부와 양자 컴퓨터 코딩을 할때가 된 것이다. 피터 쇼어는 위의 디아블로가 계산한 두 이미지의 차이를 가지고 특정 계산을 하는 방법을 알아낸 것과 같다. 기가 막히지 않은가. 이걸로 어떻게 무슨 계산을 한다는 건가! 그런데 된다는 것..

 

 

 이쯤해서 피터 쇼어의 육성을 한번 듣고 나머지는 다른 글에 맡기겠다(이 분이 원래 자기 일하면서 부업으로 틈틈히 피터 쇼어의 알고리즘을 만든건 잘 알려진 사실이다.)

www.youtube.com/watch?v=hOlOY7NyMfs

 

반응형
Posted by 작동미학
양자컴퓨터2020. 3. 9. 23:42

조금전(20년 3월) Tensorflow Quantum이 발표되었다. IBM나 Azure, Amazon이 여러가지 공개를 하고 있던 터라서 Google쪽도 유사 활동을 하지 않을까 싶었는데, Tensorflow Quantum이라는 S/W 라이브러리 배포 형태로 발표를 했다.

 

Tensorflow Quantum이라는 이름으로 Tensorflow와 같이 쓸 수 있는 library와, 타사에서 제공하는 양자 회로를 제작하고 실행할 수 있는 Cirq라는 오픈소스 프로젝트를 동시에 소개하고 있는게 주요 내용이다.

 

우선 먼저 Cirq를 소개해보자. 문건 상으로는 아직 정식 Google Product이 아니라고 소개하고 있고 버전도 알파이다. 프로젝트 자체는 별로 특이할 것 없이 양자 회로를 코딩하고 시뮬레이션할 수 있는 Python 라이브러리다. 구글이 만드는 Bristlecone(72 qubit, 기존 54 qubit Sycamore의 다음버전인가보다)이라는 양자컴퓨터 상에서 향후에 작동을 확인할 수 있다고 이야기하고 있다. Tensorflow 를 CPU/GPU/TPU에서 돌릴 수 있듯이 Cirq는 이 Bristlecone이라는 장치에서 구동할 수 있다는 이야기다. 물론 예제 코딩을 보면 PC에서 시뮬레이션 기능도 포함되어 있다.

 

아래 해당 github( https://github.com/quantumlib/Cirq )을 방문해보면 앞서 IBM/Azure에서 소개해한 양자게이트 S/W Framework들과 다르지 않다는 것을 알 수 있다. 큐빗을 선언하고 회로를 구성하고 시뮬레이션하면 결과를 알려준다. 회로를 프린트하는 기능도 있다. (스크린샷 맨 하단) 이 양자 게이트에 대해서 궁금하신 분들은 IBM 개발툴 설명 ( https://infoengineer.tistory.com/22 ) 을 읽어보기를 추천한다. 각 양자 게이트의 세부와 함께 제일 잘 설명되어 있다.

 

나중에는 simulator가 아니라, bristlecone(72qubit quantum computer)을 통해 동작하게 되겠다. 구글이 공개한 사진이라도 봐두자.

 

 

 그러면 Tensorflow Quantum은 무엇일까? 구글이 이야기하는 NISQ(Noisy Intermediate-Scale Quantum)라는 것은, 어차피 양자 컴퓨터의 개별 qubit이 에러때문에 과거에 기대했던 엄청난 고성능을 기대하기 어려운 상황에 대한 대안이다. 즉 이러한 에러(결잃음,decoherence)에도 불구하고 이를 활용할 수 있도록 구성해야 한다고 주장하고 있다. 이것을 NISQ Computing era라고 한다. 이를 위해서 NISQ Computing을 머신러닝과 접목할 수 있게 만든 것이 Tensorflow Quantum이다(머신러닝 외에도 몇가지 추가 응용 분야가 나열되어 있긴 하다). 물론 GPU/TPU도 같이 써야 한다. 그러니 Hybrid quantum classical machine learning library라고 설명한다.

 

 

 NISQ 상황하에서 이런 S/W Framework을 계속 발전시켜야 실제 양자 컴퓨터의 혜택을 극대화할 수 있다는 말하고 있다. 아래 비디오의 6분 부터이다.

https://www.youtube.com/watch?v=16ZfkPRVf2w

양자컴퓨터가 지향하는 바는 오류없는(결잃음) 양자 컴퓨터인데, 아직은 멀었고 이런 결잃음이 약간 있는 양자 컴퓨터로도 뭔가 할 수 있지 않느냐에 대한 가이드로 이 Cirq와 Tensorflow Quantum을 내놓았다는 이야기다.

 

아래가 TensorFlow Quantum의 공식 페이지이고, Tensorflow Quantum이 이러한 NISQ시대(오류 보정없는 적당한 qubit 규모의 양자 컴퓨터)의 하이브리드 머신러닝 라이브러리임을 나타내고 있다.

 

 

동일 페이지 다른 화면의 NISQ 기반의 양자 머신러닝 개념을 설명한 페이지이다.

 

좀 아쉽지만 Tutorial상에 머신 러닝 예시들이 존재하는데 더 확인이 필요하다.

(MNIST 문제중에 3과 6만 발췌하여 저해상도로 만들어서 위 양자 하이브리드 머신러닝을 돌려주는 예시가 존재한다)

 

 일단 구글도 Tensorflow와 Cirq를 통해 양자컴퓨팅 관련 S/W Framework을 시작했다고 볼 수 있겠다. 타 사업자대비 조금 다른 점은 단순히 양자게이트에 의한 회로 뿐 아니라, 머신러닝을 결합해서 우선 시작했다는 점이겠다.

 

다만 양자컴퓨터와 머신러닝의 결합으로 정말 Noise가 존재하는 퀀텀 컴퓨터를 잘 활용할 수 있게 될지는 그 이론적인 배경이나, 실제 그러한 것들이 가능한지 좀더 지켜봐야하겠다. 사실은 IBM이 제공하는 양자컴퓨터 들도 이 노이즈 문제가 있다(error correction은 하지 않음, 대개 절대온도 0도 수준의 냉각과 셋팅 후 수십 마이크로 초가 지나면 노이즈가 심해지는 상태로 흔히들 이야기한다) 이러한 상황에서 좀더 이러한 양자컴퓨터의 가치를 끌어올리려는 노력이 아닌가 싶기도 하다.

 

 제시된 MNIST예제나 Tensorflow Quantum이 지향하는 바는 앞단에 데이터를 Quantum State Set(Quantum Data)으로 변환해서 집어넣은 후에, 후 단의 고전적인 머신러닝을 통해 Quantum State Set들이 Quantum Gate들을 통과한 후의 결과를 보정하는 듯한 구조로 되어 있는데, 실제로 이러한 앞부분이 얼마나 효과적으로 작동할 수 있게 개선할 수 있는지는 아직 필자로서는 이해가 부족하다.

Quantum hybrid Machine Learning 개념도 (Google AI Blog) / 그림만으로 보면 양자 회로의 출력값을 머신러닝을 통해 보정하도록 우리가 일반적으로 아는 머신러닝을 후단에 붙여서 학습시킨다

 

반응형
Posted by 작동미학
양자컴퓨터2020. 2. 1. 01:00

Microsoft Azure에 QDK(Quantum Development Kit) 서비스가 열렸다고 해서 오늘 잠깐 방문해보았다. 생각보다 상당히 자세하게 설명되어 있어서 깊게 보는 것은 무리지만(기존에 IBM 사례보다 더 자세하게 나온다) 전체 소개해보는 글을 써볼까 한다.

 

살펴보니 19년 11월 전후에 오픈을 한 것으로 추정된다.

 

azure.microsoft.com/ko-kr/services/quantum/ 로 들어가 보자. 얼리어답터를 모집중이다. 간단히 가입하고 필요사항을 입력하면 해볼 수 있다. 다만 여기서는 실제 구동을 해보지는 않는다. (설명 문서는 화면상의 Quantum Development Kit 시작하기를 선택해서 jump해 가입없이도 볼 수 있다.)

 

Azure Quantum 첫 페이지, 얼리어답터 되기 파란 버튼을 선택하자

 

 

친절하게도 Azure Quantum의 전체 아키텍쳐가 하단에 표시되어 있다.

Azure Quantum 스택

살펴보면 맨 아래 기반에는 MS도 만들지만 Honeywell이나 IONQ같은 회사들의 양자컴퓨터 장비를 쓴다는 것을 알 수 있다. 응용 분야로는 잘 알려진 Optimization/ML, 양자 시뮬레이션, 암호학 정도를 지정한다. 기존에 IBM의 개발Kit보다 훨씬더 상세한 것이 마음에 든다. IBM은 Qubit 회로를 만들어 관측하는데 초점을 두었다면 여기는 뭔가 더 자세하다. 기대가 된다.

 

QDK 시작하기라는 것을 선택하면 전체 문서를 볼 수 있는데(왼쪽에 문서 메뉴를 보자) 죽 따라가보면 전체의 내용을 알 수 있다. 여기서는 편의상 좀 왔다갔다 해보자. 역시 엔지니어는 어떻게 설치하는가부터가 궁금하다.

MS라고 하면 뭔가 Visual Studio를 깔아야 한다는 선입견이 있는데, 역시 보면 Q#이라는 언어에 대한 소개가 나온다. 그런데 MS가 최근에 많이 변했다. linux도 내장한다는 그 혁신대로, 무려 python을 지원한다. Q#으로 짜도, python에서 실행할 수 있게 제공한다. 그리고 그것을 제일 먼저 설명한다. 마음에 든다.

그러면 Q# 으로 된 가장 간단한 소스를 살펴보자. 아래 양자 난수 생성기 예제는 그냥 Qubit하나를 만들어 상태를 조절하고 중첩상태로 만든 후 관측한다. 0과 1중 하나가 random으로 관측되겠다. 해당 문건을 자세히 살펴보면 무슨 말인지 더 자세히 알 수 있다.

 여기서 중요한 것은 어떻게 선언하고 Qubit을 어떻게 연산시키고 관측하는지 형태를 보는 것이 중요하다. IBM 개발킷과 비교해보면 그렇게 크게 다르지는 않다. 아래 첫번째 소스를 보면 q = Qubit()으로 qubit하나를 할당하고 H(q)를 통해 qubit을 중첩상태로 만든 후 측정한다. 그리고 return한다.

 

Q#의 기본 코드 예시

 

그런데 찾다가 반가운 페이지를 찾았다. Grover 검색 알고리즘 구현이라니! 사실은 Qubit으로 회로를 만드는 것들은 이미 보아왔던 것이고 이를 응용으로 이어줄 예시가 나와있다. 이후 Katas라는 tutorial 페이지를 다시 소개하겠지만, 빠른 시작 안에는 Grover 검색 알고리즘 구현에 대한 간단한 예시가 알고리즘 설명과 함께 나와있다.

 

더 멋진 상세 Tutorial인 Quantum Katas라는게 있다. Grover 검색 알고리즘에 대한 상세한 예시와, BB84 프로토콜도 구현된 것이 있다. Shor 알고리즘에 대해서는 자신들이 가진 하드웨어로는 물리적 구현이 불가능하다고 표현하고 있고 물론 예시도 나오지 않는다. 다만 여러가지 재미있는 예시들이 많이 나와서 더 공부할만하다. 각각의 제목을 선택한 후 github페이지가 열리면 description에 있는 Run tutorial 링크를 각각 선택하면 Jupyter Notebook형태로 볼 수 있다.

 

Azure가 제공하는 개발킷 Tutorial인 Quantum Katas

 

Katas안에 있는 몇가지 페이지를 훑어 보자. 아래는 기본 코스로 Qubit을 생성하고 연산을 조금더 복잡하게 수행하는 Jupyter Notebook화면이다.

X(q), H(q), S(q), Rx, Ry.. 등의 다양한 상태 조절에 대한 함수들이 나온다. 이것은 기존의 IBM 개발킷과 유사하고, 해당 연산들에 대한 대략적인 부분은 해당 블로그 글을 참조하는게 좋다(IBM의 Gates Glossary가 더 쉽게 잘 설명되어 있다)

 

하단은 양자 순간 이동 제목으로 이동한 후 run tutorial을 했을때 나오는 설명이다. 일단 QAlice, QBob 두 Qubit을 얽히면서 시작한다. 사실 양자 컴퓨팅 개발 Kit에 왜 Quantum Teleportation이 등장하는지 약간 의아하긴 한데, 다른 글에서 살펴보기로 하자.

 

Grover 알고리즘도 Katas에서는 좀더 자세하게 다뤄진다.

 

Katas의 또다른 흥미로운 Tutorial은 BB84 protocol이다. 이게 또 왜 여기나오지? 싶은데 (양자컴퓨터와는 다른 주제다) 맨 처음 설명한 Azure Quantum Stack에서 설명한 모든 것들에 대한 개발 Kit을 제공하는 것으로 이해했다. 여하튼 이녀석도 반갑다. 자주 듣던 Alice와 Bob이 등장한다.

 

 

IBM 개발툴을 살펴보았을 때보다 훨씬 흥미로운 것은 단순히 양자 컴퓨터의 logic gate에 그치지 않고 수많은 응용코드가 같이 나오는 점이다. 하나하나 둘러보면 마치 기존에 어셈블리어만 구경하다가 C언어로 된 것을 처음 만나는 느낌처럼 실제 응용을 어떻게 하는지 공부해볼 수 있겠다.

 

끝내기 전에 혹시나 해서 찾아본 결과 AWS도 AWS Braket이라는 양자 컴퓨팅 서비스를 내놓았다('19년 12월에). 다만 여기도 preview 가입을 해야 공개한다. 개괄적인 설명 문서에는 IBM 개발툴 소개와 크게 차이가 없어 보인다. 이 부분은 허가를 받으면 나중에 다시 공유하기로 하자. 아래가 소개하는 URL이다. 

 

https://aws.amazon.com/ko/blogs/korea/amazon-braket-get-started-with-quantum-computing/

 

Amazon Braket – 양자 컴퓨팅 서비스 시작하기 | Amazon Web Services

10여년 전 만우절에 양자 컴퓨팅 클라우드에 관해 쓴적이 있습니다. 그런데, 거짓말 같은 이야기가 현실이 되어서 마침내 양자 알고리즘을 작성하여 실제 양자 컴퓨터에서 실행할 수 있는 기회가 생겼습니다. 오늘 발표할 주제는 바로 진짜 클라우드 기반 양자 컴퓨팅에 관련한 것입니다. Amazon Braket – 과학자, 연구원 및 개발자가 한 곳에서 여러가지 양자 하드웨어 제공 업체의 컴퓨터를 실험 할 […]

aws.amazon.com

그리고 잠깐 검색해본 결과로는 Google은 아직 공개하지 않았다. 지금까지 공개한 기준으로 IBM, MS Azure, Amazon AWS 중에 MS Azure가 가장 풍성하게 오픈한 셈이다. 공개된 페이지에 들어가 시범사용해보면 이구동성이로 이 분야가 초기이며 더 많은 참여자들이 연구하고 활용하여 개선해줄 것을 요구하고 있다. 확실히 제대로된 응용단계에 들기 위해서는 아직도 시간이 많이 필요해보이는 느낌이다.

반응형
Posted by 작동미학
양자컴퓨터2020. 1. 5. 23:29

양자 컴퓨터에 대해서 여러가지 이야기를 해왔지만 실제 코딩은 어떤 모습일까? 나와있기는 한 것일까?

 

 물론 아직 성숙되지는 않았으나 전편 글들에서 밝혔듯이 일반 컴퓨터의 코딩이 결국에는 논리 게이트(공대 학부생때 공부하던 그 AND, OR 회로)로 환원되듯이 양자 컴퓨터도 맨 처음의 시작은 이 게이트(Gate)들의 코딩이다. 아마 나중에는 library들이 나올테지만, 지금 여기서의 확인은 Gate들의 조합 수준이다. 어떻게 보면 가장 직관적이기도 하다.

(이것으로 쇼어 알고리즘이나 그로버 알고리즘을 직접 구현해야 한다.)

 

 그러면 IBM이 양자 컴퓨터 API/SDK를 제공하고 있는 것(2017년에 공개)을 살펴보자. 아래가 그 개괄하는 URL이다. 전체적인 모습만 간단히 소개해보자.

 

https://developer.ibm.com/dwblog/2017/quantum-computing-api-sdk-david-lubensky/

 

Quantum computing gets an API and SDK - The developerWorks Blog

Explore quantum computing with our new API and SDK available for IBM's Quantum Experience. Use python scripts to access the power of quantum computing!

developer.ibm.com

아래 커뮤니티에 들어가서 가입하면 실제로 문서를 보고(Gates Glossary), 그래픽 환경의 회로 구성도 하면서(Circuit Composer), 최근 많이 활용되는 웹기반 python실행 환경인 Jupyter Notebook기반으로 예제 코딩(Qiskit Notebook)을 실행해볼 수 있다. 

 

https://quantumexperience.ng.bluemix.net/qstage/#/community

 

IBM Q Experience

Accelerate your research and applications with the next generation of the leading quantum cloud services and software platform.

quantum-computing.ibm.com

차례차례 스크린샷으로 설명해보자.

 

이곳에 가입 후 로긴해서보면 첫 화면에서는 오른쪽에 실제 on-line된 양자컴퓨터의 목록이 뜬다. 이것저것 실제 작업이 할당되어 테스트되고 있음을 볼 수 있다. 15 qubit짜리도 보인다.

 

왼쪽의 세부메뉴나 링크(Circuit Composer의 링크를 통해서도 들어갈 수 있다)를 통해 Gate Glossary 문서를 살펴보자. 양자 컴퓨팅의 연산 게이트는 AND, OR, NOT 같은 것들이 아니라 H, CX, Id, U1, U2, U3, 같은 것들이 존재한다(양자 상태 변환이 단순 bit연산보다는 더 다양하다). 이것들은 양자 상태를 반전하거나 이동하는 등 다양한 것들이겠다. 스크린샷을 한번 보자.

Quantum Gates Glossary(IBM)

오른쪽에는 Gate의 리스크가 나오고 왼쪽에는 각 게이트별 설명이 나온다. H Gate 는 상태를 절반정도 반전시켜주는(90도?)  역할을 한다. CX Gate는 아예 반전을 시킨다.

 

이런 게이트 들을 사용해 Circuit Composer에서는 GUI로 회로를 구성해서 실행해볼 수 있다. 간단하게 상태만 바꿔주는 엉터리 게이트로 회로를 구성해서(Gate를 끌어당겨 하단의 qubit들의 경로에 놓아두며 된다. 그리고 측정값을 얻기 위해 qubit 3개의 값을 c5로 내려놓는다.) Save한 후 상단 오른쪽의 Run을 눌러보자.

 그러면 화면 맨 하단에 작업이 할당되었다는 메시지를 볼 수 있고 수초 이후에 Results 칸 아래에 결과가 나온다. 각기 결과를 눌러보면 아래의 화면과 같이 나온다. 이 실행 결과는 15 qubit짜리 양자컴퓨터가 할당되어 1024번을 수행하고 난 후 각 qubit상태별 조합의 빈도수(1024번중 각 케이스가 얼마인지의 비율 형태로)를 보여준다. 해당 State 케이스 숫자(00000~00111)의 맨 오른쪽이 0번 qubit이므로(역순으로 배치된다)  00000, 00001000001이 거의 절반씩 나왔다. 처음의 q[0]의 상태가 50%쯤 반전되었고, 나머지 q[1], q[2]는 사실 큰 변동이 없으니 맞는 결과다. (00000형태로 qubit이 5개인 것으로 나왔는데 뒤 3가지 qubit만  본 것이다. qubit 3개만 할당했는데 왜 5개로 배열되었는지는 잘 모르겠다. 여하튼 무시하면 결과는 맞다.)

 

 

 그 다음으로는 실제 코딩 부분을 들어가보자. 제공되는 Getting Started샘플을 통해 위 GUI를 통한 회로 구성을 실제 Python Code로 비슷하게 진행할 수 있다.

 큐빗을 3개 할당하고 각 큐빗에 역시 게이트를 코딩으로 선언해주고 지속 진행한다(아래 사진, jupyter notebook이라는 웹기반의 python code를 실행하면서 살펴볼 수 있는 환경이다.)

Quantum API/Getting Started (IBM) - Initial Part

이후 중간과정은 생략해보고(진행 과정에서 실제 양자 컴퓨터를 할당하지 않고, 시뮬레이션 값 등을 얻을 수 있게 되어 있다), 이렇게 구성한 회로를 실제 Quantum Computer Device(Device)를 할당하여 결과를 얻자 (여기서는 시뮬레이터(Simulator) 값과 같이 나오도록 코드가 구성되어 있는 점에는 유의하자)

 

Quantum API/Getting Started (IBM) - Result Check Part

결과값은 상기 회로를 여러번 수행하여 각 qubit별 관측된 조합의 확률이다. 대략 디폴트가 1024번을 수행하도록 되어 있는데, qubit 3개가 000인 경우가 40.6%였고 111인 경우가 39.4%였다는 이야기가 된다. 나머지는 각기 낮은 빈도수로 나타났다.

 

결국 IBM이 제공하는 것은 Quantum Gate들을 배열하고 실제 초기상태에서 확률붕괴하여 관측된 값의 실제를 얻을 수 있게 해주는 셈이다.

 

생각보다 직관적이나. 이를 실제 응용하려면 앞서 밝힌 쇼어나 그로버의 알고리즘을 이해하고 조금더 복잡한 구성을 해야겠다.

반응형
Posted by 작동미학
양자컴퓨터2019. 12. 1. 00:41

사실 양자 컴퓨터의 존재에 대해 많은 기사가 쏟아져 나오는데, 실질적인 양자 컴퓨터의 등장 여부를 알 수 있는 가장 좋은 방법은 예전에 진행했던(지금은 매년 시행이 중단되었지만) RSA 소수 분해 숙제가 풀렸는지 확인하는 것이다. 오래전에 중단되어 상금은 없어졌지만, 그 문제는 흔히 회자되는 양자 컴퓨터의 성능 경쟁에서 역사적으로 가장 기사 쓰기 좋은 challenge라고 볼 수 있다. 분해해야할 큰 숫자는 공개되어 있지만, 실제 분해되어 곱해지는 소수값은 초기 그것을 만들었을때 파기해 버려 실제 정답은 아무도 모르는 숫자이기 때문이다. 개인적으로는 상당히 기대되는 기사 발표다.

 

https://en.wikipedia.org/wiki/RSA_Factoring_Challenge

 

RSA Factoring Challenge - Wikipedia

The RSA Factoring Challenge was a challenge put forward by RSA Laboratories on March 18, 1991 to encourage research into computational number theory and the practical difficulty of factoring large integers and cracking RSA keys used in cryptography. They p

en.wikipedia.org

 

양자 컴퓨터가 할 수 있는 연산은 현재 피터 쇼어의 소인수분해 알고리즘이 대표적이기 때문에 이를 통하는게 가장 좋은 것이다. 별도로 IBM은 자사의 양자 컴퓨터를 사용해 연산할 수 있는 클라우드 API를 제공하고 있지만(15 qubit) 아직까지 이를 통해 역시 위 RSA문제를 풀었다고 알려진 사례는 없으므로 유의미하게 제공하고 있는지는 의문이다. 물론 D-Wave에서 다루어지고 있다는 optimization문제에 최적화된 양자 컴퓨터 같은 것들에게는 좀 유효하지 않을 수는 있다.(그녀석들은 쇼어 알고리즘을 수행하는 형태의 양자컴퓨터가 아닌 것으로 알려져 있다)

 

https://developer.ibm.com/dwblog/2017/quantum-computing-api-sdk-david-lubensky/

 

Quantum computing gets an API and SDK - The developerWorks Blog

Explore quantum computing with our new API and SDK available for IBM's Quantum Experience. Use python scripts to access the power of quantum computing!

developer.ibm.com

혹시 실제 이 수가 어떤 것인지 궁금해하시는 분이 있을것 같아 간단히 남겨둔다.

 

과연 아래 수를 수시간안에 소인수 분해할 수 있는 컴퓨터는 언제 등장할 수 있을까? (지금 일반 컴퓨터로는 아마 엄두도 나지 않는 계산일것이다)

 

RSA challenge :

 

RSA-1024 = 13506641086599522334960321627880596993888147560566702752448514385152651060485953383394028715057190944179820728216447155137368041970396419174304649658927425623934102086438320211037295872576235850964311056407350150818751067694629205563685529475213500852879416377328533906109750544334999811150056977236890927563

 

RSA-2048 = 25195908475657893494027183240048398571429282126204032027777137836043662020707595556264018525880784406918290641249515082189298559149176184502808489120072844992687392807287776735971418347270261896375014971824691165077613379859095700097330459748808428401797429100642458691817195118746121515172654632282216869987549182422433637259085141865462043576798423387184774447920739934236584823824281198163815010674810451660377306056201619676256133844143603833904414952634432190114657544454178424020924616515723350778707749817125772467962926386356373289912154831438167899885040445364023527381951378636564391212010397122822120720357

반응형
Posted by 작동미학
양자컴퓨터2019. 6. 4. 23:08

 지난 번에는 양자 컴퓨터라는 것이 사실은 이런 작은 입자를 이리 저리 관측하지 않으며(결잃음을 방지하며) 변화시키다가 마지막에 관측하여 확정시키는 기계라는 사실을 설명했다. (예컨데 기술이 허락하는 범위에 따라 여러개의 입자를 얽히게 만들고 위상을 바꾸고 원격전송하고 등 원하는 대로 그 변화과정을 일반 컴퓨터의 논리 게이트처럼 구성한 다음에 마지막에 관측하여 실제 값을 측정하면 된다. 그리고 결을 잃지 않을 수 있다면, 사실 전자이건 광자이건 분자이건 양자 컴퓨터의 기본 큐빗으로서 역할을 할 수 있다. 따라서 다양한 H/W 방식이 존재할 수 있다. 초저온이 아니라 상온을 이야기하는 것도 그 때문이다. 예를들면 어지간해서 관측당하지 않는 빛은 상온에서도 회절무늬를 생산하긴 한다.)

 

그런데 왜 이것이 고속계산을 가능하게 하는가?

 

 이에 대해 다양한 설명이 이루어지는데 TED 강의나 여러가지를 보면 모든 경우의 수를 한꺼번에 탐색한다던가 하는 설명을 한다. 이 설명은 일부는 맞기도 하고 어떤 면에서 오해를 불러일으킬 수 있기도 하는데, 왜냐하면 관측시 그 모든 탐색의 경우의 수에도 불구하고 관측 결과는 하나일 뿐이기 때문이다. 결 잃기전 중첩이 되어있다고는 하지만 결국 관측하면 하나로 확정된다.

 

 그러나 다행히도(?) 이때 그 관측은 가장 높은 확률의 것이 나타나겠다. 매우 낮은 확률의 일은 잘 발생하지 않기 때문이다. 여기에 양자 컴퓨터의 가치가 존재한다.

 

 잠깐, 글만 난무하는 이 설명에 빛을 밝혀줄, 본인이 최근에 찾은 짧은 설명 영상을 보자 (영문, 4분부터 7분 30초까지)

https://www.youtube.com/watch?v=PzL-oXxNGVM

4:00~7:30 에 어떻게 입자를 관측해 계산을 하는지 설명이 나온다

 이는 전산을 전공하는 사람이라면 기억할 몬테카를로 시뮬레이션 방법과 어떤 면에서 비슷하다. 어떤 복잡한 구조에서의 계산이 어려우면, 해당 구조를 만들어 놓고 실제 입력을 주었을때 여러번 반복해서 실제 분포를 알아내면 된다. 즉 실제로 몇번 돌려봐가면서 계산하기 어려운 문제의 답을 찾는 것이다.

 

 자 그러면 어떻게 구성을 해서 관측을 했을때 이 측정값으로 연산을 빠르게 할 수 있는가? 가장 유명한 알고리즘 두 개는 위 영상에서도 언급된 수학자 피터 쇼어의 알고리즘(Peter W. Shor, 1994)과 로브 그로버의 검색 알고리즘(Lov Kumar Grover, 1996)이다. 쇼어의 알고리즘은 큰 수를 소수로 곱으로 나누는데 응용될 수 있고, 그로버의 알고리즘은 정렬 안되어 있는 데이터를 찾는 알고리즘이다. 이 알고리즘에 대한 설명을 여기에서 하지 못하는 것은 아쉽지만(워낙 전문분야이다보니 그 설명을 쉽게 해놓은 자료는 없다는 것이 변명이다.), 이렇게 간접 설명해 볼 수 있다.

 

 예컨데 검색 알고리즘을 예를 들어 보면, 어떤 입자의 구성에 의해서 관측을 해서 그 찾은 데이터를 실제 확인해보면 정답을 찾았는지 아닌지 알 수 있다. 사실은 이렇게 맨 처음 찾지는 못했을 테고, 곧바로 다음번 관측을 다시해서, 또다른 탐색 시도를 하면 된다. 즉 이런 관측이 이 데이터의 탐색을 확률적으로 높게 유도할 수만 있다고 해도, 이 검색은 하는 수 없이 해야하는, 처음부터 검색해나가는 것보다 훨씬 더 빠르게 진행된다.

 

 그리고 만약에 이런 과정에서 계속 이 입자의 구성을 바꿔서 더 확률을 높일 수 있다고 한다면, 계산을 좀더 가속화 할 수 있을것이다. (간단한 설명에서는 이렇게들 표현한다. 참고로 수학자인 쇼어는 양자 알고리즘 불모지인 상태에서 이 알고리즘 고안에 꼬박 1년이 걸렸는데, 본인의 정규 작업이 아니었다고 한다. 어딜가나 이런 잉여의 승리가 존재한다. 이분은 이렇게 양자컴퓨터 역사에 영원히 이름을 남겼다.)

 

 아래가 쇼어의 알고리즘과 일반 컴퓨터의 d의 자리수를 소수로 분해하는 계산에 필요한 연산수 이다. 뒤로 갈수록 연산 절약은 어마어마하다. 그렇다 이 알고리즘은 어떤 연산을 함에 있어서 확률적으로 정답에 가깝게 무언가를 알려준다. 더럽게 운이 없으면 엄청 오래 걸리겠지만 확률적으로 더 먼저 찾는다. 자연이라는 엄청난 연산기를 해킹해서 특수 목적에 쓰는 모습이라고 상상해본다.

 

https://quantumexperience.ng.bluemix.net/proxy/tutorial/full-user-guide/004-Quantum_Algorithms/110-Shor%27s_algorithm.html 발췌

 그러면 아예 좀더 범용적인 알고리즘을 찾아보면 어떨까? 이런 특수한것말고 아예 근본적으로 모든 튜링 머신을 대체할만한 기적의 IBM PC 호환 양자 컴퓨터를! 그러나 불행히도 그런 범용적인 알고리즘은 아직 없다. 분야별로 양자 역학 현상을 이용해 연산을 빠르게 하는 방법을 많은 이들이 찾고 있으나 아직은 좀 시간이 걸리는 형상이다.

 

 최근에 뉴스에서 IBM에서 5 qubits의 양자 컴퓨터 연산을 할 수 있는 클라우드 환경을 제공한다고 하는데, 위 처럼 몇가지 구성을 해서 관측 값을 얻을 수 있는 API를 제공한다고 볼 수 있겠다. 다르게 말하면, 어떤 알고리즘을 통해 이 큐빗의 관측 값을 가지고 계산을 고속화 할지는 내 몫인 셈이다. 만약에 양자 컴퓨터가 더 기술적으로 보편화되면 이러한 코딩에 대한 전문가가 필요한 시대가 올지 모르겠다. 고전컴퓨터에서 양자 컴퓨터를 호출해 지속 상호작용하면서 무언가 빠른 답을 내는 형태의 알고리즘을 분야별로 구현하는 작업이 필요하니까.

 

 

 이제 좀더 현실적인 이야기를 해보자. 그러면 지금 양자 컴퓨터는 존재하는가? 미국 NSA가 이미 만들어놓고 숨기고 있는 것인가?

 

 맨 먼저 앞서 언급했던 결 잃음(decoherence) 방지의 어려움에 대한 이해가 필요하다. 양자컴퓨터의 qubit과 연계한 입자는 우주의 어떤 것과도 상호작용하면 결을 잃게 된다. 따라서 절대 0도에 가까운 온도에, 광자도 없는 어둠 속에 격리될 필요가 있다. 그런데 또 그러다가 필요할때는 관측해서 전송해야 한다. 이 말은, 무언가 열을 가진 장비가 옆에 필요하다는 말이다. 끊임없이 주변과 통신하면서 결을 잃지 말아야하는 이런 특성 때문에, 실제 시작후 작동 가능 시간은 매우 순간적(0.0001초?) 이라고 한다. 차갑게 식히고 뭔가 시작해서 관측하면 아마 다시 온도를 내려야 하는 형태일것 같다.

 

 만약에 이렇게 성공해서 동시에 다룰 수 있는 각각의 입자 수가 50 qubits이 되면 기존 고전 컴퓨터로 거의 계산 불가능한 것들을 달성하기 시작하는데, 불행히도 지금은 이 한 qubit이 제대로 작동하는 것을 보정하기 위해서 실제로는 수많은 qubit이 필요하다고 한다(에러 보정용). 많은 회사들이 투자해서 다양한 방식으로 격리하고(광자를 이용하거나 전자를 이용하거나 또다른 무언가를 사용하는) 개선하고 있지만 아직은 없는 것도 있게 보이게 하는 마케팅의 힘이 더 우세한 모양새이다.

 

 이 즈음에서 구글에서 최근 배포한 영상을 보자. 후반부에는 양자 컴퓨터의 실물을 자세히 구경할 수 있다.

https://www.youtube.com/watch?v=k-21vRCC0RM

07:30초 부터 구글의 양자 컴퓨터를 구경해볼수 있다

언급된 여러가지 어려움에도 불구하고, 희망적으로 보는 이들은 1988년도 국내 슈퍼컴퓨터의 성능(크레이-2S : 2 GFlops) 이 현재 애플 워치(3 GFlops)만도 못했다는 것을 상기시키고 싶어한다. GTX 1050 Ti 그래픽 카드의 연산능력은 2,100 GFlops이다. 지금으로부터 30년후에 양자 컴퓨터에 기술적으로 어떤 아이디어들이 보태어질지는 아무도 모른다.

 

 그리고 최근에 자주 인용되는 양자 컴퓨터인 D-wave는 optimization에 특화된(global minumum을 찾는) 양자 컴퓨터로 양자와 관련된 현상을 이용하지만 일반적으로 기술되는 양자 연산 알고리즘(예컨데 쇼어 알고리즘)을 구현하기는 어려운 것으로 언급되고 있다. 따라서 실제로 온전히 사용하는 qubit이 몇개인 것인지, 그리고 어떠한 곳에 응용이 가능한 양자 컴퓨터인지를 잘 구별해야만, 앞으로 나올 양자 컴퓨터에 대한 기사들의 옥석을 가려낼 수 있다. 당장은 200 qubits정도의 쇼어 알고리즘을 구현할 수 있는 양자 컴퓨터가 상용화되면, 일단 과거의 공인인증서들은 차례차례 뚫리는 상황이니 이를 기준으로 삼으면 어떨까 싶다. (그런데 그 200 qubits이 실제로는 거의 다 에러를 보정하기위한 qubits이면 역시 난감해지겠다)

 

 아직까지는 양자 컴퓨터는 희망과 냉소가 난무하는 분야라고 볼 수 있다. 냉소를 따라가다보면 양자 컴퓨터는 현실적이지 못하다고 주장하는 이론가들도 꽤 있다(결 잃음 관리가 어렵다는 얘기겠다). 따라서 당장 수년은 좀더 두고봐야한다. 얼마동안은 그것은 특수 냉각장치와 함께하는 커다란 것일 소지가 높고 대부분 기업들을 위한 것일테고 상용화되어도 팔러 오기 보다는 클라우드 형태로 제공되게 된다.

 

 또한 많은 일반인 들이 오해하듯이 우리가 가지고 있는 PC를 대치하여 특수한 OS를 설치해 집에 놓아야 하는 존재는 더 당분간 아니겠다.

 

여기까지 보았다면 마지막으로 아래 비디오로 검증해보자. (영문) 

https://www.youtube.com/watch?v=JhHMJCUmq28

 

반응형
Posted by 작동미학
양자컴퓨터2019. 6. 4. 00:19

 드디어 양자 컴퓨터 설명을 시작한다. 이 글을 읽기 전에 앞서의 모든 글들을 읽어 보기를 권고한다. 양자 중첩이나, 얽힘, 파동함수의 붕괴 등을 알지 못하면, 역시 피상적으로 양자 컴퓨터를 이해하게 되고 오해하기 쉬워진다.

 

 

 양자역학이 일반 고전물리학과는 판이하게 다르기 때문에, 엔지니어에게 양자 컴퓨터만큼 다양한 오해를 갖는 개념도 드문것 같다. 대부분 엄청나게 빠른 인텔 호환 컴퓨터(?)를 상상하지만, 결론적으로는 양자역학 현상을 이용해 매우 특수한 계산을 빠르게 하는 장치이고, 가정용과는 거리가 멀다. 실제 쓰게 되더라도 아마 특수한 곳(특수 냉각기가 설치된 데이터 센터)에 설치되어 온라인으로 사용하게 될 소지가 크다. 클라우드 사업자들이 오히려 나서는 이유다.

 

 우전 양자 컴퓨터를 설명하기 위해 먼저 고전의 컴퓨터라는 것을 설명해보자. 컴퓨터(소위 튜링 머신)의 본질에 접근해보면, 그것은 어떤 입력을 받아 변형하여 어떤 출력을 내는 장치이다.

 

https://www.youtube.com/watch?v=7cXEOWAStq4

0:30초 ~ 1:00 까지 살펴보자

 01010110...의 일련의 신호를 받아서 그 신호를 원하는 대로 바꿔서 보여준다. 현대의 컴퓨터는 이러한 '계산'을 위해서 전기 신호의 높낮이(0V, 5V)로 0과 1을 표현하고, 논리 소자를 통해 이를 변형한다. 즉 핵심에는 전기(전자의 흐름)가 있고, 트랜지스터의 조합을 통해 특정 입력을 특정 출력으로 바꾼다. 그리고 이것을 일련의 소프트웨어로 가능하게 하여 프로그래밍을 교체하면 그 연산 특성을 바꿀 수 있는게 바로 컴퓨터다. 그렇다. 뭔가 입력을 하고 그것을 변형하고 출력을 하는 것이 컴퓨터이다. 간단히 설명하면 그게 전부다.

 

 이러한 구조의 근원은 아래와 같은 기본적인 변환을 하는 논리 소자를 다수로 배치하여 구성할 수가 있다는 점이고, 실제로 이 논리 소자는 트랜지스터를 반복 사용하여 특정 전기가 들어갔을때 특정 출력을 하도록 만들 수 있다.

https://www.youtube.com/watch?v=TLl4E3IV6Z0

이렇게 현대의 컴퓨터는 전기라는 자연 현상을 사용하고 있다.

 

 

 양자 컴퓨터는 어떨까? 양자는 위의 0과 1인 bit에 대비해 qubit을 가진다고 상정할 수 있다. 그런데 이 qubit의 신기한 점은 일단 생성되면 관측되기 전에는 확률로만 존재하는 녀석이다. 물론 관측되지 않을때까지만 이 상태를 유지할 수 있다. 그래서 결잃음이 발생하지 않게 극도로 냉각시키고 격리시켜야 한다.

 

이것을 아래 그림처럼 많이 표기한다(사실 조금 더 깊게 내려가면 아래의 그림은 예전 수업시간에 배운 복소수 공간을 나타낸다)

 

https://itif.org/publications/2018/09/20/itif-technology-explainer-what-quantum-computing 인용

 Bit는 명시적으로 0과 1로 처리되는데 반하여(전기의 흐름/미흐름) 이 Qubit은 아직 확정되지 않은 양자 상태를 의미한다. 그리고 미확정 상태이더라도, 그 상태에 변화를 가할 수는 있다. 전자의 스핀을 바꾸거나, 편광의 상태를 바꾼다. 이것은 위의 고전 컴퓨터에서의 논리소자 처럼 무언가 현재 상태를 가공할 수는 있게 만든다. 상태는 몰라도 바꿔주기만 하면 논리 소자처럼 변형할 수 있다.

https://xaviergeerinck.com/quantum-an-introduction 인용

 

 지금까지 설명한 내용을 전체적으로 비교해보면 아래의 그림과 같다. 맨 하단의 입력(INPUT)이 올라와서 출력(OUTPUT)으로 가는 동안 고전 컴퓨터는 논리 소자(Gates)로 정해진 입력을 변환하는데, 양자 컴퓨터는 양자 상태에서 출발해서 양자 상태를 변형(스핀 변형 등)하고 맨 마지막에는 '관측'한다.

 

http://qoqms.phys.strath.ac.uk/research_qc.html 인용

관측이라니? 왜 단순 출력이 아니고 관측인가? 대체 이것이 다 무엇인가?

 

 초기에 양자 컴퓨터가 제안되었던 것은 사실은 양자 상태의 시뮬레이션을 위한 것이었다(지금도 양자 컴퓨터의 직접 응용분야중 하나로 꼽히며 양자 컴퓨터의 선구자격인 리차드 파인만의 고안 목적이다.). 몇가지 입자의 조합된 행동들을 시뮬레이션 해야하는데, 입자A의 상태가 다양하고 그리고 입자B의 상태가 역시 다양한데, 다수의 입자의 상태 조합이 천문학적으로 많아지게 된다. 따라서 이런 상태들이 연결되게 되면, 다양한 입자들이 연속적으로 행동하는 것을 시뮬레이션하기 위해 지나치게 많은 연산을 필요로 하며, 고전 컴퓨터로는 제대로된 시뮬레이션을 하기 어렵게 된다. 이 경우에는 흔히들 대개 근사치를 쓰게 마련인데, 이 근사치로 계산한값과 실제가 터무니없게 차이가 난다고 한다.

 

 즉 양자를 직접 탐구하기 위해서는 실제 양자 현상을 반영하는 시뮬레이션을 행할 수 있는 위의 장치가 필요한 것이고 이를 양자 컴퓨터라고 불렀다는 의미다.

 

 이렇게 일련의 입자들의 복합한 변환들을, 상기 양자 컴퓨터가 구성하여 최종 관측해서 알아낼 수 있다는 것은 여기서 이해하고 넘어가자. 다만 언급했듯이 이 과정에서 앞서 양자역학에서 논의되던 결 잃음을 주의해야 한다. 결 잃음은 qubit의 상태를 확률붕괴시킨다. 더이상 확률로 존재하지 않는다. 따라서 양자 회로(?)를 충분히 거치는 동안에는 관측되지 않다가 최종 우리가 원할때만 관측되어야 의도된 결과를 얻을 수 있다. 결 잃음에 대한 앞서 글에서의 실험을 상기해본다면, 그 조건이라는 것이 절대온도에 가까운 온도를 우선 의미하기 때문에, 이러한 제어가 쉽지 않을것이라는 것은 이제 예측해 볼 수 있겠다. (결을 잃지 않기 위해서 이 중간 연산 과정에서 전 우주가 관측하지 못하도록 유지 해야한다.)

 

 다음시간에는 이 양자 시뮬레이터가 관측이라는 것을 통해 어떻게 고전 컴퓨터가 해내지 못하는 빠른 연산을 일부 가능하게 하는지 살펴보자.

 

반응형
Posted by 작동미학
양자컴퓨터2019. 6. 3. 00:37

양자 원격 전송(Quantum Teleportation)은 실험실에서는 성공되었다고 발표되었으나 아직 응용화에서는 시간이 소요되는 기술이다. 그리고 이 양자 원격전송의 독특한 점은 양자 얽힘(entanglement)을 이용하다보니 광속을 넘어서는 특성이 있어서 마치 순간 이동으로 오해 받는다는 점이 있다.

 

그나마 이 양자 원격전송 기술을 짧게 설명해주는 영상은 아래의 영상이다.

 

https://www.youtube.com/watch?v=WrBURp-IoWI (9분 40초 부터)

핵심은 얽힌 두 입자를 원거리로 이동시킨 후에, 또다른 입자의 양자 상태를 다른 그 얽힌 두 입자를 통해 다른 한쪽으로 전송한다는 이 말(결국 하나의 입자 양자 상태를 원거리의 다른 양자 상태로 이동하게 된다)인데, 이게 어렵다.

 

 첫번째로 양자는 불확정성의 원리로 원래는 동일한 상태로 복제할 수가 없다. 관측 자체가 원본을 훼손 즉 상태를 바꾸기 때문이다. 그런데 위에서는 복제가 아니라 전송이다. 전송을 하면 원래 입자의 양자 상태가 다른 입자로 전송된다. 즉 원래 입자는 더이상 과거의 그 입자가 아니게 된다. 말 그대로 기존의 것을 보존하지 않는 '전송'이다(원본이 사라지는 전송이다)

 

 두번째로 이 전송이 광속을 초과해 발생한다. 그런데 이러한 것이 실제 정보의 이동인 것은 아니다. 정보로서의 이동이라는 의미를 지니기 위해서는 몇가지 한쪽에서 측정한 정보가 원거리로 전송(?)되어야 한다. 이 전송은 광속을 초과할 수 없어서 결국은 광속을 넘은 정보 전달은 불가능하다.

 

즉 이 실험의 의의는 원래 복제가 되지 않은 양자를, 전송이라는 형태로 원거리로 옮길 수 있는 방법이 존재한다는 것이 가장 크다.

 

이 기술은 따라서 사실은 사물을 원격으로 전송하는 스타트렉의 응용과는 거리가 좀 있다. 아마도 양자 컴퓨터에서 필요시 양자를 전송하여 계산 능력을 개선하는데 사용될 수 있지 않을까 기대하고 있는 모양이다. 특히나 조심해야 할 것은 이 기술이 마치 광속을 넘어서는 정보 전송을 위한 방법처럼 해석되는 것이다.

 

이를 테면 아래 기사는 좀 사람을 헷갈리게 만든다.

 

http://biz.chosun.com/site/data/html_dir/2017/07/14/2017071401863.html 

 

[IF] 아인슈타인도 "귀신 같은 현상"이라던 양자통신, 현실이 되다

지난달 16일 중국이 세계 최초로 양자통신위성 '묵자(墨子)'호를 이용해 1203㎞ 떨어진 두 지상 관측소인 '더링하'와 '리장'에서 양자 정보..

biz.chosun.com

실험 내용은 장거리 상에서의 상기 양자 원격 전송을 성공했다는 의미인데, 기사 내용은 온통 매우 빠른 정보 전송에 대해 이야기하고 있다. 안톤 차일링거 교수까지 인용했지만, 광케이블을 사용하지 않고 위성으로 성공한 부분이 기존과 다르기는 하나, 그것이 광속을 넘어선 정보 전달에 사용된다는 의미는 아니겠다. 양자 전송의 가장 기이한 점은 양자 상태가 털끝하나 변형없이 그대로 원거리의 양자로 전송된다(손실없이)는 점이다.

 

반응형
Posted by 작동미학
양자컴퓨터2019. 6. 2. 23:58

양자 정보 통신 기술 중에 상용화 수준에 더 가깝고, 이론적으로 잘 정리된 부분이 이 양자 암호 통신이다. 양자 컴퓨터 처럼 아직도 멀었다고 평가되지는 않으면서도 당장에도 쓸모가 있어 보이는 것이고, 실험실에서는 물론 성공했고, 실제 산업에 사용될만큼 성공했다는 이야기도 무성하다.

 

이 양자 암호 통신에서 가장 잘 알려진 알고리즘이 바로 BB84 (Bennett & Brassard가 84년도에 고안, IBM, 처음에는 해킹이 불가능한 양자 화폐라는 아이디어에서 출발했다고 한다.)이다.

 

양자 암호 통신에 관한 가장 양질의 설명은 앞서 추천한 책 "구글 신은 모든 것을 알고 있다"의 "양자 암호의 세계" 편이다 (이해웅 교수님, p.298~p.318). BB84는 통신을 하는 두 주체가 광자의 편광을 가지고 전송과 측정 및 확인을 하면서 이론적으로 안전한 통신을 하게 해준다.

벨 부등식에 대한 실험에 익숙하면 좀더 편안하게 이해할 수 있다.

 

책의 p.315 페이지의 요약을 그대로 발췌해보자. 느낌만 알아보자

 

1) 키 전송 : 앨리스(Alice)가 H,V,D,A 네 상태에서 무작위로 선택해서 단일 광자를 보냅니다

2) 키 측정 : 밥(Bob)이 앨리스가 보낸 광자들을 받아서 측정을 하는데, 투과축을 H나 D중에서 무작위로 선정합니다

3) 기저 알림 : 각 광자들에 대해서 측정 기저가 맞는지를 앨리스와 밥이 서로 확인해서 맞는 광자들만의 숫자를 보관합니다. 즉 앨리스는 H,V의 기저인지 또는 D,A의 기저인지를 알리고, 밥은 자신이 올바른 기저에서 측정한 광자들이 어떤 광자들인지를 알립니다. 앨리스와 밥은 앨리스가 보낸 기저와 밥치 측정시 사용한 기저가 같은 광자들(대략 전체 광자의 반 정도)만을 보관합니다.

4) 도청 테스트 : 측정 기저가 맞는 광자 중에서 무작위로 선택해서 편광 상태가 맞는지를 앨리스와 밥이 서로 검사합니다. 다 맞으면 도청이 안된 것이지만 그것은 이상적일 떄이고 오차 비율이 실험이 허용하는 정도보다 작으면 도청이 없다고 판단하고 다음 과정으로 갑니다. 도청 테스트를 통과하면 앨리스에게 밥으로 키가 안전하게 전달되었다고 판단할 수 있습니다.

5) 정보 조정과 비밀 증폭: 마지막으로 거치는 과정인데 실험 오차를 보정하는 것입니다. 여기서는 설명을 생략하겠습니다. 도청 테스트에서 사용된 광자들을 제외한 나머지 광자들에 정보 보정과 비밀 증폭을 수행해 최종적으로 사용할 키를 만듭니다.

 

 

 이 BB84 알고리즘은 양자가 관측되면 확정되고, 다시 측정되기 이전 상태로 돌아가지 못하는 현상을 역 이용했다고 보면 된다. 양자는 원본을 유지한체 복사할 수가 없다는게 가장 직관적인 설명이다. 이 복사를 통한 달라짐이 잘 검출되도록 적절한 프로세스를 만들어 통신하면, 이론적으로 도청여부를 늘 파악할 수 있는 매우 안전한 통신 방법이 만들어지게 된다.

 

 이 방법과 현재 공인인증서의 핵심 체계인 RSA 암호 체계(공개키 암호화 방식)를 비교해보면, 매력은 곧바로 드러난다. RSA는 큰 수의 소인수 분해가 장시간이 걸린다는 점에서 공개키를 가지고 비밀키를 알아내기 어렵게 되어 있는데, 사실은 이 암호화 방식은 시간이 한참 지나면 결국 풀린다. 이를테면 공개키/비밀키를 통한 통화 내용을 기록해 놓고 미래에 엄청난 컴퓨터로 그 내용을 분석해보면 뚫릴 수 있다. 즉 언제고 엄청난 컴퓨팅 파워가 나타나면 뚫리는 형태이다.

 

 그런데 양자 암호 통신은 그런게 없다. 이 말도 안되는 기이한 양자 역학적 현상을 이용해(관측시 파동 함수 붕괴) 완전히 안전함을 보증할 수 있다(정확히는 도청했을때 감지가 가능하다. 그 결과를 버리면 된다). 공개키/비밀키는 사실은 도청때문에 생겨난 녀석인데, 도청이 없으면 기존의 대칭키(키를 가지고 암호화 복호화 하면 된다)만 가지고 간단히 암호화하면 끝이된다.

 

 매력적이지 않을 수 없다. 도청걱정없는 완전히 안전한 통신 방법이라니! 그것도 암호화키를 잠깐 주고받을때만 도청을 피하면 된다. 2차대전때 에니그마 암호 해석이 독일의 패전에 크게 기여했다고 생각하는 모든 군대를 비롯해서, 이 세상 모든 범죄자와 기관들도 갖고 싶어하는 암호화 방법일 테다.

 

 또한 재미있는 것은 RSA의 근간이 되는 큰 수의 소인수 분해에 대해 양자 컴퓨터로 상당히 빠른 시간안에 가능하다는 쇼어의 알고리즘이 존재한다는 사실이다. 따라서 RSA는 양자 컴퓨터가 상용화 된다면(아직은 요원해 보이지만) 곧바로 뚫리게 되고, 양자 난수와 양자 암호화 통신으로 통신하면 안전하게 되는 상황이 연출되게 된다.

 

 현실적으로는 양자 컴퓨터의 상용화 시기는 많은 이들이 빨라질 것이라 기대하고 있으나 여전히 그것이 십수년안에 가능할지는 논쟁 중이고, 아직 RSA 암호화 알고리즘을 격파할 엄청난 컴퓨터는 존재하지 않는다고 믿고 있다. 따라서 이 양자 암호화 통신의 기술 가성비는 떨어진다. 왜냐하면 이 양자 암호 통신은 단일 광자를 다뤄야 하는 힘든 기술적인 문제가 있다(꽤 많이 풀어나갔다고 알려져 있더라도)

 

 참고로 RSA든 양자 암호화 통신이든 대부분 암호화 키 정도를 주고 받지 전체 통신을 이것으로 암호화하지는 않는다. 그래서 양자암호화 통신은 QKD(양자 키 분배)라고도 불린다.

 

 그러면 시장에서는 어떨까? SKT는 양자 관련 기술에 오래전부터 투자를 해오고 있는데 아래 관련 뉴스이다.

 (아래 기사 소개는 순전히 개인적인 관점이고 회사에 대한 이해 관계는 없다. 국내 회사가 미래 기술에 관심갖는 것은 개인적으로 대환영이며, 기사로는 상황을 간접 예측할 수 있는 정도라고 생각하긴 한다.)

 

http://it.chosun.com/site/data/html_dir/2018/11/10/2018111001965.html

 

‘8년 뚝심’ SKT 양자암호통신, 납품 실적은 ‘0’

SK텔레콤은 양자암호통신 기술을 8년째 갈고 닦는 중이지만 실속이 없다. 국내 양자암호통신 인증절차가 없어 자체 개발한 장비를 어디에도 납품하지..

it.chosun.com

https://www.mk.co.kr/news/business/view/2019/03/161588/

 

SK텔레콤 "5G 시대, 양자암호 보안기술로 해킹·복제 원천봉쇄" - 매일경제

SK텔레콤은 5G 가입자 인증 서버에 해킹 방지 기술 양자난수생성기(QRNG)를 적용했다고 18일 밝혔다. 이날 SK텔레콤은 서울 삼화빌딩에서 기자가담회를 열고 "전국 데이터 트래픽의 핵심 전송 구간인 서울-대전 구간에 IDQ의 양자키분배(Q

www.mk.co.kr

 기사를 보면 양자암호 관련한 장비를 실제 아직 외부 판매하고 있지는 않고, 내부적으로 특정 구간에 해당 장비를 시범 운영하고 있는 것으로 보인다. 양자 암호 통신에서는 단일 광자를 통한 안정적인 송출 및 검출이 필수이기 때문에 아마도 이에 대한 상당한 수준의 검증이 진행되어야 할것으로 보인다(이 난감한 기술을 이해하고 있는 공인 기관의 누군가가 해야하는 문제가 있겠지만). 이 단일 광자를 처리하는 기술이 안정화되고 가성비까지 확보된다면, 일단 광으로 통신하는 구간에서는 양자 암호 통신이 가능해지지 않을까 기대해본다. 다만 무선 영역(위성으로 뭔가 시도는 하고 있는것 같지만 여하튼)이나 가정에서(장비 구매 이슈) 등은 아직은 좀 난감하겠다. 상용화는 기관과 기관끼리 광통신망 상에서 우선 진행된다고 보는게 합리적이겠다.

 

 또한 양자컴퓨터의 기존 RSA 비대칭 암호화에 대한 방어로 양자내성암호라는 방법론도 존재한다. 양자암호통신이 하드웨어 상으로 구현하기가 현대 기술로는 매우 난해하다는 사실을 감안하면, 매우 싼가격으로 기존 암호화를 변형하여 다시한번 당분간은 풀 수 없게 만드는 기술이 더 검증하기도 쉽고(오히려 해당 이론과 코딩으로 잘 구현되었는지만 검증하면 되니까, 양자암호 통신 장비의 보편적인 검증법을 알아내는 것보다는 훨씬 쉽다.) 경제적일 수 있다.

https://biz.chosun.com/site/data/html_dir/2020/06/10/2020061000756.html

 

LG유플러스, 세계 최초 광통신장비에 새로운 양자암호기술 적용

LG유플러스는 서울대학교 산업수학센터, 크립토랩과 함께 양자내성암호(PQC: Post Quantum Cryptography) 기술을 개발해 고객..

biz.chosun.com

 

 여하튼 양자암호통신의 시장성에 대해서는 상황을 좀더 볼 필요가 있다. 

 

반응형
Posted by 작동미학