Tutorial previo a los trabajos de SageMaker formación de Trainium - Amazon SageMaker AI

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.

Tutorial previo a los trabajos de SageMaker formación de Trainium

Este tutorial le guía a través del proceso de configuración y ejecución de un trabajo previo a la formación mediante trabajos de formación con instancias de SageMaker Trainium. AWS

  • Configure su entorno

  • Inicie un trabajo de formación

Antes de empezar, asegúrese de cumplir los siguientes requisitos previos.

Requisitos previos

Antes de empezar a configurar el entorno, asegúrese de tener:

  • Sistema de FSx archivos Amazon o depósito S3 donde puede cargar los datos y generar los artefactos de entrenamiento.

  • Solicita una cuota de servicio para la ml.trn1.32xlarge instancia en Amazon SageMaker AI. Para solicitar un aumento de la cuota de servicio, haga lo siguiente:

    Para solicitar un aumento de la cuota de servicio para la instancia ml.trn1.32xlarge
    1. Diríjase a la consola AWS Service Quotas.

    2. Elija AWS los servicios.

    3. Selecciona JupyterLab.

    4. Especifique una instancia paraml.trn1.32xlarge.

  • Cree un rol AWS Identity and Access Management (de IAM) con las políticas AmazonEC2FullAccess administradas AmazonSageMakerFullAccess y las políticas administradas. Estas políticas proporcionan a Amazon SageMaker AI permisos para ejecutar los ejemplos.

  • Datos en uno de los siguientes formatos:

    • JSON

    • JSONGZ (JSON comprimido)

    • FLECHA

  • (Opcional) Si necesitas las pesas previamente entrenadas HuggingFace o si estás entrenando un modelo Llama 3.2, debes obtener la HuggingFace ficha antes de empezar a entrenar. Para obtener más información sobre cómo obtener el token, consulta Tokens de acceso de usuario.

Configure su entorno para los trabajos de formación de Trainium SageMaker

Antes de realizar un trabajo de SageMaker formación, utilice el aws configure comando para configurar sus AWS credenciales y su región preferida. Como alternativa, también puede proporcionar sus credenciales a través de variables de entorno como AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY, yAWS_SESSION_TOKEN. Para obtener más información, consulte SageMaker AI Python SDK.

Recomendamos encarecidamente utilizar un cuaderno SageMaker AI Jupyter en SageMaker IA JupyterLab para iniciar un trabajo de SageMaker formación. Para obtener más información, consulte JupyterLab de SageMaker.

  • (Opcional) Si utilizas el cuaderno Jupyter en Amazon SageMaker Studio, puedes omitir la ejecución del siguiente comando. Asegúrese de usar una versión >= python 3.9

    # set up a virtual environment python3 -m venv ${PWD}/venv source venv/bin/activate # install dependencies after git clone. git clone --recursive git@github.com:aws/sagemaker-hyperpod-recipes.git cd sagemaker-hyperpod-recipes pip3 install -r requirements.txt
  • Instale SageMaker AI Python SDK

    pip3 install --upgrade sagemaker
    • Si estás ejecutando un trabajo de entrenamiento multimodal de Llama 3.2, la transformers versión debe ser igual 4.45.2 o superior.

      • transformers==4.45.2Añádelo a requirements.txt source_dir solo cuando utilices el SDK de SageMaker Python para IA.

      • Si utilizas HyperPod recetas para lanzarlas sm_jobs como tipo de clúster, no es necesario que especifiques la versión de los transformers.

    • Container: El SDK de SageMaker AI Python configura automáticamente el contenedor Neuron.

Inicie el trabajo de formación con un Jupyter Notebook

Puedes usar el siguiente código de Python para ejecutar un trabajo de SageMaker entrenamiento con tu receta. Utiliza el PyTorch estimador del SDK de SageMaker Python para IA para enviar la receta. El siguiente ejemplo lanza la receta llama3-8b como un trabajo de entrenamiento de IA SageMaker .

  • compiler_cache_url: caché que se utilizará para guardar los artefactos compilados, como un artefacto de Amazon S3.

import os import sagemaker,boto3 from sagemaker.debugger import TensorBoardOutputConfig from sagemaker.pytorch import PyTorch sagemaker_session = sagemaker.Session() role = sagemaker.get_execution_role() recipe_overrides = { "run": { "results_dir": "/opt/ml/model", }, "exp_manager": { "explicit_log_dir": "/opt/ml/output/tensorboard", }, "data": { "train_dir": "/opt/ml/input/data/train", }, "model": { "model_config": "/opt/ml/input/data/train/config.json", }, "compiler_cache_url": "<compiler_cache_url>" } tensorboard_output_config = TensorBoardOutputConfig( s3_output_path=os.path.join(output, 'tensorboard'), container_local_output_path=overrides["exp_manager"]["explicit_log_dir"] ) estimator = PyTorch( output_path=output_path, base_job_name=f"llama-trn", role=role, instance_type="ml.trn1.32xlarge", sagemaker_session=sagemaker_session, training_recipe="training/llama/hf_llama3_70b_seq8k_trn1x16_pretrain", recipe_overrides=recipe_overrides, ) estimator.fit(inputs={"train": "your-inputs"}, wait=True)

El código anterior crea un objeto PyTorch estimador con la receta de entrenamiento y, a continuación, ajusta el modelo mediante el método. fit() Utilice el training_recipe parámetro para especificar la receta que desea utilizar para el entrenamiento.

Inicie el trabajo de formación con el lanzador de recetas

  • Actualice ./recipes_collection/cluster/sm_jobs.yaml

    • compiler_cache_url: la URL utilizada para guardar los artefactos. Puede ser una URL de Amazon S3.

    sm_jobs_config: output_path: <s3_output_path> wait: True tensorboard_config: output_path: <s3_output_path> container_logs_path: /opt/ml/output/tensorboard # Path to logs on the container wait: True # Whether to wait for training job to finish inputs: # Inputs to call fit with. Set either s3 or file_system, not both. s3: # Dictionary of channel names and s3 URIs. For GPUs, use channels for train and validation. train: <s3_train_data_path> val: null additional_estimator_kwargs: # All other additional args to pass to estimator. Must be int, float or string. max_run: 180000 image_uri: <your_image_uri> enable_remote_debug: True py_version: py39 recipe_overrides: model: exp_manager: exp_dir: <exp_dir> data: train_dir: /opt/ml/input/data/train val_dir: /opt/ml/input/data/val
  • Actualice ./recipes_collection/config.yaml

    defaults: - _self_ - cluster: sm_jobs - recipes: training/llama/hf_llama3_8b_seq8k_trn1x4_pretrain cluster_type: sm_jobs # bcm, bcp, k8s or sm_jobs. If bcm, k8s or sm_jobs, it must match - cluster above. instance_type: ml.trn1.32xlarge base_results_dir: ~/sm_job/hf_llama3_8B # Location to store the results, checkpoints and logs.
  • Inicie el trabajo con main.py

    python3 main.py --config-path recipes_collection --config-name config

Para obtener más información sobre la configuración de los trabajos de SageMaker formación, consulteSageMaker trabajos de formación, tutorial previo a la formación (GPU).