Amazon Web Services 한국 블로그

Amazon Braket Hybrid Jobs 소개 — 하이브리드 양자 클래식 워크로드를 설정, 모니터링 및 효율적으로 실행

양자 컴퓨팅은 매력적입니다! 가장 간단한 수준에서, 0 또는 1 값을 가지는 비트의 개념을 두 개의 서로 다른 (양자) 상태의 조합을 가질 수 있는 퀀텀 비트 또는 큐비트로 확장합니다.

큐비트를 정말 흥미롭게 만드는 두 가지 특성:

  • 큐비트의 값은, 그 상태가 어떻게 결합하는지에 따라 확률이 달라지는 두 가지 가능한 상태 중 하나만 얻을 수 있습니다.
  • 여러 큐비트를 함께 ‘연결’할 수 있으므로 (양자 얽힘이라고 함) 하나의 상태를 변경하여 값을 읽는 것 만으로도 다른 큐비트의 상태를 변경할 수 있습니다.

이러한 특성은 저수준 속성에서 비롯되며, 원자 및 아원자 규모에서 자연의 물리적 특성을 설명하는 물리학의 기본 이론인 양자 역학으로 설명할 수 있습니다. 다행히도 일반 컴퓨터를 사용하기 위해 반도체 전문가가 될 필요는 없듯이 양자 컴퓨팅을 사용하기 위해 양자 역학의 학위가 필요하지는 않습니다.

연구자들은 큐비트를 사용하여 기존 컴퓨터보다 훨씬 빨리 작업을 처리할 가능성을 가진 새로운 알고리즘을 설계하고 있습니다. 양자 컴퓨팅을 위한 과학 연구 및 소프트웨어 개발 속도를 높이기 위해 re:Invent 2019에서 Amazon Braket을 출시했습니다. 완전관리형 양자 컴퓨팅 서비스인 Amazon Braket을 사용하면 시뮬레이터와 양자 컴퓨터에서 양자 알고리즘을 구축하고 테스트하고 실행할 수 있습니다.

하이브리드 알고리즘 및 양자 처리 장치(QPU)
다양한 영역에서 변형될 수 있는 양자 알고리즘은 수십만~수백만 개의 양자 게이트를 실행해야 합니다. 안타깝게도 현재 세대의 QPU는 노이즈로 인해 오류가 발생하기 전에 작업을 수백 또는 수천 개의 게이트로 제한하는 오류가 발생합니다.

이 문제를 해결하기 위해 기계 학습에서 영감을 얻을 수 있습니다. 알고리즘을 구현하는 논리인 고정 양자 회로를 사용하는 대신, 특정 디바이스에서 노이즈에 적응시켜 주어진 문제를 해결할 수 있는 더 나은 기회를 얻도록 회로를 조정하는 파라미터를 조정하여 알고리즘이 ‘학습’하게 합니다(‘자기 학습 양자 알고리즘’이라는 개념).

이것은 컴퓨터 비전과 유사합니다. 개와 고양이를 구별하는 기능(컴퓨터는 구별하기 어려움)을 수작업으로 만드는 대신, 기계 학습 알고리즘은 신경망의 파라미터를 반복적으로 조정하여 올바른 기능을 ‘학습’합니다.

양자 컴퓨팅 분야에서 빠르게 부상하는 연구 분야는 GPU가 기계 학습에 사용되는 것과 동일한 방식으로 양자 컴퓨터에서 사용하는 프로세서인 QPU를 사용합니다. 양자 회로는 파라미터화되고 일부 값으로 초기화된 다음 QPU에서 실행됩니다. 신경망의 가중치와 마찬가지로 이러한 파라미터는 계산 결과에 따라 반복적으로 조정됩니다. 이러한 소위 하이브리드 알고리즘은 기존 컴퓨터와 QPU 간의 빠르고 반복적인 계산에 의존합니다.

아키텍처 다이어그램.

하이브리드 알고리즘을 실행하려면, 기존 인프라를 수동으로 설정하고 필요한 소프트웨어를 설치하고 하이브리드 알고리즘의 처리 중에 양자 컴퓨팅과 기존 컴퓨팅 프로세스 간의 상호 작용을 관리해야 합니다. 그런 다음 알고리즘의 진행 상황을 시각화하기 위해 사용자 지정 모니터링 솔루션들을 구축하여 알고리즘이 예상대로 하나의 솔루션으로 수렴하는지 확인하고, 알고리즘의 파라미터를 조정해야 하는 경우 개입합니다.

또 다른 큰 과제는 QPU가 공유되는 비탄력적인 리소스이므로 이 리소스의 액세스를 위해 다른 사용자와 경쟁한다는 점입니다. 이 경우 알고리즘 실행 속도가 느려질 수 있습니다. 다른 고객의 단일 대규모 워크로드로 인해 알고리즘이 중단되어 전체 런타임이 몇 시간 동안 연장될 수 있습니다. 이는 불편할 뿐만 아니라 결과의 품질에도 영향을 미칩니다. 오늘날의 QPU는 주기적인 재교정이 필요하기 때문에 하이브리드 알고리즘의 진행을 무효화할 수 있습니다. 최악의 경우 알고리즘이 실패하여 예산과 시간이 낭비됩니다.

Amazon Braket Hybrid Jobs 소개
오늘 하이브리드 양자 클래식 알고리즘의 설정, 모니터링, 효율적인 실행 프로세스를 간소화하는 Amazon Braket의 새로운 기능인 Amazon Braket Hybrid Jobs를 소개하게 되어 기쁩니다. 작업은 완전관리형이므로 광범위한 인프라 및 소프트웨어 관리를 피하고 QPU에 대한 온디맨드 우선 액세스를 통해 빠르고 예측 가능한 방식으로 알고리즘을 안정적으로 실행할 수 있습니다.

작업을 생성하면 Amazon Braket이 작업 인스턴스를 시작하고(Amazon Elastic Compute Cloud (Amazon EC2) 인스턴스에 기반한 CPU 환경을 제공하여), 알고리즘을 실행하며(양자 하드웨어 또는 시뮬레이터를 사용하여), 작업이 완료되면 리소스를 릴리스하므로 사용한 만큼만 비용을 지불하면 됩니다. 알고리즘에 대한 사용자 지정 지표를 정의할 수도 있습니다. 이 지표는 Amazon CloudWatch에서 자동으로 로깅하고 알고리즘 실행 시 Amazon Braket 콘솔에 거의 실시간으로 표시됩니다. 이를 통해 알고리즘이 어떻게 진행되고 있는지에 대한 실시간 인사이트를 얻을 수 있으므로 필요에 따라 알고리즘을 조정하고 더 빠르게 혁신할 수 있습니다.

아키텍처 다이어그램.

하이브리드 알고리즘을 작업으로 실행하려면 Amazon Braket SDK를 사용하거나 하이브리드 양자 컴퓨팅을 위한 오픈 소스 라이브러리인 PennyLane을 사용하여 알고리즘을 정의할 수 있습니다. 몇 가지 예를 통해 알고리즘이 실제로 어떻게 작동하는지 살펴보겠습니다.

Amazon Braket Hybrid Jobs 사용
훈련 가능한 양자 알고리즘을 구축하기 전에 우선 일련의 고정 양자 연산을 실행하겠습니다. 이를 양자 작업이라고 부르겠습니다. 저는 Python과 Amazon Braket SDK를 사용하여 벨 상태라고 하는 것을 구성하는 회로를 정의합니다. 벨 상태는 두 상태 중 각각의 상태로 해석될 확률이 50:50입니다. 이것은 동전을 던지는 것과 같은 양자 컴퓨팅입니다.

다음은 algorithm_script.py 파일의 내용입니다.

import os

from braket.aws import AwsDevice
from braket.circuits import Circuit
from braket.jobs import save_job_result


def start_here():

    print("Test job started!")

    device = AwsDevice(os.environ["AMZN_BRAKET_DEVICE_ARN"])

    results = []
    
    bell = Circuit().h(0).cnot(0, 1)
    for count in range(5):
        task = device.run(bell, shots=100)
        print(task.result().measurement_counts)
        results.append(task.result().measurement_counts)

    save_job_result({ "measurement_counts": results })
    
    print("Test job completed!")

이 스크립트는 환경 변수인 AMZN_BRAKET_DEVICE_ARN을 사용하여 작업 생성 시 제가 선택하는 디바이스(device)를 인스턴스화합니다.

양자 컴퓨팅은 확률적입니다. 따라서 정확한 결과를 얻으려면 회로를 여러 번 평가해야 합니다. 한 번의 실행을 샷(shot)이라고 합니다. 샷의 수가 많을수록 결과의 정확도가 높아집니다. 이 경우 회로는 100개의 샷에 대해 실행됩니다.

save_job_result 함수로 내 작업의 결과를 저장하여 마지막에 분석할 수 있습니다.

Amazon Braket 콘솔의 왼쪽 패널에서 작업(Jobs)을 선택한 다음 작업 생성(Create job)을 선택합니다. 우선, 저는 그 작업에 이름을 지정합니다.

콘솔 스크린샷.

그런 다음 알고리즘이 있는 파일을 전달합니다. 하이브리드 알고리즘의 CPU 구성 요소는 컨테이너에서 실행되며, 저는 사용할 컨테이너 이미지를 선택할 수 있습니다. 예를 들어, PennyLane, TensorFlow 또는 PyTorch와 같이 알고리즘이 의존하는 소프트웨어가 포함된 미리 빌드된 컨테이너 이미지를 사용하거나 사용자 지정 이미지를 가져올 수 있습니다. 외부 종속성이 없으므로 기본(Base) 컨테이너 이미지를 선택합니다.

다른 모든 설정은 기본값으로 둡니다. 이런 식으로 양자 하드웨어가 아닌 SV1 시뮬레이터를 사용하여 양자 작업을 실행합니다.

잠시 후 작업이 완료되며, 저는 Amazon Simple Storage Service(Amazon S3) 콘솔로 연결되는 링크를 따라 결과를 다운로드합니다. 예상대로 다섯 가지 작업 각각에 대해 0011 상태의 비율이 대략 50:50임을 결과에서 알 수 있습니다. 양자 컴퓨팅의 확률적 특성으로 인해 비율이 약간 다를 수 있습니다.

{
    "braketSchemaHeader": {
        "name": "braket.jobs_data.persisted_job_data",
        "version": "1"
    },
    "dataDictionary": {
        "measurement_counts": [
            {
                "00": 51,
                "11": 49
            },
            {
                "00": 44,
                "11": 56
            },
            {
                "11": 51,
                "00": 49
            },
            {
                "00": 56,
                "11": 44
            },
            {
                "00": 49,
                "11": 51
            }
        ]
    },
    "dataFormat": "plaintext"
}

이 예제는 작업을 시작하는 것 외에는 다른 클래식 로직을 실행하지 않기 때문에 매우 기본적인 것입니다. 실제 가치를 확인하기 위해 양자 회로의 파라미터를 작업마다 반복적으로 조정하는 하이브리드 알고리즘에서 어떻게 작동하는지 살펴보겠습니다.

Amazon Braket Hybrid Jobs를 하이브리드 알고리즘과 함께 사용
좀 더 고급 예제에서는 Braket 콘솔에서 노트북을 만들 때 Amazon Braket에서 제공하는 예제에 포함된 양자 근사 최적화 알고리즘(QAOA)이라는 실제 하이브리드 알고리즘의 잘 알려진 예를 사용합니다. QAOA는 조합 최적화 문제에 대한 근사 솔루션을 생성하는 양자 알고리즘입니다. 이 GitHub 리포지토리에서 예제를 확인할 수도 있습니다.

이 경우 QAOA를 사용하여 다음 Max-Cut 문제를 해결합니다. 그래프의 노드를 2로 분할할 때 두 부분 간에 노드를 연결하는 최대 엣지 수는 얼마입니까? 예를 들어 아래 그림에는 8개의 엣지로 연결된 6개의 노드가 있습니다. 굵은 노란색 선은 6개의 엣지를 교차하여 노드를 두 세트로 분할합니다.

QAOA 예제에서 양자 작업을 연속적인 라운드로 실행하는 데 사용되는 파라미터의 조정은 TensorFlow 또는 PyTorch 같은 도구를 사용하는 클래식 컴퓨팅 환경(예: EC2 인스턴스)에서 최적화됩니다. 노트북 셀 중 하나에서 기계 학습 훈련을 위해 수행하는 것과 유사한 방식으로 파라미터 및 기타 하이퍼 파라미터를 조정하는 데 사용할 인터페이스를 선택할 수 있습니다.

그런 다음 Braket 작업은 알고리즘의 클래식 및 양자 컴퓨팅 부분의 실행과 이들 간의 파라미터 및 결과의 교환을 조정합니다. 알고리즘이 수렴되는 것을 보면서 편히 앉아 휴식을 취할 수 있으며, 이전과 마찬가지로 S3에서 결과를 검색하여 심층 분석할 수 있습니다.

로컬 모드에서 하이브리드 알고리즘 실행
하이브리드 알고리즘을 빠르게 테스트하고 디버깅하기 위해 Amazon Braket SDK로컬 모드에서 작업을 실행할 수 있습니다. 로컬 모드를 사용하면 Braket 작업이 컴퓨터(예: 랩톱)에서 로컬로 실행됩니다. 이러한 방식으로 알고리즘을 개발하는 동안 빠른 피드백을 받고 빠르게 반복할 수 있습니다.

로컬 모드에서 작업을 실행하려면 AWSQuantumJobLocalQuantumJob으로 바꾸기만 하면 됩니다. AwsQuantumJobbraket.aws에서 가져오지만 LocalQuantumJob 작업은 braket.jobs.local에서 가져옵니다.

가용성 및 요금
Amazon Braket Hybrid Jobs는 현재 Amazon Braket을 사용할 수 있는 모든 AWS 리전에서 사용할 수 있습니다. 자세한 내용은 AWS 리전 서비스 목록을 참조하세요.

Amazon Braket Hybrid Jobs를 사용하면 사용한 리소스에 대해서만 비용을 지불하면 됩니다. 클래식 인프라를 배포, 구성, 관리할 필요가 없으므로 알고리즘을 반복적으로 실험하고 개선할 수 있습니다. 자세한 내용은 Amazon Braket 요금 페이지를 참조하세요.

이론적 연구에 의존하는 대신 양자 컴퓨터를 기본 도구로 사용하여 하이브리드 알고리즘을 이해 및 개선하고 산업 및 연구 사용 사례에 대한 적용 가능성을 테스트할 수 있습니다. 이러한 방식으로 연구에 집중할 수 있으며, 실험을 위해 다양한 컴퓨팅 리소스를 설정하고 조정하지 않아도 됩니다.

이 새로운 기능을 개발하는 동안 우리는 고객의 요구 사항을 이해하기 위해 고객 및 파트너와 대화했습니다. QCware의 엔지니어링 책임자인 Vic Putz는 다음과 같이 언급합니다. “애플리케이션 개발자들에게 Braket Hybrid Jobs는 고객과 함께 하이브리드 가변 알고리즘의 잠재력을 탐색할 기회를 제공합니다. Amazon Braket과의 통합을 확장하게 되어 기쁩니다. 사용자 지정 컨테이너에서 자체 알고리즘 라이브러리를 실행할 역량을 확보하여, 안전한 환경에서 빠르게 혁신할 수 있게 되었습니다. Amazon Braket의 운영 성숙도와 다양한 유형의 양자 하드웨어에 우선적으로 액세스할 수 있는 편리함을 통해 이 새로운 기능을 안심하고 스택에 구축할 수 있게 되었습니다.”

Amazon Braket Hybrid Jobs로 하이브리드 퀀텀 클래식 워크로드의 실행을 간소화하세요.

Danilo