Cree su primer trabajo híbrido - 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.

Cree su primer trabajo híbrido

En esta sección se muestra cómo crear un Hybrid Job mediante un script de Python. Como alternativa, para crear un trabajo híbrido a partir del código Python local, como su entorno de desarrollo integrado (IDE) preferido o un bloc de notas Braket, consulteEjecutar tu código local como un trabajo híbrido.

Configure los permisos

Antes de ejecutar su primer trabajo híbrido, debe asegurarse de tener los permisos suficientes para continuar con esta tarea. Para determinar si tiene los permisos correctos, seleccione Permisos en el menú de la parte izquierda de la consola Braket. La página Gestión de permisos para Amazon Braket le ayuda a comprobar si uno de sus roles actuales tiene permisos suficientes para ejecutar su trabajo híbrido o lo guía a través de la creación de un rol predeterminado que pueda usarse para ejecutar su trabajo híbrido si aún no lo tiene.

Página de permisos y configuración del servicio Amazon Braket que muestra un rol vinculado al servicio y una opción para verificar los roles existentes para el rol de ejecución de Hybrid Jobs.

Para comprobar que tiene roles con permisos suficientes para ejecutar un trabajo híbrido, seleccione el botón Verificar el rol existente. Si lo hace, recibirá un mensaje en el que se indica que se han encontrado los roles. Para ver los nombres de las funciones y su función ARNs, seleccione el botón Mostrar funciones.

Pantalla de permisos y configuración de Amazon Braket que muestra un rol vinculado a un servicio encontrado y los roles existentes con permisos suficientes para ejecutar trabajos híbridos.

Si no tiene un rol con los permisos suficientes para ejecutar un trabajo híbrido, recibirá un mensaje en el que se indica que no se ha encontrado dicho rol. Seleccione el botón Crear un rol predeterminado para obtener un rol con permisos suficientes.

Página de permisos y configuración de Amazon Braket que muestra un rol vinculado a un servicio encontrado y ningún rol de ejecución de trabajos híbridos.

Si el rol se creó correctamente, recibirá un mensaje que lo confirma.

Página de permisos y configuración de Amazon Braket que muestra un rol vinculado a un servicio encontrado y un rol de ejecución de trabajos híbridos creado correctamente.

Si no tiene permisos para realizar esta consulta, se le denegará el acceso. En este caso, póngase en contacto con su AWS administrador interno.

AccessDenied mensaje de error que indica que el usuario no está autorizado a ejecutar el comando iam: ListAttachedRolePolicies en caso contrario, AmazonBraketJobsExecutionRole con una denegación explícita.

Crear y ejecutar

Una vez que tenga un rol con permisos para ejecutar un trabajo híbrido, estará listo para continuar. La pieza clave de su primer trabajo híbrido de Braket es el script del algoritmo. Define el algoritmo que desea ejecutar y contiene las tareas lógicas y cuánticas clásicas que forman parte de su algoritmo. Además del script del algoritmo, puede proporcionar otros archivos de dependencia. El script del algoritmo, junto con sus dependencias, se denomina módulo fuente. El punto de entrada define el primer archivo o función que se ejecutará en el módulo fuente cuando se inicie el trabajo híbrido.

Diagrama que muestra el flujo de trabajo consistente en crear un trabajo cuántico con una consola o portátil, ejecutar el script del algoritmo en un dispositivo cuántico y analizar los resultados.

En primer lugar, consideremos el siguiente ejemplo básico de un script de algoritmo que crea cinco estados de campana e imprime los resultados de medición correspondientes.

import os from braket.aws import AwsDevice from braket.circuits import Circuit def start_here(): print("Test job started!") # Use the device declared in the job script device = AwsDevice(os.environ["AMZN_BRAKET_DEVICE_ARN"]) bell = Circuit().h(0).cnot(0, 1) for count in range(5): task = device.run(bell, shots=100) print(task.result().measurement_counts) print("Test job completed!")

Guarde este archivo con el nombre algorithm_script.py en el directorio de trabajo actual de su bloc de notas Braket o entorno local. El fichero algorithm_script.py tiene start_here() como punto de entrada previsto.

A continuación, cree un archivo de Python o un cuaderno de Python en el mismo directorio que el archivo algorithm_script.py. Este script inicia el trabajo híbrido y gestiona cualquier procesamiento asíncrono, como imprimir el estado o los resultados clave que nos interesen. Como mínimo, este script debe especificar el script de trabajo híbrido y el dispositivo principal.

nota

Para obtener más información sobre cómo crear un bloc de notas Braket o cargar un archivo, como el archivo algorithm_script.py, en el mismo directorio que los cuadernos, consulte Ejecute su primer circuito con el SDK de Python de Amazon Braket

Para este primer caso básico, opta por un simulador. Independientemente del tipo de dispositivo cuántico al que apunte, ya sea un simulador o una unidad de procesamiento cuántico (QPU) real, el dispositivo que especifique device en el siguiente script se utiliza para programar el trabajo híbrido y está disponible para los scripts del algoritmo como variable AMZN_BRAKET_DEVICE_ARN de entorno.

nota

Solo puede usar los dispositivos que estén disponibles en Región de AWS su trabajo híbrido. El Amazon Braket SDK lo selecciona automáticamente. Región de AWS Por ejemplo, un trabajo híbrido en us-east-1 puede IonQ usar dispositivosSV1,, TN1 yDM1, pero no dispositivos. Rigetti

Si eliges un ordenador cuántico en lugar de un simulador, Braket programa tus trabajos híbridos para que ejecuten todas sus tareas cuánticas con acceso prioritario.

from braket.aws import AwsQuantumJob from braket.devices import Devices job = AwsQuantumJob.create( Devices.Amazon.SV1, source_module="algorithm_script.py", entry_point="algorithm_script:start_here", wait_until_complete=True )

El parámetro wait_until_complete=True establece un modo detallado para que el trabajo imprima el resultado del trabajo real a medida que se ejecuta. Debería ver un resultado similar al siguiente ejemplo.

Initializing Braket Job: arn:aws:braket:us-west-2:111122223333:job/braket-job-default-123456789012 Job queue position: 1 Job queue position: 1 Job queue position: 1 .............. . . . Beginning Setup Checking for Additional Requirements Additional Requirements Check Finished Running Code As Process Test job started! Counter({'00': 58, '11': 42}) Counter({'00': 55, '11': 45}) Counter({'11': 51, '00': 49}) Counter({'00': 56, '11': 44}) Counter({'11': 56, '00': 44}) Test job completed! Code Run Finished 2025-09-24 23:13:40,962 sagemaker-training-toolkit INFO Reporting training SUCCESS
nota

También puedes usar tu módulo personalizado con el método AwsQuantumJob.create pasando su ubicación (la ruta a un directorio o archivo local o el URI de S3 de un archivo tar.gz). Para ver un ejemplo práctico, consulta el archivo Parallelize_Training_for_QML.ipynb en la carpeta de trabajos híbridos del repositorio Github de ejemplos de Amazon Braket.

Supervisar resultados

Como alternativa, puedes acceder a la salida del registro desde Amazon CloudWatch. Para ello, vaya a la pestaña Grupos de registros en el menú izquierdo de la página de detalles del trabajo, seleccione el grupo de registros yaws/braket/jobs, a continuación, elija el flujo de registro que contiene el nombre del trabajo. En el ejemplo anterior, es braket-job-default-1631915042705/algo-1-1631915190.

CloudWatch grupo de registros que muestra una lista de eventos de registro con rutas de archivo y marcas de tiempo para las pruebas de Python del SDK de Amazon Braket.

También puede ver el estado del trabajo híbrido en la consola seleccionando la página Trabajos híbridos y, a continuación, seleccionando Configuración.

Detalles del trabajo híbrido de Amazon Braket que muestran un resumen, los tiempos de los eventos, el código fuente y la configuración de la instancia y las condiciones de parada.

Su trabajo híbrido produce algunos artefactos en Amazon S3 mientras se ejecuta. El nombre predeterminado del bucket de S3 es amazon-braket-<region>-<accountid> y el contenido está en el jobs/<jobname>/<timestamp> directorio. Puede configurar las ubicaciones de S3 en las que se almacenan estos artefactos especificando una diferente code_location al crear el trabajo híbrido con el SDK de Python de Braket.

nota

Este depósito de S3 debe estar ubicado en el mismo lugar que Región de AWS el script de trabajo.

El jobs/<jobname>/<timestamp> directorio contiene una subcarpeta con el resultado del script del punto de entrada en un model.tar.gz archivo. También hay un directorio llamado script que contiene los artefactos del script del algoritmo en un source.tar.gz archivo. Los resultados de sus tareas cuánticas reales se encuentran en el directorio nombradojobs/<jobname>/tasks.

Guardar los resultados de su trabajo

Puede guardar los resultados generados por el script del algoritmo para que estén disponibles en el objeto de trabajo híbrido del script de trabajo híbrido, así como en la carpeta de salida de Amazon S3 (en un archivo comprimido con tar denominado model.tar.gz).

El resultado debe guardarse en un archivo con un formato de notación de JavaScript objetos (JSON). Si los datos no se pueden serializar fácilmente en texto, como en el caso de una matriz numérica, puede incluir una opción para serializar utilizando un formato de datos decapado. Consulte el módulo braket.jobs.data_persistence para obtener más información.

Para guardar los resultados de los trabajos híbridos, añada las siguientes líneas comentadas con #ADD al archivo algorithm_script.py.

import os from braket.aws import AwsDevice from braket.circuits import Circuit from braket.jobs import save_job_result # ADD def start_here(): print("Test job started!") device = AwsDevice(os.environ['AMZN_BRAKET_DEVICE_ARN']) results = [] # ADD 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) # ADD save_job_result({"measurement_counts": results}) # ADD print("Test job completed!")

A continuación, puede mostrar los resultados del trabajo desde su script de trabajo añadiendo la línea print(job.result())comentada con #ADD.

import time from braket.aws import AwsQuantumJob job = AwsQuantumJob.create( source_module="algorithm_script.py", entry_point="algorithm_script:start_here", device="arn:aws:braket:::device/quantum-simulator/amazon/sv1", ) print(job.arn) while job.state() not in AwsQuantumJob.TERMINAL_STATES: print(job.state()) time.sleep(10) print(job.state()) print(job.result()) # ADD

En este ejemplo, la hemos eliminado wait_until_complete=True para suprimir la salida detallada. Puedes volver a añadirlo para su depuración. Cuando ejecutas este trabajo híbrido, muestra el identificador y el job-arn estado del trabajo híbrido cada 10 segundos hasta que el trabajo híbrido esté listoCOMPLETED, tras lo cual te muestra los resultados del circuito de campana. Consulte el siguiente ejemplo.

arn:aws:braket:us-west-2:111122223333:job/braket-job-default-123456789012 INITIALIZED RUNNING RUNNING RUNNING RUNNING RUNNING RUNNING RUNNING RUNNING RUNNING RUNNING ... RUNNING RUNNING COMPLETED {'measurement_counts': [{'11': 53, '00': 47},..., {'00': 51, '11': 49}]}

Guardar y reiniciar los trabajos híbridos mediante puntos de control

Puede guardar las iteraciones intermedias de sus trabajos híbridos mediante puntos de control. En el ejemplo del script de algoritmos de la sección anterior, añadiría las siguientes líneas comentadas con #ADD para crear archivos de puntos de control.

from braket.aws import AwsDevice from braket.circuits import Circuit from braket.jobs import save_job_checkpoint # ADD import os def start_here(): print("Test job starts!") device = AwsDevice(os.environ["AMZN_BRAKET_DEVICE_ARN"]) # ADD the following code job_name = os.environ["AMZN_BRAKET_JOB_NAME"] save_job_checkpoint(checkpoint_data={"data": f"data for checkpoint from {job_name}"}, checkpoint_file_suffix="checkpoint-1") # End of ADD bell = Circuit().h(0).cnot(0, 1) for count in range(5): task = device.run(bell, shots=100) print(task.result().measurement_counts) print("Test hybrid job completed!")

Al ejecutar el trabajo híbrido, se crea el archivo -checkpoint-1.json <jobname>en los artefactos del trabajo híbrido del directorio de puntos de control con una ruta predeterminada. /opt/jobs/checkpoints El script del trabajo híbrido permanece inalterado a menos que desee cambiar esta ruta predeterminada.

Si desea cargar un trabajo híbrido desde un punto de control generado por un trabajo híbrido anterior, utilice from braket.jobs import load_job_checkpoint el script del algoritmo. La lógica que se debe cargar en el script de su algoritmo es la siguiente.

from braket.jobs import load_job_checkpoint checkpoint_1 = load_job_checkpoint( "previous_job_name", checkpoint_file_suffix="checkpoint-1", )

Tras cargar este punto de control, puede continuar con la lógica en función del contenido cargado en él. checkpoint-1

nota

El checkpoint_file_suffix debe coincidir con el sufijo previamente especificado al crear el punto de control.

El guion de orquestación debe especificar lo del trabajo híbrido anterior con la línea job-arn comentada con #ADD.

from braket.aws import AwsQuantumJob job = AwsQuantumJob.create( source_module="source_dir", entry_point="source_dir.algorithm_script:start_here", device="arn:aws:braket:::device/quantum-simulator/amazon/sv1", copy_checkpoints_from_job="<previous-job-ARN>", #ADD )