기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
첫 번째 회로 구축
노트북 인스턴스가 시작된 후 방금 생성한 노트북을 선택하여 표준 Jupyter 인터페이스로 인스턴스를 엽니다.
Amazon Braket 노트북 인스턴스에는 Amazon Braket SDK 및 모든 종속성이 사전 설치되어 있습니다. conda_braket
커널을 사용하여 새 노트북을 생성하는 것으로 시작합니다.
간단한 “안녕하세요, 월드!”로 시작할 수 있습니다. 예. 먼저 Bell 상태를 준비하는 회로를 구성한 다음 다른 디바이스에서 해당 회로를 실행하여 결과를 얻습니다.
먼저 Amazon Braket SDK 모듈을 가져오고 간단한 Bell 상태 회로를 정의합니다.
import boto3 from braket.aws import AwsDevice from braket.devices import LocalSimulator from braket.circuits import Circuit # create the circuit bell = Circuit().h(0).cnot(0, 1)
다음 명령을 사용하여 회로를 시각화할 수 있습니다.
print(bell)
로컬 시뮬레이터에서 회로 실행
그런 다음 회로를 실행할 양자 디바이스를 선택합니다. Amazon Braket에는 신속한 프로토타입 생성 및 테스트를 위한 로컬 시뮬레이터가 함께 SDK 제공됩니다. 최대 25개의 작은 회로에는 로컬 시뮬레이터를 사용하는 것이 좋습니다.qubits (로컬 하드웨어에 따라 다름).
로컬 시뮬레이터를 인스턴스화하는 방법은 다음과 같습니다.
# instantiate the local simulator local_sim = LocalSimulator()
및 회로 실행:
# run the circuit result = local_sim.run(bell, shots=1000).result() counts = result.measurement_counts print(counts)
다음과 같은 결과가 표시됩니다.
Counter({'11': 503, '00': 497})
준비한 특정 Bell 상태는 |00> 및 |11>의 동일한 중첩이며, 대략 동일한(최대 shot 노이즈) 예상대로 측정 결과로 00 및 11의 분포입니다.
온디맨드 시뮬레이터에서 회로 실행
또한 Amazon Braket은 온디맨드 고성능 시뮬레이터에 대한 액세스를 제공합니다.SV1더 큰 회로를 실행하기 위한 .SV1 는 최대 34개의 양자 회로 시뮬레이션을 허용하는 온디맨드 상태 벡터 시뮬레이터입니다.qubits. 자세한 내용은에서 확인할 수 있습니다.SV1 지원되는 디바이스 섹션 및 AWS 콘솔의 . 에서 양자 작업을 실행하는 경우 SV1 (및의 TN1 또는 QPU) 양자 작업의 결과는 계정의 S3 버킷에 저장됩니다. 버킷을 지정하지 않으면 Braket에서 기본 버킷을 SDK 생성합니다amazon-braket-{region}-{accountID}
. 자세한 내용은 Amazon Braket에 대한 액세스 관리를 참조하세요.
참고
다음 예제가 버킷 이름으로 표시되는 실제 기존 amzn-s3-demo-bucket
버킷 이름을 입력합니다. 의 버킷 이름 Amazon Braket은 항상 로 시작하고 추가한 다른 식별 문자가 amazon-braket-
뒤따릅니다. S3 버킷을 설정하는 방법에 대한 자세한 내용은 Amazon S3 시작하기를 참조하세요.
# get the account ID aws_account_id = boto3.client("sts").get_caller_identity()["Account"] # the name of the bucket my_bucket = "amzn-s3-demo-bucket" # the name of the folder in the bucket my_prefix = "simulation-output" s3_folder = (my_bucket, my_prefix)
에서 회로를 실행하려면 SV1에서 이전에 선택한 S3 버킷의 위치를 .run()
호출에서 위치 인수로 제공해야 합니다.
# choose the cloud-based on-demand simulator to run your circuit device = AwsDevice("arn:aws:braket:::device/quantum-simulator/amazon/sv1") # run the circuit task = device.run(bell, s3_folder, shots=100) # display the results print(task.result().measurement_counts)
Amazon Braket 콘솔은 양자 작업에 대한 추가 정보를 제공합니다. 콘솔의 Quantum Tasks 탭으로 이동하면 양자 작업이 목록 상단에 있어야 합니다. 또는 고유한 양자 작업 ID 또는 기타 기준을 사용하여 양자 작업을 검색할 수 있습니다.
참고
90일 후 Amazon Braket은 모든 양자 작업 IDs 및 양자 작업과 연결된 기타 메타데이터를 자동으로 제거합니다. 자세한 내용은 데이터 보존을 참조하세요.
에서 실행 QPU
Amazon Braket를 사용하면 코드 행 하나를 변경하기만 하면 물리적 양자 컴퓨터에서 이전 양자 회로 예제를 실행할 수 있습니다. Amazon Braket은에 대한 액세스를 제공합니다.QPU 의 디바이스 IonQ, IQM, QuEra, 및 Rigetti. 지원되는 디바이스 섹션과 AWS 콘솔의 디바이스 탭에서 다양한 디바이스 및 가용성 기간에 대한 정보를 찾을 수 있습니다. 다음 예제에서는를 인스턴스화하는 방법을 보여줍니다.IQM 디바이스.
# choose the IQM hardware to run your circuit device = AwsDevice("arn:aws:braket:eu-north-1::device/qpu/iqm/Garnet")
또는 IonQ 이 코드가 있는 디바이스:
# choose the Ionq device to run your circuit device = AwsDevice("arn:aws:braket:us-east-1::device/qpu/ionq/Aria-1")
디바이스를 선택한 후 워크로드를 실행하기 전에 다음 코드로 디바이스 대기열 깊이를 쿼리하여 양자 작업 또는 하이브리드 작업 수를 확인할 수 있습니다. 또한 고객은의 디바이스 페이지에서 디바이스별 대기열 깊이를 볼 수 있습니다.Amazon Braket Management Console.
# Print your queue depth print(device.queue_depth().quantum_tasks) # returns the number of quantum tasks queued on the device {<QueueType.NORMAL: 'Normal'>: '0', <QueueType.PRIORITY: 'Priority'>: '0'} print(device.queue_depth().jobs) '2' # returns the number of hybrid jobs queued on the device
작업을 실행하면 Amazon Braket에서 결과에 대해 SDK폴링합니다(기본 제한 시간은 5일). 다음 예제와 같이 .run()
명령에서 poll_timeout_seconds
파라미터를 수정하여이 기본값을 변경할 수 있습니다. 폴링 제한 시간이 너무 짧으면를 QPU 사용할 수 없고 로컬 제한 시간 오류가 반환되는 경우와 같이 폴링 시간 내에 결과가 반환되지 않을 수 있습니다. task.result()
함수를 호출하여 폴링을 다시 시작할 수 있습니다.
# define quantum task with 1 day polling timeout task = device.run(bell, s3_folder, poll_timeout_seconds=24*60*60) print(task.result().measurement_counts)
또한 양자 작업 또는 하이브리드 작업을 제출한 후 queue_position()
함수를 호출하여 대기열 위치를 확인할 수 있습니다.
print(task.queue_position().queue_position) # Return the number of quantum tasks queued ahead of you '2'