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:
Suporte habilitado para Amazon EKS na Amazon SageMaker HyperPod
Ter um local de armazenamento compartilhado. Pode ser um sistema de FSx arquivos Amazon ou um sistema NFS acessível a partir dos nós do cluster.
-
Ter dados em um dos seguintes formatos:
JSON
JSONGZ (JSON compactado)
ARROW
Baixe os pesos do modelo Hugging Face e converta para o formato compatível com Nemo.
Configurar o ambiente
Configuração do ambiente Kubernetes
Para configurar seu ambiente Kubernetes, faça o seguinte:
-
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 -
Conecte-se ao cluster do Kubernetes.
aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}" -
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
Treinamento de lançamento
Agora você pode iniciar o treinamento sem pontos de verificação usando kubectl.
kubectl apply -f your_job_config.yaml