

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.

# Conceptos clave de los trabajos híbridos
<a name="braket-jobs-concepts"></a>

En esta sección se explican los conceptos clave de la función `AwsQuantumJob.create` proporcionada por el SDK de Python de Amazon Braket y su asignación a la estructura del archivo contenedor.

Además del archivo o los archivos que componen el script completo del algoritmo, el trabajo híbrido puede tener entradas y salidas adicionales. Cuando se inicia el trabajo híbrido, Amazon Braket copia las entradas proporcionadas como parte de la creación del trabajo híbrido en el contenedor que ejecuta el script de algoritmo. Cuando se completa el trabajo híbrido, todos los resultados definidos durante el algoritmo se copian en la ubicación de Amazon S3 especificada.

**nota**  
 Las *métricas del algoritmo* se notifican en tiempo real y no siguen este procedimiento de salida.

Amazon Braket también proporciona varias variables de entorno y funciones auxiliares para simplificar las interacciones con las entradas y salidas de los contenedores. Para obtener más información, consulte el [paquete braket.jobs](https://amazon-braket-sdk-python.readthedocs.io/en/latest/_apidoc/braket.jobs.html) del SDK de Amazon Braket. 

**Topics**
+ [Entradas](#braket-jobs-inputs)
+ [Outputs](#braket-jobs-outputs)
+ [Variables de entorno](#braket-jobs-environmental-variables)
+ [Funciones auxiliares](#braket-jobs-helper-functions)

## Entradas
<a name="braket-jobs-inputs"></a>

 **Datos de entrada**: los datos de entrada se pueden proporcionar al algoritmo híbrido especificando el archivo de datos de entrada, que está configurado como un diccionario, con el argumento `input_data`. El usuario define el argumento `input_data` dentro de la función `AwsQuantumJob.create` en el SDK. Esto copia los datos de entrada al sistema de archivo contenedor en la ubicación indicada por la variable de entorno `"AMZN_BRAKET_INPUT_DIR"`. Para ver un par de ejemplos de cómo se utilizan los datos de entrada en un algoritmo híbrido, consulte la [QAOA con Amazon Braket Hybrid Jobs PennyLane y el aprendizaje automático cuántico en los cuadernos Amazon Braket Hybrid](https://github.com/amazon-braket/amazon-braket-examples/blob/main/examples/hybrid_jobs/2_Using_PennyLane_with_Braket_Hybrid_Jobs/Using_PennyLane_with_Braket_Hybrid_Jobs.ipynb) [Jobs Jupyter](https://github.com/amazon-braket/amazon-braket-examples/blob/main/examples/hybrid_jobs/1_Quantum_machine_learning_in_Amazon_Braket_Hybrid_Jobs/Quantum_machine_learning_in_Amazon_Braket_Hybrid_Jobs.ipynb).

**nota**  
Si los datos de entrada son grandes (>1 GB), habrá un largo tiempo de espera antes de que se envíe el trabajo híbrido. Esto se debe a que los datos de entrada locales se cargarán primero en un bucket S3, luego se añadirá la ruta S3 a la solicitud de trabajo híbrido y, por último, la solicitud de trabajo híbrido se enviará al servicio de Braket.

 **Hiperparámetros**: si transfiere`hyperparameters`, estarán disponibles en la variable de entorno `"AMZN_BRAKET_HP_FILE"`.

**nota**  
Para obtener más información sobre cómo crear hiperparámetros y datos de entrada y, a continuación, pasar esta información al script de trabajo híbrido, consulte la sección [Uso de hiperparámetros](braket-jobs-hyperparameters.md) en esta [página](https://github.com/amazon-braket/amazon-braket-examples/blob/main/examples/hybrid_jobs/1_Quantum_machine_learning_in_Amazon_Braket_Hybrid_Jobs/qcbm/qcbm.py) de GitHub.

 **Puntos de control**: para especificar un `job-arn` cuyo punto de control desea utilizar en un nuevo trabajo híbrido, utilice el comando `copy_checkpoints_from_job`. Este comando copia los datos del punto de control al `checkpoint_configs3Uri` del nuevo trabajo híbrido, de forma que estén disponibles en la ruta indicada por la variable de entorno `AMZN_BRAKET_CHECKPOINT_DIR` mientras se ejecuta el trabajo. El valor predeterminado es `None`, lo que significa que los datos del punto de control de otro trabajo híbrido no se utilizarán en el nuevo trabajo híbrido.

## Outputs
<a name="braket-jobs-outputs"></a>

 **Tareas cuánticas**: los resultados de las tareas cuánticas se almacenan en la ubicación `s3://amazon-braket-<region>-<accountID>/jobs/<job-name>/tasks` de S3.

 **Resultados del trabajo**: todo lo que el script de algoritmo guarda en el directorio indicado por la variable de entorno `"AMZN_BRAKET_JOB_RESULTS_DIR"` se copia en la ubicación de S3 especificada en `output_data_config`. Si no se especifica el valor, el valor predeterminado es. `s3://amazon-braket-<region>-<accountID>/jobs/<job-name>/<timestamp>/data` Proporcionamos la función auxiliar del SDK ** `save_job_result` **, que puede utilizar para almacenar los resultados cómodamente en forma de diccionario cuando se llame desde el script de algoritmo.

 **Puntos de control**: si desea utilizar puntos de control, puede guardarlos en el directorio indicado por la variable de entorno `"AMZN_BRAKET_CHECKPOINT_DIR"`. También puede usar la función auxiliar del SDK `save_job_checkpoint` en su lugar.

 **Métricas de algoritmos**: puedes definir las métricas de los algoritmos como parte del script de tu algoritmo que se emiten a Amazon CloudWatch y se muestran en tiempo real en la consola de Amazon Braket mientras se ejecuta tu trabajo híbrido. Para ver un ejemplo de cómo utilizar las métricas de algoritmo, consulte [Uso de los trabajos híbridos de Amazon Braket para ejecutar un algoritmo QAOA](braket-jobs-run-qaoa-algorithm.md).

Para obtener más información sobre cómo guardar los resultados de sus trabajos, consulte [Guardar los resultados](https://docs.aws.amazon.com/braket/latest/developerguide/braket-jobs-first.html#braket-jobs-save-results) en la documentación de trabajos híbridos. 

## Variables de entorno
<a name="braket-jobs-environmental-variables"></a>

Amazon Braket proporciona varias variables de entorno para simplificar las interacciones con las entradas y salidas del contenedor. En el siguiente código se enumeran las variables de entorno que utiliza Braket.
+ `AMZN_BRAKET_INPUT_DIR`— El directorio opt/braket/input/data de datos de entrada.
+ `AMZN_BRAKET_JOB_RESULTS_DIR`— El directorio de salida en el opt/braket/model que se escriben los resultados del trabajo.
+ `AMZN_BRAKET_JOB_NAME`: el nombre del trabajo.
+ `AMZN_BRAKET_CHECKPOINT_DIR`: el directorio de puntos de control.
+ `AMZN_BRAKET_HP_FILE`: el archivo que contiene los hiperparámetros.
+ `AMZN_BRAKET_DEVICE_ARN`— El ARN (nombre del AWS recurso) del dispositivo.
+ `AMZN_BRAKET_OUT_S3_BUCKET`: el bucket de Amazon S3 de salida, tal como se especifica en la `OutputDataConfig` de la solicitud de `CreateJob`.
+ `AMZN_BRAKET_SCRIPT_ENTRY_POINT`: el punto de entrada, tal como se especifica en la `ScriptModeConfig` de la solicitud de `CreateJob`.
+ `AMZN_BRAKET_SCRIPT_COMPRESSION_TYPE`: el tipo de compresión, tal como se especifica en la `ScriptModeConfig` de la solicitud de `CreateJob`.
+ `AMZN_BRAKET_SCRIPT_S3_URI`: la ubicación en Amazon S3 del script del usuario, tal como se especifica en la `ScriptModeConfig` de la solicitud de `CreateJob`.
+ `AMZN_BRAKET_TASK_RESULTS_S3_URI`: la ubicación de Amazon S3 en la que el SDK almacenaría los resultados de las tareas cuánticas de forma predeterminada.
+ `AMZN_BRAKET_JOB_RESULTS_S3_PATH`: la ubicación de Amazon S3 en la que se almacenarían los resultados del trabajo, tal como se especifica en la `OutputDataConfig` de la solicitud de `CreateJob`.
+ `AMZN_BRAKET_JOB_TOKEN`: la cadena que se debe pasar al parámetro `jobToken` de `CreateQuantumTask` correspondiente a las tareas cuánticas creadas en el contenedor de tareas.

## Funciones auxiliares
<a name="braket-jobs-helper-functions"></a>

Amazon Braket proporciona varias funciones auxiliares para simplificar las interacciones con las entradas y salidas del contenedor. Estas funciones auxiliares se llamarían desde dentro del script de algoritmo que se utiliza para ejecutar su trabajo híbrido. En el siguiente ejemplo se muestra cómo utilizarlas.

```
from braket.jobs import get_checkpoint_dir, get_hyperparameters, get_input_data_dir, get_job_device_arn, get_job_name, get_results_dir, save_job_result, save_job_checkpoint, load_job_checkpoint

get_checkpoint_dir() # Get the checkpoint directory
get_hyperparameters() # Get the hyperparameters as strings
get_input_data_dir() # Get the input data directory
get_job_device_arn() # Get the device specified by the hybrid job
get_job_name() # Get the name of the hybrid job.
get_results_dir() # Get the path to a results directory
save_job_result(result_data='data') # Save hybrid job results
save_job_checkpoint(checkpoint_data={'key': 'value'}) # Save a checkpoint
load_job_checkpoint() # Load a previously saved checkpoint
```