Amazon Web Services 한국 블로그

Amazon Braket 정식 출시 – 양자 컴퓨팅을 체험해보세요!

작년에 Amazon Braket에 대해 말씀드리면서 큐비트에서부터 양자 회로까지 양자 컴퓨팅의 기초를 설명했습니다. 미리 보기 기간에 Enel, Fidelity(Amazon Web Services와 함께 양자 컴퓨팅 살펴보기), Volkswagen 등의 AWS 고객들이 Amazon Braket을 사용하여 양자 컴퓨팅을 연구하고 경험을 쌓았습니다.

이제 Amazon Braket이 정식 출시되었고 D-Wave, IonQRigetti에서 기존 방식의 회로 시뮬레이터와 양자 컴퓨터를 모두 사용할 수 있다는 소식을 전해드립니다. 오늘은 간단한 회로를 만들어 시뮬레이션한 다음, 실제 하드웨어(QPU, 양자 처리 장치)에서 실행하는 두 가지 요소를 보여드리겠습니다.

간단한 회로 만들기 및 시뮬레이션
이전 게시물에서 언급하였듯이, 노트북 스타일 인터페이스를 통해 Amazon Braket에 액세스할 수 있습니다. 먼저 Amazon Braket 콘솔을 열고 원하는 리전을 선택한 다음(나중에 자세히 설명), [노트북 인스턴스 생성]을 클릭합니다.

노트북에 이름(amazon-braket-jeff-2)을 지정하고 인스턴스 유형과 IAM 역할을 선택합니다. 또한, 이 예시에서는 루트 액세스는 옵트아웃하고 암호화 키 사용을 건너뛰겠습니다. VPC에서 노트북을 실행할 수도 있고 ([추가 설정]에서) 노트북의 EBS 볼륨 크기를 변경할 수 있습니다. 모든 선택 사항에 결정을 내렸으므로 [노트북 인스턴스 생성]을 클릭하여 진행합니다.

몇 분 내로 노트북이 준비되면 클릭하여 액세스합니다.

노트북 모델은 Jupyter를 기반으로 하며, 예시를 탐색하는 것으로 시작하겠습니다.

초고밀도 코딩 예시를 클릭하여 연 다음, 지침과 설명을 읽습니다(자세한 내용을 알고 싶다면 이 통신 프로토콜의 기반이 되는 수학과 로직이 여기에 설명되어 있습니다).

노트북은 Braket에 포함된 시뮬레이터나 다른 이용 가능한 양자 컴퓨터에서 코드를 실행할 수 있습니다.

# Select device arn for simulator
device = AwsDevice("arn:aws:braket:::device/quantum-simulator/amazon/sv1")

이 코드는 SV1 관리형 시뮬레이터를 선택합니다. 대형 회로(큐비트 25개 이상)에 대한 강도가 얼마인지, 어떤 것에 시뮬레이션에 컴퓨팅 성능이 많이 필요한지 알 수 있습니다. 소형 회로의 경우 Braket SDK에 포함된 로컬 시뮬레이터를 사용할 수 있는데, 이는 노트북 인스턴스에서 실행됩니다.

device = LocalSimulator()

노트북 셀에 차례로 들어가 [실행] 화살표를 클릭하여 하나씩 실행시켰습니다. 노트북의 코드는 Braket API를 사용하여 처음부터 양자 회로를 구축한 다음, ASCII 형식으로 표시합니다(q0q1은 큐비트이고 T 축은 시간(모멘트)을 나타냅니다).

다음 셀이 선택된 디바이스에서 회로를 실행하고 결과를 표시하는 작업을 생성합니다.

get_result 함수는 노트북 내에서 정의됩니다. 디바이스에 작업을 제출하고 작업 상태를 모니터링하면서 완료되기를 기다립니다. 그런 다음, 결과(확률 집합)를 캡처해 막대그래프로 표시하고 확률을 반환합니다. 함수의 코드를 보면 알 수 있듯이, 회로는 1,000회 실행됩니다. 각각의 실행을 “샷”이라고 합니다. 위의 스크린샷에서 작업에서 반환된 숫자(504와 496)를 합치면 1,000이 되는 것을 알 수 있습니다. Amazon Braket을 사용하면 (디바이스에 따라 다르겠지만) 작업당 10~100,000개의 샷을 지정할 수 있습니다. 샷이 많을수록 정확도가 높아집니다.

노트북의 남은 셀은 다른 가능한 메시지와 함께 동일한 회로를 실행하고 해당 결과가 예상과 같은지 확인합니다. 자세히 알아보려면 이 예시(와 다른 여러 가지 예시)를 직접 실행해보세요!

실제 하드웨어에서 실행
Amazon Braket은 3개 제조사의 QPU에 대한 액세스를 제공합니다. 콘솔에서 [디바이스]를 클릭하여 자세한 정보를 살펴보겠습니다.

각 QPU는 특정 AWS 리전과 연결되어 있고 고유한 ARN도 있습니다. 디바이스 카드를 클릭하면 디바이스를 구동하는 기술(SF 소설에 나오는 이야기처럼 들리시겠지만 진짜입니다)에 대해 자세히 알아볼 수 있고, ARN도 확인할 수 있습니다.

노트북에 새로운 셀을 만든 다음, 일부 코드를 복사하고 붙여넣어서 Rigetti Aspen-8에서 회로를 실행합니다.

device = AwsDevice("arn:aws:braket:::device/qpu/rigetti/Aspen-8")
counts = get_result(device, circ, s3_folder)
print(counts)

이렇게 하면 작업이 생성되고 QPU 대기열에 등록됩니다. QPU와 연결된 리전의 콘솔로 전환하고 작업을 확인할 수 있습니다.

D-Wave QPU가 Braket 작업을 연중무휴 상시 처리합니다. 현재 다른 QPU는 특정 기간에만 Amazon Braket 작업을 처리하고 해당 기간이 아닐 때 생성된 작업은 대기열에 등록됩니다. 작업이 완료되면 상태가 [COMPLETED]로 변경되고 CloudWatch 이벤트가 생성됩니다.

Amazon Braket API
저는 콘솔을 사용하여 노트북을 생성하고 양자 컴퓨팅 작업을 처리했지만, API와 CLI도 지원됩니다. 가장 중요한 API 함수는 다음과 같습니다.

  • CreateQuantumTask – 시뮬레이터 또는 QPU에서 실행되는 작업을 생성합니다.
  • GetQuantumTask – 작업에 대한 정보를 얻습니다.
  • SearchDevices – 속성 기반 검색을 사용하여 적절한 QPU를 찾습니다.
  • GetDevice – 특정 QPU에 대한 자세한 정보를 얻습니다.

노트북의 코드에서 확인할 수 있듯이, Circuit, Gates, Moments, AsciiCircuitDiagram 모듈 등을 포함하여 Amazon Braket SDK를 사용하는 코드를 작성할 수 있습니다.

주요 사항
Amazon Braket을 평가할 때 염두에 두어야 할 중요한 사항이 몇 가지 있습니다.

  • 새로운 기술 – 양자 컴퓨팅은 새로운 분야입니다. 이미 전문가 수준인 분들도 계시겠지만 다른 사람들이 개념과 기술을 이해하고 실용화할 방법을 알아내기까지는 다소 시간이 걸릴 것입니다.
  • 컴퓨팅 패러다임Amazon Braket를 통해 액세스할 수 있는 QPU는 두 가지 패러다임을 지원합니다. IonQ, Rigetti QPU 및 시뮬레이터는 회로 기반 양자 컴퓨팅을 지원하고 D-Wave QPU는 양자 어닐링을 지원합니다. 다른 패러다임을 지원하는 QPU에 그와 다른 패러다임에 맞게 설계된 문제를 실행할 수 없으므로 탐색하는 동안 미리 적절한 QPU를 선택해야 합니다.
  • 요금 – 작업을 실행할 때마다 작업당 요금이 발생하고 사용하는 QPU 유형에 따라 추가적인 샷당 요금이 발생합니다. 시뮬레이터를 사용하면 시간당(초) 요금이 부과되며, 최소 기준은 15초입니다. 노트북 요금은 SageMaker와 동일합니다. 자세한 내용은 Amazon Braket Pricing 페이지를 참조하세요.

그 외에도 이 새로운 동영상에서 자세히 확인하실 수 있습니다.

지금 사용해보세요!
앞서 말씀드렸듯이, 이 기술은 새롭게 등장한 흥미로운 분야이므로 Amazon Braket을 사용할 기회가 있으시면 후기를 들려주세요.

Jeff;