View a markdown version of this page

Tutorial de pré-treinamento SageMaker de empregos de treinamento em Trainium - SageMaker IA da Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Tutorial de pré-treinamento SageMaker de empregos de treinamento em Trainium

Este tutorial orienta você no processo de configuração e execução de um trabalho de pré-treinamento usando trabalhos de treinamento com SageMaker instâncias do AWS Trainium.

  • Configure o ambiente.

  • Iniciar uma tarefa de treinamento

Antes de começar, verifique se você atendeu aos pré-requisitos a seguir.

Pré-requisitos

Antes de começar a configurar seu ambiente, você deve:

  • Sistema de arquivos do Amazon FSx ou o bucket S3 onde você pode carregar os dados e gerar os artefatos de treinamento.

  • Solicite uma cota de serviço para a ml.trn1.32xlarge instância na Amazon SageMaker AI. Para solicitar um aumento da cota de serviço, você pode seguir um dos seguintes procedimentos:

    Como solicitar um aumento de cota de serviço para a instância ml.trn1.32xlarge
    1. Navegue até o console AWS Service Quotas.

    2. Escolha AWS serviços.

    3. Selecione JupyterLab.

    4. Especifique 1 instância para ml.trn1.32xlarge.

  • Crie uma função AWS Identity and Access Management (IAM) com as políticas AmazonEC2FullAccess gerenciadas AmazonSageMakerFullAccess e. Essas políticas fornecem à Amazon SageMaker AI permissões para executar os exemplos.

  • Ter dados em um dos seguintes formatos:

    • JSON

    • JSONGZ (JSON compactado)

    • ARROW

  • (Opcional) Se você precisar de pesos pré-treinados HuggingFace ou estiver treinando um modelo Llama 3.2, deverá obter o HuggingFace token antes de começar a treinar. Para ter mais informações sobre como obter o token, consulte User access tokens.

Configure seu ambiente para trabalhos de treinamento da SageMaker Trainium

Antes de executar um trabalho SageMaker de treinamento, use o aws configure comando para configurar suas AWS credenciais e sua região preferida. Também é possível fornecer suas credenciais por meio de variáveis de ambiente, como AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY e AWS_SESSION_TOKEN. Para obter mais informações, consulte SageMaker AI Python SDK.

É altamente recomendável usar um notebook SageMaker AI Jupyter em SageMaker IA JupyterLab para iniciar um trabalho de SageMaker treinamento. Para obter mais informações, consulte SageMaker JupyterLab.

  • (Opcional) Se você estiver usando o notebook Jupyter no Amazon SageMaker Studio, você pode pular a execução do seguinte comando. Use uma versão >= à 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 o SageMaker SDK do AI Python

    pip3 install --upgrade sagemaker
    • Se você estiver executando uma tarefa de treinamento multimodal do llama 3.2, a versão do transformers deve ser 4.45.2 ou posterior.

      • Anexe transformers==4.45.2 requirements.txt em source_dir somente quando estiver usando o SDK do AI Python. SageMaker

      • Se você estiver usando HyperPod receitas para iniciar usando sm_jobs como tipo de cluster, não precisará especificar a versão dos transformadores.

    • Container: O contêiner Neuron é definido automaticamente pelo SageMaker AI Python SDK.

Iniciar a tarefa de treinamento com um caderno Jupyter

Você pode usar o código Python a seguir para executar um trabalho SageMaker de treinamento usando sua receita. Ele aproveita o SDK PyTorch ModelTrainer do SageMaker AI Python para enviar a receita. O exemplo a seguir lança a receita llama3-8b como um trabalho de treinamento de IA. SageMaker

  • compiler_cache_url: cache a ser usado para salvar os artefatos compilados, como um artefato do Amazon S3.

import os import boto3 from sagemaker.core.debugger import TensorBoardOutputConfig from sagemaker.core.helper.session_helper import Session, get_execution_role from sagemaker.train import ModelTrainer from sagemaker.train.configs import Compute, InputData, OutputDataConfig sagemaker_session = Session() role = get_execution_role() bucket = sagemaker_session.default_bucket() output = os.path.join(f"s3://{bucket}", "output") output_path = "<s3-URI>" 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=recipe_overrides["exp_manager"]["explicit_log_dir"] ) model_trainer = ModelTrainer( output_data_config=OutputDataConfig(s3_output_path=output_path), base_job_name=f"llama-trn", role=role, compute=Compute(instance_type="ml.trn1.32xlarge", instance_count=1), training_recipe="training/llama/hf_llama3_70b_seq8k_trn1x16_pretrain", recipe_overrides=recipe_overrides, ) model_trainer.train(input_data_config=[ InputData(channel_name="train", data_source="your-inputs") ], wait=True)

O código anterior cria um ModelTrainer objeto com a receita de treinamento e depois treina o modelo usando o train() método. Use o parâmetro training_recipe para especificar a fórmula que você deseja usar para treinamento.

Iniciar a tarefa de treinamento com o inicializador de fórmulas

  • Atualizar as ./recipes_collection/cluster/sm_jobs.yaml

    • compiler_cache_url: o URL usado para salvar os artefatos. Pode ser um URL do 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
  • Atualizar as ./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.
  • Iniciar a tarefa com main.py

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

Para obter mais informações sobre como configurar trabalhos SageMaker de treinamento, consulteSageMaker tutorial de pré-treinamento para trabalhos de treinamento (GPU).