물론 아마존은 자체 양자 컴퓨터 시스템을 구축하진 않았다. 대신 브래킷을 통해 다른 업체들의 양자 컴퓨팅 기술을 AWS에서 사용할 수 있도록 하고 있다. 브래킷은 현재 3가지 양자 컴퓨팅 서비스, 디-웨이브(D-Wave), 이온큐(IonQ), 리게티(Rigetti)를 지원한다.
브래킷을 사용하면 디-웨이브(D-Wave)의 양자 어닐링 초전도체 컴퓨터, 이온큐(IonQ)의 이온 트랩 컴퓨터, 리게티(Rigetti)의 게이트 기반 초전도체 컴퓨터 등 사전 구축된 여러 양자 컴퓨터 및 알고리즘 중에서 원하는 방식을 선택할 수 있다. 또 브래킷 파이썬 SDK(Braket Python SDK) 서킷 모듈을 사용해 이온큐와 리게티 프로세서를 모두 프로그래밍할 수 있다. 동일한 코드가 로컬 및 호스팅된 양자 시뮬레이터에서도 실행된다.
브래킷(Braket)이라는 명칭은 물리학자들끼리 쓰는 일종의 농담이다. ‘브라-켓 표기법(bra-ket notation)’은 양자역학에서 양자 상태를 표현하는 표준 표기법이다. 영국 물리학자 디랙이 제안했다. 이는 편미분 방정식보다 슈뢰딩거 방정식을 더 쉽게 표현할 수 있는 방법이다. 이 디랙 표기법에서 브라 <f| 는 행 백터이고, 켓 |f> 은 열 벡터다. 켓 옆에 브라를 적는 것은 행렬 곱셈을 의미한다.
한편 아마존 브래킷과 브래킷 파이썬 SDK는 IBM Q, 퀴스킷(Qiskit), 애저 양자(Azure Quantum), 마이크로소프트 Q#(Microsoft Q#), 구글 서크(Google Cirq)와 경쟁한다.
IBM은 이미 온라인으로 사용할 수 있는 자체 양자 컴퓨터와 시뮬레이터를 보유하고 있다. 마이크로소프트의 시뮬레이터는 일반적으로 사용할 수 있지만, 마이크로소프트의 양자 제품은 허니웰(Honeywell), 이온큐(IonQ), 양자 서킷(Quantum Circuits)의 양자 컴퓨터 및 원큐비트(1Qbit)의 최적화 솔루션 액세스를 포함해 제한적인 프리뷰 상태다.
또 마이크로소프트는 자체 개발한 위상 초전도 양자 컴퓨터가 언제 출시될 것인지, 구글 역시 양자 컴퓨터나 시커모어 칩을 언제 공개할 것인지는 발표하지 않았다.
아마존 브래킷이란
아마존 브래킷은 양자 컴퓨팅을 시작할 수 있도록 돕는 완전 매니지드 서비스다. 이는 3개 모듈(빌드, 테스트, 런)으로 구성됐다.
빌드 모듈은 아마존 브래킷 SDK를 포함해 샘플 알고리즘, 리소스, 개발자 툴로 사전 구성된 관리형 주피터 노트북으로 이루어져 있다. 테스트 모듈은 매니지드 고성능 양자 서킷 시뮬레이터 액세스를 제공한다. 런 모듈은 여러 종류의 양자 컴퓨터(QPUs), 즉 이온큐 및 리게티의 게이트 기반 양자 컴퓨터, 디-웨이브의 양자 어닐러에 안전한 온-디멘드 액세스를 제공한다.
QPU에서 작업이 즉시 실행되지 않을 수도 있다. QPU는 실행 기간에만 작업을 처리한다.
아마존 브래킷 SDK API
브래킷 파이썬 SDK는 양자 서킷과 어닐러를 구축, 테스트, 실행하는 데 필요한 모든 작업을 정의한다. 이는 브래킷 닷어닐링(braket.annealing)부터 브래킷닷AWS(braket.aws), 브래킷닷서킷(braket.circuits), 브래킷닷디바이스(braket.devices), 브래킷닷태스크(braket.tasks)까지 총 5개 패키지로 구성돼 있다.
브래킷닷어닐링 패키지는 두 종류의 2진법 2차 모델(Binary Quadratic Models, BQMs), 즉 아이싱(Ising) 그리고 QUB(Quadratic Unconstrained Binary Optimization) 문제를 정의한다. 이들 문제는 디-웨이브 유닛 등의 양자 어닐러에서 해결된다. 브래킷닷서킷 패키지는 일련의 게이트를 기반으로 양자 서킷을 정의하고, 이는 이온큐 및 리게티 등의 게이트 기반 양자 컴퓨터에서 해결된다.
나머지 3개 패키지는 문제 실행을 제어한다. 브래킷닷AWS 패키지는 양자 장비를 선택하고, 문제를 작업에 로드하며, 작업을 AWS 세션에 연결한다. 브래킷닷디바이스 패키지를 사용하면 양자 장비 및 시뮬레이터에서 작업을 실행할 수 있다. 브래킷닷태스크 패키지로는 작업을 관리, 추적, 중단하고 결과를 확인할 수 있다.
아마존 브래킷 서킷 및 게이트
이온큐와 리케티의 양자 컴퓨터 서킷은 표준 게이트 세트로 구축되지만 모든 QPU가 모든 종류의 게이트를 구현하진 않는다. 브래킷 SDK는 서킷(Circuit) 내의 게이트와 매개변수에 의해 검증된 브래킷닷서킷 패키지의 방식을 이용해 서킷을 정의한다.
예를 들면 아래의 브래킷 코드는 4 큐비트를 초기값으로 하는 서킷을 하다마드 상태(Hadamard state, 1과 0의 동등 확률)로 정의한 후 컨트롤드 낫(Controlled Not) 연산을 사용해 큐비트 2를 큐비트 0과, 그리고 큐비트 3을 큐비트 1과 엮는다.
# define circuit with 4 qubits my_circuit = Circuit().h(range(4)).cnot(control=0, target=2).cnot(control=1, target=3) |
디-웨이브 오션(D-Wave Ocean)
오션(Ocean)은 디-웨이브 양자 어닐러를 위한 네이티브 파이썬 기반 소프트웨어 스택이다. 브래킷을 통해 오션을 사용할 경우 오션 소프트웨어를 아마존 브래킷 오션 플러그인과 통합할 수 있다. 플러그인은 오션 및 브래킷 포맷 사이의 변환을 담당한다.
양자 어닐러는 게이트 기반 QPU와는 상당히 다르게 작동한다. 기본적으로 사용자는 BQM로 문제를 공식화한다. 그 후 어닐러를 사용해 함수를 여러 차례 샘플링하며 최소값을 발견한다(어닐러가 완벽하지 않기 때문이다).
주어진 문제에 대해 수학적으로 BQM를 생성하거나, 오션 소프트웨어를 사용해 BQM을 생성할 수도 있다. 아마존의 디-웨이브 아나토미(D-Wave_Anatomy) 예제에서 나온 다음 코드는 브래킷 오션 플러그-인을 사용해 디-웨이브 장치에서 BQM을 해결한다.
# set parameters num_reads = 1000 # define BQM bqm = dimod.BinaryQuadraticModel(linear, quadratic, offset, vartype) # run BQM: solve with D-Wave device sampler = BraketDWaveSampler(s3_folder,'arn:aws:braket:::device/qpu/d-wave/DW_2000Q_6') sampler = EmbeddingComposite(sampler) sampleset = sampler.sample(bqm, num_reads=num_reads) # aggregate solution: sampleset = sampleset.aggregate() |
아마존 브래킷을 활성화하고 노트북 사용하기
브래킷을 사용하려면 먼저 AWS 계정에서 이를 활성화해야 한다.
그러고 나서 노트북 인스턴스를 생성한다. 노트북은 아마존 세이지메이커(Amazon SageMaker)를 사용한다.
노트북을 열면 새 코드를 입력하거나 아마존의 예시 가운데 하나를 이용할 수 있다.
QPU 장치 상태를 확인해야 한다. 이들을 항상 사용할 수 있는 것은 아니기 때문이다.
사용자가 스스로 실행할 수 있지만 브래킷 예시 노트북은 이전 실행의 결과와 함께 저장된다.
게이트 기반의 QPU와 양자 어닐러에 관한 예시들이 있다.
지금 배워둔다면 앞으로 유용할 것
아마존 브래킷은 양자 컴퓨터와 시뮬레이터에 입문할 수 있는 합리적인 경로다. 물론 현재 양자 컴퓨팅 개발 단계는 NISQ(Noisy Intermediate Scale Quantum)이기 때문에 브래킷으로 유용한 결과를 기대하기는 어렵다. 더 많은 큐비트, 더 적은 노이즈, 더 긴 일관성 시간을 위해 연구가 활발하게 진행 중이다.
브래킷의 현 QPU 제품은 일반적인 수준이다. 2048 큐비트의 디-웨이브 어닐러는 주로 최적화 연산에 유용하다. 이는 디-웨이브의 최신 세대 어닐러의 약 절반 규모다. 11 큐비트의 이온큐 QPU는 비교적 긴 일관성 시간을 갖지만 양자 컴퓨터 알고리즘을 구현하기에는 너무 작다. 예를 들면 함수의 역을 찾는 그로버 알고리즘, 정수의 소인수를 찾는 쇼어 알고리즘 같은 것들이다. 30 큐비트의 리게티 아스펜-8 역시 너무 작다.
또한 브래킷은 무료는 아니지만 비교적 저렴한 편이다. 반면에 IBM Q는 완전히 무료다. 다만 공개적으로 사용할 수 있는 IBM QPU가 너무 작다. 아몽크(Armonk)의 QPU는 1큐비트고, 멜버른(Melbourne)의 QPU는 15 큐비트다. IBM은 유료 프리미엄 QPU 서비스도 제공한다.
IBM은 QPU를 양자 볼륨(QV)으로 평가하기도 한다. 이는 큐비트 수치, 오류 비율, 일관성 시간을 결합한 지표다. QV 8 ~ QV 32의 범위에는 5 큐비트의 IBM QPU가 있다. 수치가 높을수록 더 좋은 것이다. IBM은 내부적으로 QV64를 달성했다고 발표했지만 아직 출시되진 않았다. 허니웰 역시 QV 64를 달성했다고 발표했다.
현재 ‘브래킷’이 유용한 이유는 양자 컴퓨팅을 배울 수 있고, NISQ 체제의 양자 알고리즘을 개발할 수 있다는 점이다. 그러나 계속 주시할 필요는 있다. QPU가 발전하고 AWS에 연결된다면, 브래킷은 계속해서 유용해질 것이다.
비용: 매니지드 노트북(인스턴스 시간당 0.04~34.27달러), 양자 시뮬레이터(시간당 4.5달러), 양자 컴퓨터(작업당 0.3달러 그리고 1샷당 0.00019~0.01 달러(서킷의 반복))
플랫폼: AWS(브래킷 SDK를 로컬로 설치하려면 파이썬 3.7.2 또는 그 이상, 그리고 기트(Git)가 필요하다.) ciokr@idg.co.kr