Uso de CUDA-Q con Amazon Braket - Amazon Braket

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de CUDA-Q con Amazon Braket

NVIDIA’s CUDA-Qes una biblioteca de software diseñada para programar algoritmos cuánticos híbridos que combinan CPUs GPUs, y unidades de procesamiento cuántico (QPUs). Proporciona un modelo de programación unificado que permite a los desarrolladores expresar instrucciones clásicas y cuánticas en un solo programa, lo que agiliza los flujos de trabajo. CUDA-Qacelera la simulación cuántica y el tiempo de ejecución de los programas con sus simuladores de CPU y GPU integrados.

El uso CUDA-Q de Braket Hybrid Jobs en Amazon ofrece un entorno informático flexible y bajo demanda. Las instancias computacionales se ejecutan solo mientras dure su carga de trabajo, lo que garantiza que solo pague por lo que utilice. Amazon Braket Hybrid Jobs también ofrece una experiencia escalable. Los usuarios pueden empezar con instancias más pequeñas para la creación de prototipos y las pruebas, y luego ampliarlas a instancias más grandes capaces de gestionar mayores cargas de trabajo para realizar experimentos completos.

Amazon Braket Hybrid Jobs apoya, GPUs que es esencial para maximizar su potencial. CUDA-Q GPUs acelera considerablemente las simulaciones de programas cuánticos en comparación con los simuladores basados en CPU, especialmente cuando se trabaja con circuitos con un alto número de cúbits. La paralelización se vuelve sencilla cuando se utiliza en Amazon CUDA-Q Braket Hybrid Jobs. Hybrid Jobs simplifica la distribución del muestreo de circuitos y las evaluaciones observables en varios nodos computacionales. Esta perfecta paralelización de las cargas de CUDA-Q trabajo permite a los usuarios centrarse más en desarrollar sus cargas de trabajo que en configurar la infraestructura para experimentos a gran escala.

Para empezar, consulta el ejemplo CUDA-Q inicial en el Github de ejemplos de Amazon Braket para crear un contenedor de trabajos que soporte el uso de Bring CUDA-Q your own container (BYOC). Asegúrese de tener los permisos de IAM adecuados para crear y publicar su CUDA-Q contenedor en un repositorio de Amazon ECR.

El siguiente fragmento de código es un hello-world ejemplo de ejecución de un CUDA-Q programa con 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

El ejemplo anterior simula un circuito Bell en un simulador de CPU. Este ejemplo se ejecuta localmente en su portátil o portátil Braket Jupyter. Debido a esta local=True configuración, al ejecutar este script, se iniciará un contenedor en su entorno local para ejecutar el programa CUDA-Q de pruebas y depuración. Una vez finalizadas las pruebas, puede quitar la local=True marca y ejecutar su trabajo. AWS Para obtener más información, consulte Primeros pasos con Amazon Braket Hybrid Jobs.

Si sus cargas de trabajo tienen un alto número de cúbits, una gran cantidad de circuitos o una gran cantidad de iteraciones, puede utilizar recursos de computación de la CPU más potentes especificando la configuración. instance_config El siguiente fragmento de código muestra cómo configurar el ajuste en el instance_config decorador. hybrid_job Para obtener más información sobre los tipos de instancias compatibles, consulte Configurar la instancia de trabajo híbrida para ejecutar el script. Para ver una lista de tipos de instancias, consulta Tipos de EC2 instancias de Amazon.

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

Para cargas de trabajo más exigentes, puede ejecutar sus cargas de trabajo en un simulador de CUDA-Q GPU. Para habilitar un simulador de GPU, usa el nombre del backend. nvidia El nvidia backend funciona como un simulador de CUDA-Q GPU. A continuación, selecciona un tipo de EC2 instancia de Amazon que sea compatible con una NVIDIA GPU. El siguiente fragmento de código muestra el decorador configurado en la GPUhybrid_job.

@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 admite simulaciones de GPU paralelas con. CUDA-Q Puede paralelizar la evaluación de varios observables o varios circuitos para aumentar el rendimiento de su carga de trabajo. Para paralelizar varios observables, realice los siguientes cambios en el script del algoritmo.

Configura la mgpu opción del backend. nvidia Esto es necesario para paralelizar los observables. La paralelización utiliza el MPI para la comunicación entre ellos GPUs, por lo que el MPI debe inicializarse antes de la ejecución y finalizarse después.

A continuación, especifique el modo de ejecución mediante la configuración. execution=cudaq.parallel.mpi El siguiente fragmento de código muestra estos cambios.

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()

En el hybrid_job decorador, especifique un tipo de instancia que aloje varias, GPUs como se muestra en el siguiente fragmento de código.

@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): ...

El cuaderno de simulaciones paralelas de Amazon Braket, Github, proporciona end-to-end ejemplos que demuestran cómo ejecutar simulaciones de programas cuánticos en backends de GPU y realizar simulaciones paralelas de observables y lotes de circuitos.

Ejecuta tus cargas de trabajo en ordenadores cuánticos

Tras completar las pruebas del simulador, puede pasar a la ejecución de experimentos en QPUs él. Simplemente cambia el objetivo a una QPU Amazon Braket, como los dispositivos IQMIonQ, o. Rigetti El siguiente fragmento de código ilustra cómo establecer el objetivo en el dispositivo. IQM Garnet Para ver una lista de las disponibles QPUs, consulta Amazon Braket Console.

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

Para obtener más información sobre Amazon Braket Hybrid Jobs, consulte Trabajar con Amazon Braket Hybrid Jobs en la guía para desarrolladores. Para obtener más información sobre CUDA-Q, consulte la documentación de CUDA-Q.