양자컴퓨터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 작동미학