기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon Braket에서 PennyLane 사용
하이브리드 알고리즘은 고전 명령과 양자 명령을 모두 포함하는 알고리즘입니다. 고전 명령은 고전 하드웨어(EC2 인스턴스 또는 랩톱)에서 실행되고 양자 명령은 시뮬레이터 또는 양자 컴퓨터에서 실행됩니다. 하이브리드 작업 기능을 사용하여 하이브리드 알고리즘을 실행하는 것이 좋습니다. 자세한 내용은 Amazon Braket Jobs를 사용해야 하는 시점을 참조하세요.
Amazon Braket을 사용하면 Amazon Braket PennyLane 플러그인의 지원 또는 Amazon Braket Python SDK 및 예제 노트북 리포지토리를 통해 하이브리드 양자 알고리즘을 설정하고 실행할 수 있습니다. SDK를 기반으로 하는 Amazon Braket 예제 노트북을 사용하면 PennyLane 플러그인 없이 특정 하이브리드 알고리즘을 설정하고 실행할 수 있습니다. 그러나 PennyLane은 더 풍부한 경험을 제공하므로 PennyLane을 사용하는 것이 좋습니다.
하이브리드 양자 알고리즘 정보
하이브리드 양자 알고리즘은 오늘날 산업계에 중요합니다. 현대 양자 컴퓨팅 디바이스는 일반적으로 노이즈를 생성하고 이로 인해 오류가 발생하기 때문입니다. 계산에 양자 게이트를 추가할 때마다 노이즈가 추가될 가능성이 커지며, 따라서 장기 실행 알고리즘은 노이즈에 압도되어 잘못된 계산을 초래할 수 있습니다.
Shor's(양자 위상 추정 예제)
하이브리드 양자 알고리즘에서 QPU는 고전 CPU의 공동 프로세서로 작동하여, 특히 고전적 알고리즘에서 특정 계산 속도를 높입니다. 회로 실행 시간이 현저히 단축되어 오늘날 디바이스의 성능에 도달할 수 있게 되었습니다.
이 섹션의 내용:
PennyLane을 지원하는 Amazon Braket
Amazon Braket은 양자 미분 프로그래밍 개념을 기반으로 빌드된 오픈 소스 소프트웨어 프레임워크인 PennyLane
PennyLane 라이브러리는 PyTorch 및 TensorFlow를 비롯한 친숙한 기계 학습 도구에 대한 인터페이스를 제공하여 양자 회로 훈련을 빠르고 직관적으로 수행할 수 있게 합니다.
-
PennyLane 라이브러리 -- PennyLane은 Amazon Braket 노트북에 사전 설치되어 있습니다. PennyLane에서 Amazon Braket 디바이스에 액세스하려면 노트북을 열고 다음 명령을 사용하여 PennyLane 라이브러리를 가져옵니다.
import pennylane as qml
자습서 노트북을 사용하면 빠르게 시작할 수 있습니다. 또는 원하는 IDE에서 Amazon Braket의 PennyLane을 사용할 수 있습니다.
-
Amazon Braket PennyLane 플러그인 — 자체 IDE를 사용하려면 Amazon Braket PennyLane 플러그인을 수동으로 설치할 수 있습니다. 플러그인은 PennyLane을 Amazon Braket Python SDK
와 연결하므로 Amazon Braket 디바이스의 PennyLane에서 회로를 실행할 수 있습니다. PennyLane 플러그인을 설치하려면 다음 명령을 사용합니다.
pip install amazon-braket-pennylane-plugin
다음 예제에서는 PennyLane에서 Amazon Braket 디바이스에 대한 액세스를 설정하는 방법을 보여줍니다.
# to use SV1 import pennylane as qml sv1 = qml.device("braket.aws.qubit", device_arn="arn:aws:braket:::device/quantum-simulator/amazon/sv1", wires=2) # to run a circuit: @qml.qnode(sv1) def circuit(x): qml.RZ(x, wires=0) qml.CNOT(wires=[0,1]) qml.RY(x, wires=1) return qml.expval(qml.PauliZ(1)) result = circuit(0.543) #To use the local sim: local = qml.device("braket.local.qubit", wires=2)
PennyLane에 대한 자습서 예제와 자세한 내용은 Amazon Braket 예제 리포지토리
Amazon Braket PennyLane 플러그인을 사용하면 단 한 줄의 코드로 PennyLane에서 Amazon Braket QPU와 임베디드 시뮬레이터 디바이스 간에 전환할 수 있습니다. PennyLane과 함께 사용할 수 있는 2개의 Amazon Braket 양자 디바이스를 제공합니다.
-
QPU 및 시뮬레이터를 포함한 Amazon Braket 서비스의 양자 디바이스로 실행하기 위한
braket.aws.qubit -
Amazon Braket SDK의 로컬 시뮬레이터로 실행하기 위한
braket.local.qubit
Amazon Braket PennyLane 플러그인은 오픈 소스입니다. PennyLane Plugin GitHub 리포지토리
PennyLane에 대한 자세한 내용은 PennyLane 웹 사이트
Amazon Braket 예제 노트북의 하이브리드 알고리즘
Amazon Braket은 하이브리드 알고리즘 실행을 위해 PennyLane 플러그인에 의존하지 않는 다양한 예제 노트북을 제공합니다. 양자 근사 최적화 알고리즘(Quantum Approximate Optimization Algorithm, QAOA) 또는 변분 양자 고유해석기(Variational Quantum Eigensolver, VQE)와 같은 변분법을 설명하는 Amazon Braket 하이브리드 예제 노트북
Amazon Braket 예제 노트북은 Amazon Braket Python SDK
예제 노트북
PennyLane 시뮬레이터가 임베디드된 하이브리드 알고리즘
Amazon Braket Hybrid Jobs는 이제 PennyLanelightning.qubit 시뮬레이터, NVIDIA의 cuQuantum 라이브러리lightning.gpu 시뮬레이터 등을 포함합니다. 이러한 임베디드 시뮬레이터는 수반 미분법
하이브리드 작업을 통해 이제 고전 공동 프로세서와 QPU를 조합하거나 SV1과 같은 Amazon Braket 온디맨드 시뮬레이터를 사용하거나 PennyLane의 임베디드 시뮬레이터를 직접 사용하여 변분 알고리즘 코드를 실행할 수 있습니다.
임베디드 시뮬레이터는 하이브리드 작업 컨테이너에 이미 제공되어 있으므로 @hybrid_job 데코레이터로 기본 Python 함수를 데코레이션해야 합니다. PennyLane lightning.gpu 시뮬레이터를 사용하려면 다음 코드 조각과 같이 InstanceConfig에서 GPU 인스턴스도 지정해야 합니다.
import pennylane as qml from braket.jobs import hybrid_job from braket.jobs.config import InstanceConfig @hybrid_job(device="local:pennylane/lightning.gpu", instance_config=InstanceConfig(instanceType="ml.g4dn.xlarge")) def function(wires): dev = qml.device("lightning.gpu", wires=wires) ...
하이브리드 작업에서 PennyLane 임베디드 시뮬레이터 사용을 시작하려면 예제 노트북
Amazon Braket 시뮬레이터를 사용한 PennyLane의 수반 기울기
Amazon Braket용 PennyLane 플러그인을 사용하면 로컬 상태 벡터 시뮬레이터 또는 SV1에서 실행할 때 수반 미분법을 사용하여 기울기를 계산할 수 있습니다.
참고: 수반 미분법을 사용하려면 diff_method='adjoint'가 아닌 qnode에 diff_method='device'를 지정해야 합니다. 다음 예제를 참조하세요.
device_arn = "arn:aws:braket:::device/quantum-simulator/amazon/sv1" dev = qml.device("braket.aws.qubit", wires=wires, shots=0, device_arn=device_arn) @qml.qnode(dev, diff_method="device") def cost_function(params): circuit(params) return qml.expval(cost_h) gradient = qml.grad(circuit) initial_gradient = gradient(params0)
참고
현재 PennyLane은 QAOA 해밀토니안에 대한 그룹화 인덱스를 계산하고 이를 사용하여 해밀토니안을 여러 기대값으로 분할합니다. PennyLane에서 QAOA를 실행할 때 SV1의 수반 미분 기능을 사용하려면 다음과 같이 그룹화 인덱스를 제거하여 비용 해밀토니안을 재구성해야 합니다. cost_h, mixer_h = qml.qaoa.max_clique(g, constrained=False)
cost_h = qml.Hamiltonian(cost_h.coeffs, cost_h.ops)