Tutoriais - Pré-treinamento ou ajuste fino de modelos personalizados do Amazon SageMaker HyperPod Checkpointless - SageMaker Inteligência Artificial 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á.

Tutoriais - Pré-treinamento ou ajuste fino de modelos personalizados do Amazon SageMaker HyperPod Checkpointless

A sequência de etapas a seguir é necessária para realizar um treinamento sem pontos de verificação com seu modelo personalizado ativado. HyperPod

Pré-requisitos

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

Configuração do ambiente Kubernetes

Para configurar seu ambiente Kubernetes, faça o seguinte:

  1. Configure um ambiente virtual. Certifique-se de usar Python maior ou igual a 3,10 e menor que 3,14.

    python3 -m venv ${PWD}/venv source venv/bin/activate
  2. Configurar kubectl e eksctl

  3. Conecte-se ao cluster do Kubernetes.

    aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}"
  4. Instale as dependências

    # install SageMaker HyperPod checkpointless training. git clone git@github.com:aws/sagemaker-hyperpod-checkpointless-training.git cd sagemaker-hyperpod-checkpointless-training

Instruções de modificação de treinamento Checkpointless

Para adotar incrementalmente o treinamento sem pontos de verificação para modelos personalizados, siga o guia de integração (aqui usamos o pré-treinamento do Llama 3 70b como exemplo), que envolve:

  • Criação rápida de comunicadores

  • Carregador de dados mapeado na memória (MMAP)

  • Recuperação em andamento e sem pontos de verificação

Componente 1: Criação rápida de comunicadores

Isso é para otimizar o tempo para estabelecer conexões entre os trabalhadores. Não há necessidade de alterações no código e requer apenas a configuração de variáveis env

# Enable Rootless features export HPCT_USE_ROOTLESS=1 && \ sysctl -w net.ipv4.ip_local_port_range="20000 65535" && \ hyperpodrun --nproc_per_node=8 \ ... --inprocess-restart \ ...

A alteração completa pode ser encontrada na configuração do trabalho de lançamento do pré-treinamento llama3 70.

Componente 2: carregador de dados mapeado na memória (MMAP)

O MMAP armazena em cache para armazenar amostras de dados pré-buscadas e permitir o início imediato do treinamento sem precisar esperar pelo pré-processamento dos dados. Ele requer mudanças mínimas de código para ser adotado ao encapsular o dataloader existente.

data_module = MMAPDataModule( data_module=base_data_module, mmap_config=CacheResumeMMAPConfig(cache_dir=…) )

Componentes 3 e 4: Recuperação em andamento e sem pontos de verificação

Isso permite a recuperação de falhas sem reiniciar os processos de treinamento ou carregar dos pontos de verificação. Mudanças adicionais no código são necessárias (atualização da configuração de estratégia e treinamento, encapsulamento da principal existente)

@HPWrapper( health_check=CudaHealthCheck(), hp_api_factory=HPAgentK8sAPIFactory(), abort_timeout=60.0, ...) def run_main( cfg, caller: Optional[HPCallWrapper] = None): ... CheckpointlessMegatronStrategy( **self.cfg.strategy, ddp=self.ddp, )

A alteração completa pode ser encontrada no script de entrada de pré-treinamento llama3 70 e a alteração correspondente na configuração de treinamento pode ser encontrada na configuração de treinamento llama3 70b.

Treinamento de lançamento

Agora você pode iniciar o treinamento sem pontos de verificação usando kubectl.

kubectl apply -f your_job_config.yaml