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.
SageMakertutoriales previos a la formación para trabajos de formación (GPU)
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 SageMaker formación con instancias de GPU.
-
Configure su entorno
-
Lanza un trabajo de formación con recetas SageMaker HyperPod
Antes de comenzar, asegúrese de que cumple los siguientes requisitos previos.
Requisitos previos
Antes de configurar el entorno, asegúrese de disponer de:
-
Sistema de FSx archivos Amazon o un depósito de Amazon S3 donde puede cargar los datos y generar los artefactos de entrenamiento.
-
Solicitó una cuota de servicio para 1 ml.p4d.24xlarge y 1 ml.p5.48xlarge en Amazon AI. SageMaker Para solicitar un aumento de la cuota de servicio, haga lo siguiente:
-
En la consola AWS Service Quotas, navegue hasta AWS los servicios,
-
Elige Amazon SageMaker AI.
-
Elija una instancia de ml.p4d.24xlarge y una instancia de ml.p5.48xlarge.
-
-
Cree un rol AWS Identity and Access Management (de IAM) con las siguientes políticas administradas para conceder a la SageMaker IA los permisos necesarios para ejecutar los ejemplos.
-
AmazonSageMakerFullAccess
-
Amazon EC2 FullAccess
-
-
Datos en uno de los siguientes formatos:
-
JSON
-
JSONGZ (JSON comprimido)
-
ARROW
-
-
(Opcional) Debes obtener una HuggingFace ficha si utilizas las pesas del modelo para el entrenamiento previo o HuggingFace para ajustarlas con precisión. Para obtener más información sobre cómo obtener el token, consulte User access tokens
.
Configuración del entorno de trabajos de SageMaker entrenamiento con GPU
Antes de ejecutar un trabajo de SageMaker formación, configure sus AWS credenciales y su región preferida ejecutando el aws configure comando. Como alternativa al comando configure, puede proporcionar sus credenciales a través de variables de entorno como AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY, y AWS_SESSION_TOKEN. para obtener más información, consulte SageMaker AI Python SDK
Recomendamos encarecidamente utilizar un SageMaker cuaderno Jupyter de SageMaker IA JupyterLab para iniciar un trabajo de SageMaker formación. Para obtener más información, consulte SageMaker JupyterLab.
-
(Opcional) Configure el entorno virtual y las dependencias. Si utilizas una libreta Jupyter en Amazon SageMaker Studio, puedes saltarte este paso. Asegúrese de utilizar Python 3.9 o posterior.
# 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 # Set the aws region. aws configure set<your_region> -
Instale SageMaker AI Python SDK
pip3 install --upgrade sagemaker -
Container: el SDK de Python para SageMaker IA configura automáticamente el contenedor de GPU. También puede proporcionar su propio contenedor.nota
Si está ejecutando un trabajo de entrenamiento multimodal en Llama 3.2, la versión de
transformersdebe ser4.45.2o superior.transformers==4.45.2requirements.txtAñádelosource_dirsolo cuando utilices el SDK de Python para SageMaker IA. Por ejemplo, agréguelo si lo está utilizando en un cuaderno de IA. SageMaker JupyterLabSi está utilizando HyperPod recetas para iniciar con el tipo de clúster
sm_jobs, esto se realizará automáticamente.
Lanzamiento del trabajo de entrenamiento con un cuaderno de Jupyter
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
import os import sagemaker,boto3 from sagemaker.debugger import TensorBoardOutputConfig from sagemaker.pytorch import PyTorch sagemaker_session = sagemaker.Session() role = sagemaker.get_execution_role() bucket = sagemaker_session.default_bucket() output = os.path.join(f"s3://{bucket}", "output") output_path = "<s3-URI>" overrides = { "run": { "results_dir": "/opt/ml/model", }, "exp_manager": { "exp_dir": "", "explicit_log_dir": "/opt/ml/output/tensorboard", "checkpoint_dir": "/opt/ml/checkpoints", }, "model": { "data": { "train_dir": "/opt/ml/input/data/train", "val_dir": "/opt/ml/input/data/val", }, }, } 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-recipe", role=role, instance_type="ml.p5.48xlarge", training_recipe="training/llama/hf_llama3_8b_seq8k_gpu_p5x16_pretrain", recipe_overrides=recipe_overrides, sagemaker_session=sagemaker_session, tensorboard_output_config=tensorboard_output_config, ) estimator.fit(inputs={"train": "s3 or fsx input", "val": "s3 or fsx input"}, 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 parámetro training_recipe para especificar la receta que desee utilizar para el entrenamiento.
nota
Si está ejecutando un trabajo de entrenamiento multimodal en Llama 3.2, la versión de transformers debe ser 4.45.2 o superior.
transformers==4.45.2Añádelo requirements.txt source_dir solo cuando utilices el SDK de Python para SageMaker IA directamente. Por ejemplo, debe añadir la versión al archivo de texto cuando utilice un cuaderno de Jupyter.
Al implementar el punto final para un trabajo de SageMaker formación, debe especificar el URI de la imagen que está utilizando. Si no proporciona la URI de la imagen, el estimador utilizará la imagen de entrenamiento para la implementación. Las imágenes de entrenamiento que se SageMaker HyperPod proporcionan no contienen las dependencias necesarias para la inferencia y el despliegue. En el siguiente ejemplo se muestra cómo se puede utilizar una imagen de inferencia para la implementación:
from sagemaker import image_uris container=image_uris.retrieve(framework='pytorch',region='us-west-2',version='2.0',py_version='py310',image_scope='inference', instance_type='ml.p4d.24xlarge') predictor = estimator.deploy(initial_instance_count=1,instance_type='ml.p4d.24xlarge',image_uri=container)
nota
Para ejecutar el código anterior en una instancia de portátil de Sagemaker, es posible que se necesiten más de los 5 GB de almacenamiento predeterminados que proporciona la IA. SageMaker JupyterLab Si tiene problemas por falta de espacio, cree una nueva instancia de cuaderno en la que debe utilizar una instancia de cuaderno diferente y aumente el almacenamiento del cuaderno.
Lanzamiento del trabajo de entrenamiento con el lanzador de fórmulas
Actualice el archivo ./recipes_collection/cluster/sm_jobs.yaml para que tenga el siguiente aspecto:
sm_jobs_config: output_path:<s3_output_path>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 enable_remote_debug: True recipe_overrides: 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>"
Actualice ./recipes_collection/config.yaml para que especifique sm_jobs en cluster y cluster_type.
defaults: - _self_ - cluster: sm_jobs # set to `slurm`, `k8s` or `sm_jobs`, depending on the desired cluster - 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.
Lance el trabajo con el siguiente comando.
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, consulte Ejecutar un trabajo de formación en los trabajos de SageMaker formación.