CUDA-Q mit Amazon Braket verwenden - Amazon Braket

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

CUDA-Q mit Amazon Braket verwenden

NVIDIA’s CUDA-Qist eine Softwarebibliothek, die für die Programmierung hybrider Quantenalgorithmen entwickelt wurde CPUs GPUs, die, und Quantenverarbeitungseinheiten (QPUs) kombinieren. Sie bietet ein einheitliches Programmiermodell, das es Entwicklern ermöglicht, sowohl klassische als auch Quantenbefehle in einem einzigen Programm auszudrücken und so Arbeitsabläufe zu rationalisieren. CUDA-Qbeschleunigt die Simulation und Laufzeit von Quantenprogrammen mit seinen integrierten CPU- und GPU-Simulatoren.

Die Verwendung CUDA-Q auf Amazon Braket Hybrid Jobs bietet eine flexible On-Demand-Computerumgebung. Recheninstanzen werden nur für die Dauer Ihrer Arbeitslast ausgeführt, sodass sichergestellt ist, dass Sie nur für das bezahlen, was Sie tatsächlich nutzen. Amazon Braket Hybrid Jobs bietet auch ein skalierbares Erlebnis. Benutzer können mit kleineren Instances für das Prototyping und Testen beginnen und dann auf größere Instances skalieren, die größere Workloads für vollständige Experimente bewältigen können.

Amazon Braket Hybrid Jobs-Unterstützung GPUs , die für die Maximierung CUDA-Q des Potenzials unerlässlich ist. GPUs beschleunigt die Simulationen von Quantenprogrammen im Vergleich zu CPU-basierten Simulatoren erheblich, insbesondere bei der Arbeit mit Schaltungen mit hoher Qubitzahl. Die Parallelisierung wird bei der Verwendung CUDA-Q auf Amazon Braket Hybrid Jobs unkompliziert. Hybrid Jobs vereinfacht die Verteilung von Schaltkreisabtastungen und beobachtbaren Auswertungen auf mehrere Rechenknoten. Diese nahtlose Parallelisierung der CUDA-Q Workloads ermöglicht es den Benutzern, sich mehr auf die Entwicklung ihrer Workloads zu konzentrieren, anstatt die Infrastruktur für groß angelegte Experimente einzurichten.

Sehen Sie sich zunächst das CUDA-QStarter-Beispiel auf dem Github für Amazon Braket-Beispiele an, um einen Job-Container zu erstellen, der Bring CUDA-Q Your Own Container (BYOC) unterstützt. Stellen Sie sicher, dass Sie über die entsprechenden IAM-Berechtigungen verfügen, um Ihren CUDA-Q Container zu erstellen und in einem Amazon ECR-Repo zu veröffentlichen.

Der folgende Codeausschnitt ist ein hello-world Beispiel für die Ausführung eines CUDA-Q Programms mit Amazon Braket Hybrid Jobs.

image_uri = "<ecr-image-uri>" @hybrid_job(device='local:nvidia/qpp-cpu', image_uri=image_uri) def hello_quantum(): import cudaq # define the backend device=get_job_device_arn() cudaq.set_target(device.split('/')[-1]) # define the Bell circuit kernel = cudaq.make_kernel() qubits = kernel.qalloc(2) kernel.h(qubits[0]) kernel.cx(qubits[0], qubits[1]) # sample the Bell circuit result = cudaq.sample(kernel, shots_count=1000) measurement_probabilities = dict(result.items()) return measurement_probabilities

Das obige Beispiel simuliert eine Bell-Schaltung auf einem CPU-Simulator. Dieses Beispiel wird lokal auf Ihrem Laptop oder Braket Jupyter-Notebook ausgeführt. Aufgrund der local=True Einstellung wird bei der Ausführung dieses Skripts ein Container in Ihrer lokalen Umgebung gestartet, um das CUDA-Q-Programm zum Testen und Debuggen auszuführen. Nachdem Sie den Test abgeschlossen haben, können Sie das local=True Flag entfernen und Ihren Job ausführen. AWS Weitere Informationen finden Sie unter Erste Schritte mit Amazon Braket Hybrid Jobs.

Wenn Ihre Workloads eine hohe Qubit-Anzahl, eine große Anzahl von Schaltungen oder eine große Anzahl von Iterationen aufweisen, können Sie leistungsstärkere CPU-Rechenressourcen verwenden, indem Sie die Einstellung angeben. instance_config Der folgende Codeausschnitt zeigt, wie Sie die Einstellung im Decorator konfigurieren. instance_config hybrid_job Weitere Informationen zu den unterstützten Instanztypen finden Sie unter Konfigurieren der Hybrid-Job-Instanz zur Ausführung Ihres Skripts. Eine Liste der Instance-Typen finden Sie unter EC2 Amazon-Instance-Typen.

@hybrid_job( device="local:nvidia/qpp-cpu", image_uri=image_uri, instance_config=InstanceConfig(instanceType="ml.c5.2xlarge"), ) def my_job_script(): ...

Für anspruchsvollere Workloads können Sie Ihre Workloads auf einem CUDA-Q GPU-Simulator ausführen. Verwenden Sie den Backend-Namen, um einen GPU-Simulator zu aktivieren. nvidia Das nvidia Backend arbeitet als CUDA-Q GPU-Simulator. Wählen Sie als Nächstes einen EC2 Amazon-Instance-Typ aus, der eine NVIDIA GPU unterstützt. Der folgende Codeausschnitt zeigt den hybrid_job GPU-konfigurierten Decorator.

@hybrid_job( device="local:nvidia/nvidia", image_uri=image_uri, instance_config=InstanceConfig(instanceType="ml.p3.2xlarge"), ) def my_job_script(): ...

Amazon Braket Hybrid Jobs unterstützt parallel GPU-Simulationen mitCUDA-Q. Sie können die Auswertung mehrerer Observables oder mehrerer Schaltungen parallelisieren, um die Leistung Ihres Workloads zu steigern. Um mehrere Observables zu parallelisieren, nehmen Sie die folgenden Änderungen an Ihrem Algorithmus-Skript vor.

Stellen Sie die mgpu Option des Backends ein. nvidia Dies ist erforderlich, um die Observablen zu parallelisieren. Bei der Parallelisierung wird MPI für die Kommunikation zwischen beiden verwendet GPUs, sodass MPI vor der Ausführung initialisiert und danach finalisiert werden muss.

Geben Sie als Nächstes den Ausführungsmodus durch Einstellung an. execution=cudaq.parallel.mpi Der folgende Codeausschnitt zeigt diese Änderungen.

cudaq.set_target("nvidia", option="mqpu") cudaq.mpi.initialize() result = cudaq.observe( kernel, hamiltonian, shots_count=n_shots, execution=cudaq.parallel.mpi ) cudaq.mpi.finalize()

Geben Sie im hybrid_job Decorator einen Instanztyp an, der mehrere Instanzen hostet, GPUs wie im folgenden Codeausschnitt gezeigt.

@hybrid_job( device="local:nvidia/nvidia-mqpu", instance_config=InstanceConfig(instanceType="ml.p3.8xlarge", instanceCount=1), image_uri=image_uri, ) def parallel_observables_gpu_job(sagemaker_mpi_enabled=True): ...

Das Notizbuch für parallel Simulationen im Github Amazon Braket-Beispiele enthält end-to-end Beispiele, die zeigen, wie Quantenprogrammsimulationen auf GPU-Backends ausgeführt und parallel Simulationen von Observablen und Schaltkreisstapeln durchgeführt werden können.

Ihre Workloads auf Quantencomputern ausführen

Nach Abschluss der Simulatortests können Sie mit der Durchführung von Experimenten am QPUs beginnen. Stellen Sie das Ziel einfach auf eine Amazon Braket-QPU um, z. B. auf die IQM GeräteIonQ, oderRigetti. Der folgende Codeausschnitt veranschaulicht, wie Sie das Ziel für das Gerät festlegen. IQM Garnet Eine Liste der verfügbaren QPUs Produkte finden Sie in der Amazon Braket-Konsole.

device_arn = "arn:aws:braket:eu-north-1::device/qpu/iqm/Garnet" cudaq.set_target("braket", machine=device_arn)

Weitere Informationen zu Amazon Braket Hybrid Jobs finden Sie unter Arbeiten mit Amazon Braket Hybrid Jobs im Entwicklerhandbuch. Weitere Informationen über CUDA-Q finden Sie in der CUDA-QDokumentation.