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 executar um treinamento inútil com seu modelo personalizado ativado. HyperPod
Pré-requisitos
Antes de começar a configurar seu ambiente, você deve:
Suporte habilitado do 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. 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 do 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 & Recuperação inútil
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 inicialização do llama3 70 pretrain.
Componente 2: Memory-mapped carregador de dados (MMAP)
Caches MMAP 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 alterações mínimas de código para ser adotado ao envolver o carregador de dados existente.
data_module = MMAPDataModule( data_module=base_data_module, mmap_config=CacheResumeMMAPConfig(cache_dir=…) )
Componentes 3 e 4: In-process e recuperação sem necessidade de verificação
Isso permite a recuperação de falhas sem reiniciar os processos de treinamento ou carregar a partir de 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 configuração 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 checkpointless usando kubectl.
kubectl apply -f your_job_config.yaml