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 arquivos do Amazon FSx ou um sistema do NFS acessível por meio 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. Verifique se você está usando 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
Memory-mapped carregador de dados (MMAP)
In-process e verifique a recuperação 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 de 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: Memory-mapped carregador de dados (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: In-process e recuperação 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