미래기술 / 서버

‘양자 컴퓨터’에 입문하는 합리적 방법··· 아마존 브래킷 살펴보기

Martin Heller | InfoWorld 2020.09.15
양자 컴퓨팅에 의욕적으로 투자해왔던 IBM, 마이크로소프트, 구글과 달리 아마존은 최근까지도 이렇다 할 움직임을 보이지 않았다. 그런 가운데 아마존이 8월 ‘아마존 브래킷(Amzon Braket)’을 출시하며 양자 컴퓨팅 경쟁에 뛰어들었다. 

물론 아마존은 자체 양자 컴퓨터 시스템을 구축하진 않았다. 대신 브래킷을 통해 다른 업체들의 양자 컴퓨팅 기술을 AWS에서 사용할 수 있도록 하고 있다. 브래킷은 현재 3가지 양자 컴퓨팅 서비스, 디-웨이브(D-Wave), 이온큐(IonQ), 리게티(Rigetti)를 지원한다. 
 
ⓒGetty Images

브래킷을 사용하면 디-웨이브(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)
 
ⓒRxtreme (CC BY-SA 4.0)

디-웨이브 오션(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()
 
ⓒD-Wave Systems

아마존 브래킷을 활성화하고 노트북 사용하기 
브래킷을 사용하려면 먼저 AWS 계정에서 이를 활성화해야 한다. 
 
간단한 튜토리얼인 ‘아나토미 오브 퀀텀 서킷(The Anatomy of Quantum Circuits)’은 시뮬레이터에서 서킷을 실행하고, 작업을 제어하는 것을 보여준다. ⓒIDG

그러고 나서 노트북 인스턴스를 생성한다. 노트북은 아마존 세이지메이커(Amazon SageMaker)를 사용한다. 
 
브래킷 노트북 인스턴스를 생성하려면 노트북 이름을 정하고 인스턴스 유형을 선택하며 정확한 승인과 함께 IAM 역할을 생성하거나 재사용한다. 암호 키와 VPC 사용은 선택 사항이다.  ⓒIDG

노트북을 열면 새 코드를 입력하거나 아마존의 예시 가운데 하나를 이용할 수 있다. 
 
아마존이 제공하는 브래킷 예시는 심플 서킷(simple circuits), 고급 서킷(advanced circuits), 하이브리드(hybrid), 어닐링(annealing)으로 나눠진다. ⓒIDG

QPU 장치 상태를 확인해야 한다. 이들을 항상 사용할 수 있는 것은 아니기 때문이다. 
 
장치 화면은 각 양자 프로세싱 유닛의 현황을 보여준다. 이 스크린샷 촬영 후 1시간이 지나자 디-웨이브 어닐러가 온라인이었고 사용 가능했다. 그러나 리게티 QPU는 2시간의 대기가 필요했다. ⓒIDG

사용자가 스스로 실행할 수 있지만 브래킷 예시 노트북은 이전 실행의 결과와 함께 저장된다. 
게이트 기반의 QPU와 양자 어닐러에 관한 예시들이 있다. 
 
‘디-웨이브 아나토미’ 예제는 시뮬레이터와 디-웨이브 장치를 사용해 양자 어닐링을 수행하는 방법을 보여준다. 예제에 나온 블록 20은 디-웨이브 장치를 사용해 1,000개의 샘플을 처리하고 결과를 단순화하고자 집합 연산을 수행한다. ⓒIDG

지금 배워둔다면 앞으로 유용할 것 
아마존 브래킷은 양자 컴퓨터와 시뮬레이터에 입문할 수 있는 합리적인 경로다. 물론 현재 양자 컴퓨팅 개발 단계는 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

회사명 : 한국IDG | 제호: ITWorld | 주소 : 서울시 중구 세종대로 23, 4층 우)04512
| 등록번호 : 서울 아00743 등록발행일자 : 2009년 01월 19일

발행인 : 박형미 | 편집인 : 박재곤 | 청소년보호책임자 : 한정규
| 사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.