마이크로소프트의 양자 컴퓨팅 코스 엿보기

마이크로소프트의 양자 컴퓨팅 코스 엿보기

마이크로소프트(Microsoft)는 운영시스템, 게임(Xbox) 심지어 하드웨어까지 정복한 기업들 중에 가장 유명한 기업일 것이다. 마이크로소프트는 또한 최신 컴퓨터 공학을 연구하는 수많은 연구센터들을 보유하고 있다. 당연히, 마이크로소프트도 양자 컴퓨팅에 뛰어든 이들 중 하나다. 마이크로소프트가 어떻게 양자 공간, 양자 프로그래밍 랭귀지 및 소프트웨어 스택에 대한 사람들의 이해를 돕고있는지 QZ에서 조사해보았다.

양자 프로그래밍 Q#

마이크로소프트는 누구나 양자컴퓨터를 프로그래밍 할 수 있도록 자체 랭귀지를 만들었다. 랭귀지는 마이크로소프트에 의해 고안되었고 지원받지만, 오픈소스이기에 최신 리서치와 혁신에 맞춰나갈 수도 있다.

백지로 시작했지만 또 익숙한 랭귀지인 Q#는 양자 서킷을 만드는데 친숙하고 직관적인 방식을 자랑한다. 기존 프로그래머들은 ‘#’이 붙은 이름이 익숙할텐데 ‘#’은 마이크로소프트가 C#와 F#처럼 차세대 객체지향랭귀지에 접목한 용어다.

프로그래밍 랭귀지로서, Q#는 파이썬(Python), C# 및 F#로부터 익숙한 요소들을 차용한다. 또한 loops, if/then 명령어, 공통의 데이터 타입을 사용하여 프로그래밍의 기본적인 모델을 지원하고 있다.

마이크로소프트의 양자 개발도구(Development tool)

마이크로소프트는 오늘날 많은 프로그래머들이 태어나기도 이전부터 개발도구들을 만들어왔다. 또 개발자들이 소프트웨어 제작을 하는 데에 영리하고 단순하면서 빠른 설계 도구들을 만드는 데에 이미 한 획을 그었다. 필자는 1990년대에 VisualBasic을 쓰면서 코드와 어플리케이션을 매우 빠르게 만드는 능력에 깊은 인상을 받았던 기억이 있다. 이렇게 마이크로소프트는 사용자들이 eco-system에서 상품을 사용하기만 하는 것이 아니라 개발자들이 eco-system 내의 소프트웨어를 위한 상품을 제작하는 데에 필요한 ‘형식’을 갖추고 있다. 따라서 마이크로소프트가 누구나 접근가능한 프로그래밍의 장을 만든 이번 프로젝트는 그리 놀라운 일은 아니다.

과거에 유료였던 Visual studio 같은 도구들은 현재 무료버젼이 나와있다. 특히 많은이들이 이야기하는 것이 VScode다. VScode는 Visual Studio(언어에 관계없이 많은 프로그래머들에게 전문적인 도구로 선택받아왔다)의 초기버젼이다. VScode는 스타트업부터 대기업들까지 우리에게 친숙한 수 많은 기업들에 녹아있으며, 많은 기업들이 유료인 통합개발환경(Integrated Development Environment: IDE)에 거리를 두고있다.

양자 개발 키트

랭귀지는 양자 컴퓨팅을 향한 여정에 겨우 일부분이다. 코드를 쓰기 위해서는 에디터가 필요하며 그 코드를 양자 서킷으로 번역할 무언가가 또 필요하다. QDK(양자개발키트/Quantum Development Kit: QDK)가 필요한 것이 이 때문이다. 예를 들어, 싱글큐비트의 양자중첩을 만들기위해 Q# 프로그램을 취하면, 그 코드는 물리적인 큐비트 (하드웨어)든 시뮬레이션된 큐비트 (소프트웨어)든 양자중첩을 만들기 위해 작동해야한다. QDK는 프로그래머들이 적절한 하드웨어 혹은 소프트웨어를 선택하여 서킷을 상대적으로 용이하게 운영하도록 할 것이다.

대부분의 사용자들은 본인의 양자 컴퓨터가 없을 것이므로, 접근할 수 있는 양자 컴퓨터가 필요할 것이다. 양자 컴퓨터에 접근한다는 것은 (보통 방 하나를 꽉 채우는 사이즈다) 즉 클라우드를 통해 사용한다는 것이다. 마이크로소프트는 양자컴퓨팅솔류션을 Azure 플랫폼에 통합시켰다. Quantum Azure는 사용자들이 서킷을 실제 서킷에 적용하여 실험 및 운용할 수 있도록 사용자들에게 열려있으며, 다양한 하드웨어에서 적용이 가능하다.

예를 들면, 다섯개의 양자 하드웨어 제공자들이 있는데 큐비트의 양자중첩을 만드는 데에 각자 다른 기술을 갖고있지만 모두 마이크로소프트 스택에서 운영할 수 있다. 즉 서킷을 개발하는 일은 근본적인 하드웨어에 영향을 받지않지만, 현실적으로는 큐비트 자체의 다양한 물리적 작동와 정확도의 차이 때문에 항상 가능한 것은 아니다. 그러나 단지 기본적인 것을 이해하고자 한다면, 큐비트는 이론적인 대상일 뿐이며 큐비트의 물리적 특징을 이해할 필요까지는 없을 것이다.

요약하면, 코드를 짜고, 양자 서킷을 컴파일하고, 소프트웨어든(개발자들에게) 양자 하드웨어든 (실제 작업량) 이러한 서킷을 작동하는 데에 가능한 매끄럽게 하는 것이 목표라고 할 수 있다.

마이크로소프트의 양자 컴퓨팅 코스 엿보기
마이크로소프트의 Azure Quantum 서비스에 올라온 하드웨어 제공자들. 이 다섯 업체들은 실제 양자 서킷을 그들의 하드웨어에 작동할 수 있다. 그러나 마이크로소프트는소프트웨어에서 자체 QDK를 이용해 양자 서킷을 시뮬레이션 할수 있는 개발도구를 제공한다.

마이크로소프트의 Azure Quantum

클라우드에 기반한 이 서비스는 아마존(AWS), 구글(GCP) 그리고 IBM과 같은 많은 기업들에 의해 개발된 클라우드 인프라스트럭처의 성공모델을 따르고 있다. 즉 이 세상에 일반이 이용할 수 있는 양자 컴퓨터가 거의 없기에, 실제 서비스를 운용하는 일은 옛날 얘기가 되었다.

“양자 Quantum”을 프로그램하는 법을 배우기

아마도 양자 컴퓨팅이 고전컴퓨팅과의 가장 다른 점은 양자 컴퓨터가 반드시 하드웨어에 체현되거나 소프트웨어에 시뮬레이션되는 양자 서킷으로 컴파일되어야 한다는 것이다.

근본은 매우매우 다르기 때문에, 양자 물리학을 이해하는 것이 필수는 아니지만 도움은 된다. 양자 프로그래밍은 단순히 새로운 컴퓨팅 랭귀지가 아니라 문제가 제시되고 코딩되는 방식에 있어서 고전 컴퓨팅과 완전히 다른 출발선에 있다. 다시말하면 튤링은 고전적인 접근과 꽤 비슷한 느낌을 주기도 한다.

마이크로소프트 퀀텀 모델

마이크로소프트는 사전 지식이 거의 없거나 부족한 많은이들이 양자서킷을 이해하고 개발할 수 있도록 일련의 양자 튜토리알을 만들어왔다.

코스는 선임 연구원들 및 마이크로소프트의 양자 프로그래머들에 의해 개발되었다. 모듈은 자기주도로 학습속도를 조절할 수 있어서 배우는 이들이 어려운 개념을 만나면 충분히 시간을 갖을 수 있도록 고안되었다.

Quantum Computing fundamentals path내에는 네가지 모듈이 있다. 이 네 가지 모듈은 경험이 거의 없는 이들을 Grover의 알고리즘처럼 복잡한 서킷을 제작하는 데까지 끌어올리는 목표를 갖고있다. 아래는 네가지 모듈은 Quantum Computing fundamentals path로 구성되어있다.

  1. Create your first Q# program by using the Quantum Development Kit
  2. Explore the key concepts of quantum computing by using Q#
  3. Solve graph coloring problems by using Grover’s search
  4. Solve optimization problems by using quantum-inspired optimization

각각의 모듈에서 XP(경험치/ Experience points)라는 점수를 얻을 수 있다. 현재는 승인이 없는 상태이지만 가까운 미래에 자격증/수료증을 수여하는 구체적인 방안을 모색중이라고 한다.

마이크로소프트의 양자 컴퓨팅 코스 엿보기
Microsoft와 함께 양자 컴퓨팅의 기초를 배워보자 . 네가지 모듈은 단순한 이해부터 Grover 알고리즘까지 정복하는 것을 목표로 한다. 자기주도학습으로 원하는 때에 본인의 속도에 맞게 배울 수 있다.

모듈의 가장 좋은 점은 선수과목이 거의 요구되지않아 많은 이들이 접근할 수 있다는 것이다. 예를들면 모듈은 어떻게 큐비트가 작동하는지 혹은 기본적인 물리법칙(대학원에 안가도 될만한)을 알려주기도 한다.

예를들면 한 모듈은: Q#를 이용하여 양자컴퓨팅의 개념을 이해하고, 학습자들은 주요 개념 및 양자시스템(bra and ket)에 결부된 랭귀지, 양자중첩에 대한 기본지식과 이게 수학적 형태로 어떻게 쓰이는지를 배운다.

각 모듈은 수많은 정보를 담고있는데, 정보가 매우 많으니 충분히 시간을 갖고 기억이 안나면 다시 돌려보는 등 여유를 갖는 것이 좋을 것 같다. 짜여진 스케줄이 없으니 언제든 와서 배울 수 있다는 장점이 있고 게다가 이 코스는 완전 무료다.

Module Material Illustrating How Quantum Systems Are Different From Classical Systems. These Basics Will Help Learners Really Get To Grips With The Basics. No Matter Which Quantum Language Is Used.
모듈 자료가 어떻게 양자 시스템이 고전 시스템과 다른지에 대해 설명하고 있다. 학습자들은 이러한 기본적인 이해부터 시작할 수 있으며 어떤 양자 랭귀지를 쓰는지에 구속받지않고 학습할 수 있다.

물론 본인의 서킷을 만들기위해서는 Q#을 쓰게되며 모듈은 Q#를 사용하여 어떻게 기본적인 서킷을 만들수 있는지 안내해줄 것이다.

Creating A Quantum Superposition In Q#. Measuring The State Which Is An Equal Superposition Functions As A Random Bit - Meaning We Don'T Know Whether The Output Will Be 0 Or 1.
Q#에서 양자 중첩을 만들기. 양자중첩함수와 동일한 상태를 랜덤비트로 측정하기-즉 결과가 0일지 1일지 모른다는 의미다.

코드 예시와 결과를 통해 예를 만들수 있으며 튜토리알을 따라할 수도 있다. 기본적인 세부사항까지 심혈을 기울여 만들어진 이 튜토리알에 매우 놀랍다. 너무 어렵거나 세세하지 않으면서 양자 컴퓨팅을 소개하는 일은 사실 너무 어려워서 많은 사용자들을 낙담시키기 때문이다.

양자 튜토리알 모듈과 학습재료는 여기서 찾을 수 있으며 모든 것이 무료다 – 상당히 큰 양자 작업량을 운영해야하는게 아니라면…