파이썬과 양자 컴퓨팅 — 제 3장에서 자료 수집과 실전 테스트에 힘쓴다

Talk is cheap, show me the code.

Samuel Choi
6 min readApr 17, 2019
Photo by Taylor Grote on Unsplash

1, 2편에서 프로젝트의 개념과 원리를 설명했다면, 이제는 어떤 플랫폼, 라이브러리, 자료 등등이 있는지 알아보고 적용해볼 차례다.

파이썬과 양자 컴퓨팅이라며 큰소리를 쳐 놓고 대체 파이썬은 언제 나오는 거냐, 라고 생각하셨던 개발자 제군 여러분, 안심하시길. 드디어 오늘은 파이썬 라이브러리들이 등장한다.

여태 이론이 가득 나오고 실전부터 보여주지 않은 점은 코드 이해를 위해서 기본적 이론 설명이 불가피해서 그런 것이니 너그러이 이해해 주시길 바란다.

그럼 시작.

우선 양자컴퓨팅을 개발자들이 시뮬레이션하는 방법은 두 가지로 나눌 수가 있다. QC 언어와 QC 라이브러리다(슬슬 양자컴퓨팅이라 쓰기도 귀찮아졌다. 이하 QC — Quantum Computing). 이 두 가지 전부 절찬리에 개발되고 있다.

Quantum Computing Language

먼저 언어부터.

가만히 보면 의외로 이쪽이 입문자들에게는 주목을 더 받고 있는 듯하다. 이건 나의 개인적 추리지만, QC 자체가 완전히 새로운 체계라는 이미지가 있기에, 그 개발 수단도 새로운 언어인 쪽이 각광받는 듯하다. 하지만, 이것으로 현실적인 개발을 하는 것은 양자 라이브러리에 비해 약간 뒤처지는 것이 아닌가 싶다. 기존 언어와의 접착력이 떨어질 수 있어서…라고 생각하면 개발자로서 너무 좁은 식견을 가지고 있는 걸까.

하지만, 순수 언어가 필요 없느냐고 하면 그건 절대로 아니다. 파이썬과 C의 관계처럼, 많은 양자 라이브러리들이 이 업계 표준이나 다름없는 OpenQASM(Open Quantum Assembly Language)을 사용하기 때문이다. 결국 원시적으로 보이는 양자 언어들도 더 고차원적인 시스템 구축에 필수불가결하다고 볼 수 있다.

현존하는 양자 언어에 대한 리스트는https://www.quantiki.org/wiki/quantum-programming-language 를 참고하길 바란다.

Quantum Library

라이브러리라고도 불리고, 많은 명칭들이 있다. 루비에서는 젬이라 하고, 파이썬에서는 패키지…등등. 원래 언어에서 온라인 설치, 임포트가 가능한 것들은 수없이 많지만, 일단 라이브러리라고 부르자.

파이썬 패키지 저장소에는 양자물리, 양자컴퓨팅을 위한 라이브러리들이 많이 올라와 있다.

  • Qiskit — IBM에서 제작. 인지도가 가장 높다. 양자 게이트 방면에서는 압도적 우위를 점하고 있으며, 지구 곳곳에 위치한 자신들의 양자컴퓨터에서 프로그램을 실행할 수 있게 해준다. 이 컴퓨터들을 Real Device, Real Backend라고들 부른다.
  • ProjectQ — ETH Zurich (취리히 공과대학) 에서 제작. IBM의 Real Device를 사용할 수 있고, 좀더 직관적이다. Qiskit과 ProjectQ를 병행하거나 번갈아서 사용하는 사람들도 많다.
  • Cirq — Google에서 제작. 그런데 사실 거의 써보질 않아서 어떤지는 잘 모르겠다. 조만간 이것저것 건드려 보려고 한다.
  • Dwave Leap(Ocean) — D-Wave 제작. 이쪽도 이쪽대로 상당한 기능들과 편의성을 자랑하고, 특히 여러 가지 최적화 문제들을 풀기 위한 함수들을 패키지에서 제공한다.

이 외에도 유용한 라이브러리들이 많으며, 다른 언어들도 이런저런 라이브러리들을 제공하고 있다. 언어와 마찬가지로, 리스트는 https://www.quantiki.org/wiki/list-qc-simulators 에 많이 나와 있으니 참고 바람.

양자컴퓨팅 관련 자료, 웹사이트

잘 찾아보면 꽤 많다. 우선, 전에도 말했듯이 이 미디엄에는 관련 자료가 매우 풍부하다. Qiskit도 미디엄에 관련 자료를 포스팅 중이다. Dr. James WoottonJonathan Hui의 포스팅들도 볼 만하다.

또한, 위 인물들을 포함한 양자컴퓨팅 관련 단체/인물들은 대부분 트위터에 관련 소식을 업데이트하고 있다. 컨퍼런스, 웨비나, 새로운 서비스 같은 내용들이 올라오니 체크하는 것도 좋다(잠깐 광고하자면 우리도 QBranch17 에서 활동중이다).

커뮤니티로 말할 것 같으면 Reddit의 r/QuantumComputing이 제일 활발한 듯하다. 레딧답게 상당히 매니악한 느낌도 든다.

좀더 메마른(?) 자료를 보고 싶다면 Quantiki를 추천한다. 아까도 몇 번 이곳의 링크를 참고했는데, 간단명료한 설명이 특징이다.

관련 도서

  • Hidden In Plain Sight 10: How To Program A Quantum Computer (by Dr. Andrew H. Thomas)
  • Practical Quantum Computing for Developers: Programming Quantum Rigs in the Cloud using Python, Quantum Assembly Language and IBM QExperience (by Vladimir Silva)
  • Mastering Quantum Computing with IBM QX: Explore the world of quantum computing using the Quantum Composer and Qiskit (by
    Dr. Christine Corbett Moran)
  • Quantum Computing for Everyone (The MIT Press) (by
    Chris Bernhardt)

위 언어와 라이브러리들, 커뮤티니와 도서들을 참고하면 충분히 흥미로운 실험들이 가능하다.

자네는 평소에 코드를 소중히 하지 않았지

끝은 새로운 시작이다 — 야밤의 공대생 만화

하지만 이대로 끝나면 섭섭하다. 이래선 레퍼런스를 잔뜩 가져온 것일 뿐, 직접 뭔가 해보지 않으면 의미가 없다.

그러므로 이번 포스트의 엔딩은 우리가 Qiskit을 사용해 만든 난수 생성기 코드로 장식해서 실전 테스트의 한 발짝을 내딛고, 다음 편에서 이어갈 계획이다.

위 코드는 우리가 Qiskit으로 만든, 8큐비트 이진 난수를 생성하는 기본적인 코드다. 대충 어떤 구조로 작동하는지 어렵지 않게 이해할 수 있을 것이다.

쉽든 어렵든, 다음 장에서는 위 코드의 작동 구조를 파헤치고, ProjectQ에 대해서도 이야기한다.

오늘은 여기서 마무리한다. 사실 내일도 올릴 수 있을지는 모르겠다. 자료 작성부터 할 일이 산더미라서. 하지만 멈출 생각은 없다.

D-2.

--

--