양자컴퓨팅은 오래전부터 그 개념만이 전해져왔을 뿐, 실제로 이를 활용하거나 사용한 경우를 접하기는 어려웠습니다. 이에 IBM에서는 Q Experience를 통해 Cloud 환경상에서 실제의 양자 컴퓨팅 사용자 경험을 제공하여 일반 사용자들도 양자컴퓨터를 활용하여 프로그래밍을 해볼 수 있도록 공개하였습니다.

  • 양자 컴퓨팅 또는 양자 컴퓨터는 얽힘이나 중첩 같은 양자역학적인 현상을 이용하여 자료를 처리하는 계산 기계이다. 고전적인 컴퓨터에서 자료의 양은 비트로 측정된다. 양자 컴퓨터에서 자료의 양은 큐비트로 측정된다. 양자 계산의 기본적인 원칙은 입자의 양자적 특성이 자료를 나타내고 구조화할 수 있다는 것과 양자적 메카니즘이 고안되어 이러한 자료들에 대한 연산을 수행할 수 있도록 만들어질 수 있다는 것에 기한다. -Wikipedia

  • 본 포스팅에서는 IBM Q Experience를 활용하여 양자컴퓨터를 사용한 프로그래밍을 진행하며, 이 과정에서 Composer와 QISKit을 시작하는 법을 다루고자 합니다.

    Quantum Composer


    https://quantumexperience.ng.bluemix.net/qx/experience
    IBM Q Experience 계정을 활성화하기 위해 위의 링크로 이동합니다. 링크로 이동하면 아래와 같은 화면을 볼 수 있습니다. [sign in]을 클릭하고 로그인을 합니다.




    계정이 없는 경우에는 생성해주세요. 아래와 같이 IBM계정 뿐만 아니라 Github 계정 등 다양한 종류의 로그인을 지원합니다.





    로그인을 하면 GUI기반의 Composer를 확인할 수 있습니다. Composer에서는 드래그앤드롭으로 우측의 양자게이트를 배치할 수 있습니다. 반드시 마지막에 Operation을 놓아야 프로그램을 실행Run할 수 있으니 주의하세요.





    각 게이트가 어떤 역할을 하는지, 그리고 어떻게 쓰는지에 대해서는 게이트 집합 위의 [i] 아이콘을 클릭하면 알 수 있습니다. 아래의 화면에서 각 게이트의 역할에 대해 살펴볼 수 있습니다. 본 프로그램에서는 간단히 숫자를 할당했습니다.





    이렇게 해서 Composer를 통한 프로그램을 실행시켰습니다. 이 상황에서 [Simulate]버튼을 누르면 아래와 같이 [OPENQASM 2.0] 창에 python 환경에서 실행할 수 있는 코드를 생성해줍니다.


    Quantum Information Software Kit (QISKit)

    QISKitOpenQASMIBM Q experience (QX)에서 사용할 수 있는 SDK(software development kit)입니다. 이번 항목에서는 Python으로 바로 프로그래밍을 하는 QISkit을 사용하는 방법을 배울 것입니다.

    양자컴퓨팅 프로그램을 만들고, 컴파일하고, 실행하기 위해 QISKit을 사용하십시오. 실행에 있어 QISKit은 온라인상 접근 가능한 실제 양자 프로세서, 온라인 시뮬레이터, 로컬 시뮬레이터의 백엔드 환경을 지원합니다. 온라인 백엔드 환경에서, QIAKit은 IBM Q experience와 연결하기 위해 Python API client를 사용합니다.

    Installation

    Dependencies

    적어도 파이썬 Python 3.5 혹은 그 이상의 버전이 QISKit을 사용하기 위해 필요합니다. 그리고, Jupyter Notebooks을 튜토리얼의 실행을 위해 권장하는 바입니다. 이러한 연유로 우리는 Anaconda 3를 사용하는 걸 권장합니다. 아나콘다에는 대부분의 필요한 툴이 미리 설치되어 있습니다. 또한, 양자 정보에 대한 일반적인 이해는 QISKit과 상호작용하는 데에 매우 도움이 됩니다. 만일 여러분이 양자컴퓨팅 분야에 새롭게 배운다면 다음의 사용자 가이드를 살펴보세요.

    PIP Installation

    파이썬이 더 익숙한 사람들에게, QISKit을 설치하는 가장 빠른 방법은 PIP 툴(파이썬 패키지 매니저)을 이용하는 방식입니다.

        pip install qiskit
    

    Source Installation

    QISKit SDK 레파지토리를 여러분의 로컬 머신에 Clone하는 다른 방법으로는 클론한 디렉토리를 바꾸는 방법이 있습니다.

    Manual download

    https://github.com/QISKit/qiskit-sdk-py

    수동 다운로드 방법으로 위 웹페이지로 접속해 상단의 Clone or download" 버튼을 누르세요 (혹은 git clone 커맨드 상에 보이는 URL을 통해), 만일 필요하다면 압축을 풀고 폴더 이름을 터미널 상에서 다음과 같이 바꾸세요. qiskit-sdk-py folder

    Git download

    혹은, 만일 여러분이 이미 Git을 설치했다면, 다음의 커맨드를 실행하세요:

    git clone https://github.com/QISKit/qiskit-sdk-py
    cd qiskit-sdk-py

    Setup your enviroment

    우리는 여러분의 사용자 경험을 향상시키기 위해 파이썬의 가상 환경을 사용하는 걸 추천합니다. 우리의 Environment Setup documentation 을 더 많은 정보를 얻기위해 참조하세요.

    Creating your first Quantum Program

    SDK 설치가 끝났습니다. 이제 QISKit으로 작업을 해볼 차례입니다. 우리는 이미 QASM예제를 로컬 시뮬레이터 상에서 실행할 준비를 마쳤습니다. 이것은 간단한 중첩 예제 입니다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    from qiskit import QuantumProgram
     
    # Creating Programs create your first QuantumProgram object instance.
    Q_program = QuantumProgram()
     
    try:
      # Creating Registers create your first Quantum Register called “qr” with 2 qubits
      qr = Q_program.create_quantum_register(“qr”2)
      # create your first Classical Register called “cr” with 2 bits
      cr = Q_program.create_classical_register(“cr”2)
      # Creating Circuits create your first Quantum Circuit called “qc” involving your Quantum Register “qr”
      # and your Classical Register “cr”
      qc = Q_program.create_circuit(“superposition”, [qr], [cr])
     
      # add the H gate in the Qubit 0, we put this Qubit in superposition
      qc.h(qr[0])
     
      # add measure to see the state
      qc.measure(qr, cr)
     
      # Compiled  and execute in the local_qasm_simulator
     
      result = Q_program.execute([“superposition”], backend=‘local_qasm_simulator’, shots=1024)
     
      # Show the results
      print(result)
      print(result.get_data(“superposition”))
     
    except QISKitError as ex:
      print(‘There was an error in the circuit!. Error = {}’.format(ex))
    except RegisterSizeError as ex:
      print(‘Error in the number of registers!. Error = {}’.format(ex))
    cs

    이 경우에 결과물은 다음과 같을 것입니다(불규칙 변동으로 인해):

    COMPLETED
    {'00': 509, '11': 515}
    

    여러분은 또한 QISKit을 사용하여 여러분의 코드를 real Quantum Chip에서 실행시킬 수 있습니다.

    먼저, API 토큰을 얻으세요:

    • IBM Q experience 계정을 생성하세요.
    • IBM Q experience 웹 페이지에서 API token을 얻으세요. 토큰은 “My Account” > “Personal Access Token”에 위치해 있습니다.

    이 API 토큰은 여러분의 프로그램을 IBM Q experience 백엔드 환경에서 실행할 수 있도록 해줄 것입니다. 예제.

    이에 대해 더 많은 정보를 알고 싶다면, 다음의 링크를 참조하세요. our QISKit documentation.

    Next Steps

    이제 여러분은 다른 튜토리얼들까지도 실행할 수 있는 준비와 환경 구성을 마쳤습니다. index tutorial을 시작하세요. 그리고 ‘Getting Started’ 예제로 이동하세요. 만일 여러분이 이미 Jupyter Notebooks을 설치했다면, 여러분은 해당 노트북을 복사하고 수정하여 여러분 만의 노트북을 만들 수 있습니다.

    튜토리얼을 QISKit의 일부로서 설치하기 위해 다음의 링크를 확인하세요. installation details. 완전한 SDK문서는 다음의 링크에서 확인할 수 있습니다. doc directory.

    More Information

    다음은 QISKit을 어떻게 써야하는지에 대한 더많은 정보와 튜토리얼 예제, 그리고 몇몇의 도움이 될만한 링크들 입니다. 한 번 살펴보세요.
    * User Guides,
    양자정보와 양자컴퓨팅에 대해 배울 수 있는 좋은 시작점
    Tutorials,
    예를 들어 Jupyter 노트북의 경우 index를 참고하세요. 그리고 ‘Getting Started’ Jupyter notebook도 함께 보세요.
    * OpenQASM,
    QASM에 대한 추가적인 정보와 예제
    * IBM Quantum Experience Composer,
    실제 양자컴퓨터 및 시뮬레이션된 양자컴퓨터와의 GUI 인터페이스를 통한 인터렉션
    * QISkit Python API, 파이썬을 통해 IBM Quantum Experience를 사용할 수 있는 API

    QISKit은 본래 IBM Research연구팀과 IBM-Q개발팀에 의해 양자컴퓨터에 대한 고수준(high level) 개발킷을 제공할 목적으로 개발되었습니다.
    질의응답과 토론 그리고 양자컴퓨팅에 대해 더 넓게 살펴보기 위해 IBM Q experience community를 방문하세요. 만일 여러분이 QISKit에 기여하길 원한다면 다음의 가이드라인을 살펴보세요. contribution guidelines.



    본문 중, QISKit의 내용은 다음의 공식 링크를 참조하여 작성했습니다. QISKit
    작성자: 맹윤호

    2 개의 댓글"IBM Q Experience로 시작하는 양자컴퓨터 프로그래밍 실습"

    1. […] 원문보기 : IBM Q Experience로 시작하는 양자컴퓨터 프로그래밍 실습 […]

    2. […] 원문보기 : IBM Q Experience로 시작하는 양자컴퓨터 프로그래밍 실습 […]

    토론 참가

    이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다