View a markdown version of this page

In-process recuperação e treinamento inútil - 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á.

In-process recuperação e treinamento inútil

HyperPod o treinamento sem ponto de verificação usa redundância de modelo para permitir o treinamento tolerante a falhas. O princípio básico é que os estados do modelo e do otimizador sejam totalmente replicados em vários grupos de nós, com atualizações de peso e mudanças de estado do otimizador replicadas de forma síncrona em cada grupo. Quando ocorre uma falha, as réplicas íntegras concluem as etapas do otimizador e transmitem os model/optimizer estados atualizados às réplicas em recuperação.

Essa abordagem baseada em redundância de modelos permite vários mecanismos de tratamento de falhas:

  • In-process recuperação: os processos permanecem ativos apesar das falhas, mantendo todos os estados do modelo e do otimizador na memória da GPU com os valores mais recentes

  • Tratamento elegante de abortos: abortos controlados e limpeza de recursos para as operações afetadas

  • Reexecução do bloco de código: executar novamente somente os segmentos de código afetados em um bloco de Re-executable código (RCB)

  • Recuperação ininterrupta sem perda do progresso do treinamento: como os processos persistem e os estados permanecem na memória, nenhum progresso do treinamento é perdido; quando ocorre uma falha, o treinamento é retomado da etapa anterior, em vez de ser retomado do último ponto de verificação salvo

Configurações sem necessidade de verificação

Aqui está o trecho principal do treinamento sem controle.

from hyperpod_checkpointless_training.inprocess.train_utils import wait_rank wait_rank() def main(): @HPWrapper( health_check=CudaHealthCheck(), hp_api_factory=HPAgentK8sAPIFactory(), abort_timeout=60.0, checkpoint_manager=PEFTCheckpointManager(enable_offload=True), abort=CheckpointlessAbortManager.get_default_checkpointless_abort(), finalize=CheckpointlessFinalizeCleanup(), ) def run_main(cfg, caller: Optional[HPCallWrapper] = None): ... trainer = Trainer( strategy=CheckpointlessMegatronStrategy(..., num_distributed_optimizer_instances=2), callbacks=[..., CheckpointlessCallback(...)], ) trainer.fresume = resume trainer._checkpoint_connector = CheckpointlessCompatibleConnector(trainer) trainer.wrapper = caller
  • wait_rank: Todas as classificações aguardarão as informações de classificação da HyperpodTrainingOperator infraestrutura.

  • HPWrapper: invólucro de funções Python que permite recursos de reinicialização para um bloco de Re-executable código (RCB). A implementação usa um gerenciador de contexto em vez de um decorador Python porque os decoradores não podem determinar o número de RCBs a serem monitorados em tempo de execução.

  • CudaHealthCheck: garante que o contexto CUDA do processo atual esteja em um estado íntegro por meio da sincronização com a GPU. Usa o dispositivo especificado pela variável de ambiente LOCAL_RANK ou usa como padrão o dispositivo CUDA do thread principal se LOCAL_RANK não estiver definido.

  • HPAgentK8sAPIFactory: essa API permite um treinamento sem necessidade de verificação para consultar o status de treinamento de outros pods no cluster de treinamento do Kubernetes. Ele também fornece uma barreira em nível de infraestrutura que garante que todas as fileiras concluam com êxito as operações de abortar e reiniciar antes de prosseguir.

  • CheckpointManager: gerencia pontos de verificação na memória e recuperação ponto a ponto para tolerância a falhas sem pontos de verificação. Ele tem as seguintes responsabilidades principais:

    • In-Memory Gerenciamento de pontos de verificação: salva e gerencia pontos de verificação do NeMo modelo na memória para uma recuperação rápida sem disco I/O durante cenários de recuperação sem pontos de verificação.

    • Validação da viabilidade de recuperação: determina se a recuperação sem pontos de verificação é possível validando a consistência global da etapa, a integridade da classificação e a integridade do estado do modelo.

    • Peer-to-Peer Orquestração de recuperação: coordena a transferência de pontos de verificação entre classificações saudáveis e fracassadas usando comunicação distribuída para recuperação rápida.

    • Gerenciamento de estado RNG: preserva e restaura estados geradores de números aleatórios em Python, NumPy PyTorch, e Megatron para recuperação determinística.

    • [Opcional] Descarregamento do ponto de verificação: descarregue o ponto de verificação da memória para a CPU se a GPU não tiver capacidade de memória suficiente.

  • PEFTCheckpointManager: Ele se estende CheckpointManager mantendo os pesos do modelo básico para ajuste fino do PEFT.

  • CheckpointlessAbortManager: gerencia as operações de cancelamento em um thread em segundo plano quando um erro é encontrado. Por padrão, ele aborta TransformerEngine, Checkpointing TorchDistributed e. DataLoader Os usuários podem registrar manipuladores de aborto personalizados conforme necessário. Depois que a interrupção for concluída, toda a comunicação deve ser interrompida e todos os processos e threads devem ser encerrados para evitar vazamentos de recursos.

  • CheckpointlessFinalizeCleanup: gerencia as operações de limpeza final no thread principal para componentes que não podem ser abortados ou limpos com segurança no thread em segundo plano.

  • CheckpointlessMegatronStrategy: Isso herda da forma em NemoMegatronStrategy. Observe que o treinamento inútil requer pelo menos 2 num_distributed_optimizer_instances para que haja replicação otimizada. A estratégia também cuida do registro de atributos essenciais e da inicialização do grupo de processos, por exemplo, sem raiz.

  • CheckpointlessCallback: Retorno de chamada Lightning que integra o NeMo treinamento com o sistema de tolerância a falhas do Checkpointless Training. Ele tem as seguintes responsabilidades principais:

    • Gerenciamento do ciclo de vida das etapas de treinamento: monitora o progresso do treinamento e ParameterUpdateLock coordena a recuperação enable/disable sem sentido com base no estado do treinamento (primeira etapa versus etapas subsequentes).

    • Coordenação do estado do ponto de verificação: gerencia o ponto de verificação do modelo básico PEFT na memória. saving/restoring

  • CheckpointlessCompatibleConnector: Uma PTL CheckpointConnector que tenta pré-carregar o arquivo de ponto de verificação na memória, com o caminho de origem determinado nesta prioridade:

    • tente uma recuperação inútil

    • se checkpointless retornar None, volte para parent.resume_start ()

Veja o exemplo para adicionar recursos de treinamento inúteis aos códigos.

Conceitos

Esta seção apresenta conceitos de treinamento inúteis. O treinamento da Checkpointless na Amazon SageMaker HyperPod oferece suporte à recuperação em processo. Essa interface de API segue um formato semelhante às APIs do NVRx.

Conceito - Re-Executable Bloco de código (RCB)

Quando ocorre uma falha, os processos íntegros permanecem ativos, mas uma parte do código deve ser reexecutada para recuperar os estados de treinamento e as pilhas do Python. Um bloco Re-executable de código (RCB) é um segmento de código específico que é executado novamente durante a recuperação de falhas. No exemplo a seguir, o RCB abrange todo o script de treinamento (ou seja, tudo em main ()), o que significa que cada recuperação de falha reinicia o script de treinamento enquanto preserva o modelo na memória e os estados do otimizador.

Conceito - Controle de falhas

Um módulo controlador de falhas recebe notificações quando ocorrem falhas durante o treinamento sem necessidade de verificação. Esse controlador de falhas inclui os seguintes componentes:

  • Módulo de detecção de falhas: recebe notificações de falhas na infraestrutura

  • APIs de definição de RCB: permite que os usuários definam o bloco de código reexecutável (RCB) em seu código

  • Módulo de reinicialização: encerra o RCB, limpa os recursos e reinicia o RCB

Esta imagem ilustra como um módulo controlador de falhas recebe notificações quando ocorre uma falha durante um treinamento sem ponto de verificação.

Conceito - Redundância do modelo

O treinamento de modelos grandes geralmente requer um tamanho paralelo de dados grande o suficiente para treinar modelos com eficiência. No paralelismo de dados tradicional, como PyTorch DDP e Horovod, o modelo é totalmente replicado. Técnicas mais avançadas de paralelismo de dados fragmentados, como o otimizador DeepSpeed Zero e o FSDP, também oferecem suporte ao modo de fragmentação híbrida, que permite fragmentar os model/optimizer estados dentro do grupo de fragmentação e replicar totalmente entre grupos de replicação. NeMo também tem esse recurso de fragmentação híbrida por meio de um argumento num_distributed_optimizer_instances, que permite redundância.

No entanto, adicionar redundância indica que o modelo não será totalmente fragmentado em todo o cluster, resultando em maior uso da memória do dispositivo. A quantidade de memória redundante variará dependendo das técnicas específicas de fragmentação do modelo implementadas pelo usuário. Os pesos, gradientes e memória de ativação do modelo de baixa precisão não serão afetados, pois são fragmentados por meio do paralelismo do modelo. O modelo mestre de alta precisão weights/gradients e os estados do otimizador serão afetados. Adicionar uma réplica de modelo redundante aumenta o uso da memória do dispositivo em aproximadamente o equivalente ao tamanho de um ponto de verificação DCP.

A fragmentação híbrida divide os coletivos de todos os grupos de DP em coletivos relativamente menores. Anteriormente, havia uma dispersão reduzida e uma coleta total em todo o grupo de DP. Depois da fragmentação híbrida, a redução da dispersão é executada somente dentro de cada réplica do modelo, e haverá uma redução total entre os grupos de réplicas do modelo. O all-gather também está sendo executado dentro de cada réplica do modelo. Como resultado, todo o volume de comunicação permanece praticamente inalterado, mas os coletivos funcionam com grupos menores, então esperamos uma melhor latência.

Conceito - Tipos de falha e reinicialização

A tabela a seguir registra diferentes tipos de falhas e mecanismos de recuperação associados. O treinamento da Checkpointless tenta primeiro a recuperação de falhas por meio de uma recuperação em andamento, seguida por uma reinicialização no nível do processo. Ele volta para uma reinicialização no nível do trabalho somente no caso de uma falha catastrófica (por exemplo, vários nós falham ao mesmo tempo).

Tipo de falha Causa Tipo de recuperação Mecanismo de recuperação
In-process falha Code-level erros, exceções In-Process Recuperação (IPR) Execute novamente o RCB dentro do processo existente; processos saudáveis permanecem ativos
Falha na reinicialização do processo Contexto CUDA corrompido, processo encerrado Reinicialização em nível de processo (PLR) SageMaker HyperPod o operador de treinamento reinicia os processos; ignora a reinicialização do pod K8s
Falha na substituição do nó Falha permanente node/GPU de hardware Reinicialização do nível de trabalho (JLR) Substitua o nó com falha; reinicie todo o trabalho de treinamento

Conceito - Proteção de bloqueio atômico para etapa otimizadora

A execução do modelo é dividida em três fases: propagação direta, propagação reversa e etapa otimizadora. O comportamento de recuperação varia de acordo com o tempo de falha:

  • Forward/backward propagação: reverta para o início da etapa de treinamento atual e transmita os estados do modelo para os nós de substituição

  • Etapa do otimizador: permita que réplicas saudáveis concluam a etapa de proteção por bloqueio e, em seguida, transmita os estados atualizados do modelo para os nós substitutos

Essa estratégia garante que as atualizações concluídas do otimizador nunca sejam descartadas, ajudando a reduzir o tempo de recuperação de falhas.

Esta imagem ilustra como a falha é tratada, dependendo se ela ocorre antes ou depois da falha.

Diagrama de fluxo de treinamento Checkpointless

Este diagrama ilustra o fluxo de treinamento sem necessidade de verificação.

As etapas a seguir descrevem a detecção de falhas e o processo de recuperação sem necessidade de verificação:

  1. O ciclo de treinamento começa

  2. Ocorre uma falha

  3. Avalie a viabilidade inútil do currículo

  4. Verifique se é possível fazer um currículo sem sentido

    • Se possível, tente retomar a verificação sem sentido

      • Se a retomada falhar, volte para o ponto de verificação de carregamento do armazenamento

      • Se o currículo for bem-sucedido, o treinamento continuará do estado recuperado

    • Se não for possível, volte ao ponto de verificação de carregamento do armazenamento

  5. Limpe os recursos - aborte todos os grupos de processos e back-ends e libere recursos em preparação para a reinicialização.

  6. Retomar o ciclo de treinamento - um novo ciclo de treinamento começa e o processo retorna à etapa 1.

Referência de API

wait_rank

hyperpod_checkpointless_training.inprocess.train_utils.wait_rank()

Aguarda e recupera as informações de classificação e, em seguida HyperPod, atualiza o ambiente de processo atual com variáveis de treinamento distribuídas.

Essa função obtém a atribuição de classificação correta e as variáveis de ambiente para treinamento distribuído. Ele garante que cada processo receba a configuração apropriada para sua função no trabalho de treinamento distribuído.

Parâmetros

Nenhum

Devoluções

Nenhum

Comportamento

  • Verificação do processo: ignora a execução se for chamada de um subprocesso (só é executada em) MainProcess

  • Recuperação do ambiente: Obtém as variáveis atuais RANK e WORLD_SIZE do ambiente

  • HyperPod Comunicação: chamadas hyperpod_wait_rank_info() para recuperar informações de classificação de HyperPod

  • Atualização do ambiente: atualiza o ambiente de processo atual com variáveis de ambiente específicas do trabalhador recebidas do HyperPod

Variáveis de ambiente

A função lê as seguintes variáveis de ambiente:

  • RANK (int) — Classificação atual do processo (padrão: -1 se não estiver definido)

  • WORLD_SIZE (int) — Número total de processos no trabalho distribuído (padrão: 0 se não for definido)

Aumenta

  • AssertionError— Se a resposta do não HyperPod estiver no formato esperado ou se os campos obrigatórios estiverem ausentes

Exemplo

from hyperpod_checkpointless_training.inprocess.train_utils import wait_rank # Call before initializing distributed training wait_rank() # Now environment variables are properly set for this rank import torch.distributed as dist dist.init_process_group(backend='nccl')

Observações

  • Só é executado no processo principal; as chamadas do subprocesso são automaticamente ignoradas

  • A função bloqueia até HyperPod fornecer as informações de classificação

Embalagem HP

class hyperpod_checkpointless_training.inprocess.wrap.HPWrapper( *, abort=Compose(HPAbortTorchDistributed()), finalize=None, health_check=None, hp_api_factory=None, abort_timeout=None, enabled=True, trace_file_path=None, async_raise_before_abort=True, early_abort_communicator=False, checkpoint_manager=None, check_memory_status=True)

Encapsulador de funções Python que permite recursos de reinicialização para um bloco de Re-executable código (RCB) em treinamento sem pontos de verificação. HyperPod

Esse invólucro fornece tolerância a falhas e recursos de recuperação automática monitorando a execução do treinamento e coordenando reinicializações em processos distribuídos quando ocorrem falhas. Ele usa uma abordagem de gerenciamento de contexto em vez de um decorador para manter os recursos globais durante todo o ciclo de vida do treinamento.

Parâmetros

  • abort (Abort, opcional) — aborta a execução de forma assíncrona quando falhas são detectadas. Padrão: Compose(HPAbortTorchDistributed())

  • finalize (Finalize, opcional) — Rank-local finaliza o manipulador executado durante a reinicialização. Padrão: None

  • health_check (HealthCheck, opcional) — verificação de Rank-local integridade executada durante a reinicialização. Padrão: None

  • hp_api_factory (Chamável, opcional) — Função de fábrica para criar uma API com a qual interagir. HyperPod HyperPod Padrão: None

  • abort_timeout (float, opcional) — Tempo limite para abortar a chamada no thread de controle de falhas. Padrão: None

  • enabled (bool, opcional) — Ativa a funcionalidade do wrapper. QuandoFalse, o invólucro se torna uma passagem. Padrão: True

  • trace_file_path (str, opcional) — Caminho para o arquivo de rastreamento para criação de perfil. VizTracer Padrão: None

  • async_raise_before_abort (bool, opcional) — Ative o aumento antes de abortar no thread de controle de falhas. Padrão: True

  • early_abort_communicator (bool, opcional) — Aborte o comunicador () antes de abortar o carregador de dados. NCCL/Gloo Padrão: False

  • checkpoint_manager (Qualquer, opcional) — Gerenciador para lidar com pontos de verificação durante a recuperação. Padrão: None

  • check_memory_status (bool, opcional) — Ative a verificação e o registro do status da memória. Padrão: True

Métodos

def __call__(self, fn)

Envolve uma função para ativar os recursos de reinicialização.

Parâmetros:

  • fn (Callable) — A função a ser agrupada com recursos de reinicialização

Devoluções:

  • Chamável — Função encapsulada com recursos de reinicialização ou função original se desativada

Exemplo

from hyperpod_checkpointless_training.nemo_plugins.checkpoint_manager import CheckpointManager from hyperpod_checkpointless_training.nemo_plugins.patches import patch_megatron_optimizer from hyperpod_checkpointless_training.nemo_plugins.checkpoint_connector import CheckpointlessCompatibleConnector from hyperpod_checkpointless_training.inprocess.train_utils import HPAgentK8sAPIFactory from hyperpod_checkpointless_training.inprocess.abort import CheckpointlessFinalizeCleanup, CheckpointlessAbortManager @HPWrapper( health_check=CudaHealthCheck(), hp_api_factory=HPAgentK8sAPIFactory(), abort_timeout=60.0, checkpoint_manager=CheckpointManager(enable_offload=False), abort=CheckpointlessAbortManager.get_default_checkpointless_abort(), finalize=CheckpointlessFinalizeCleanup(), )def training_function(): # Your training code here pass

Observações

  • O invólucro torch.distributed precisa estar disponível

  • Quandoenabled=False, o invólucro se torna uma passagem e retorna a função original inalterada

  • O wrapper mantém recursos globais, como monitorar tópicos durante todo o ciclo de vida do treinamento.

  • Oferece suporte à VizTracer criação de perfil quando trace_file_path é fornecido

  • Integra-se com HyperPod o gerenciamento coordenado de falhas em treinamentos distribuídos

HPCallWrapper

class hyperpod_checkpointless_training.inprocess.wrap.HPCallWrapper(wrapper)

Monitora e gerencia o estado de um bloco de código de reinicialização (RCB) durante a execução.

Essa classe lida com o ciclo de vida da execução do RCB, incluindo detecção de falhas, coordenação com outras categorias para reinicializações e operações de limpeza. Ele gerencia a sincronização distribuída e garante uma recuperação consistente em todos os processos de treinamento.

Parâmetros

  • wrapper (HPWrapper) — O wrapper principal contendo configurações globais de recuperação em processo

Atributos.

  • step_upon_restart (int) — Contador que rastreia as etapas desde a última reinicialização, usado para determinar a estratégia de reinicialização

Métodos

def initialize_barrier()

Aguarde a sincronização da HyperPod barreira depois de encontrar uma exceção do RCB.

def start_hp_fault_handling_thread()

Inicie a linha de tratamento de falhas para monitorar e coordenar falhas.

def handle_fn_exception(call_ex)

Processe exceções da função de execução ou RCB.

Parâmetros:

  • call_ex (Exceção) — Exceção da função de monitoramento

def restart(term_ex)

Execute o manipulador de reinicialização, incluindo finalização, coleta de lixo e verificações de integridade.

Parâmetros:

  • term_ex (RankShouldRestart) — Exceção de encerramento que aciona a reinicialização

def launch(fn, *a, **kw)

Execute o RCB com o tratamento adequado de exceções.

Parâmetros:

  • fn (Callable) — Função a ser executada

  • a — Argumentos da função

  • kw — Argumentos de palavras-chave da função

def run(fn, a, kw)

Loop de execução principal que lida com reinicializações e sincronização de barreiras.

Parâmetros:

  • fn (Callable) — Função a ser executada

  • a — Argumentos da função

  • kw — Argumentos de palavras-chave da função

def shutdown()

Desligue o tratamento de falhas e os segmentos de monitoramento.

Observações

  • Lida automaticamente com RankShouldRestart exceções para uma recuperação coordenada

  • Gerencia o rastreamento de memória e aborta a coleta de lixo durante reinicializações

  • Suporta estratégias de recuperação em processo e PLR (Process-Level reinicialização) com base no tempo de falha

CudaHealthCheck

class hyperpod_checkpointless_training.inprocess.health_check.CudaHealthCheck(timeout=datetime.timedelta(seconds=30))

Garante que o contexto CUDA para o processo atual esteja em um estado saudável durante a recuperação inútil do treinamento.

Essa verificação de integridade é sincronizada com a GPU para verificar se o contexto CUDA não está corrompido após uma falha no treinamento. Ele executa operações de sincronização de GPU para detectar quaisquer problemas que possam impedir a retomada bem-sucedida do treinamento. A verificação de integridade é executada depois que os grupos distribuídos são destruídos e a finalização é concluída.

Parâmetros

  • timeout (datetime.timedelta, opcional) — Duração do tempo limite para operações de sincronização de GPU. Padrão: datetime.timedelta(seconds=30)

Métodos

__call__(state, train_ex=None)

Execute a verificação de integridade do CUDA para verificar a integridade do contexto da GPU.

Parâmetros:

  • state (HPState) — HyperPod Estado atual contendo classificação e informações distribuídas

  • train_ex (Exceção, opcional) — A exceção de treinamento original que acionou a reinicialização. Padrão: None

Devoluções:

  • tuple — Uma tupla contendo (state, train_ex) inalterado se a verificação de saúde for aprovada

Aumenta:

  • TimeoutError— Se a sincronização da GPU atingir o tempo limite, indicando um contexto CUDA potencialmente corrompido

Preservação do estado: retorna o estado original e a exceção inalterados se todas as verificações forem aprovadas

Exemplo

import datetime from hyperpod_checkpointless_training.inprocess.health_check import CudaHealthCheck from hyperpod_checkpointless_training.inprocess.wrap import HPWrapper # Create CUDA health check with custom timeout cuda_health_check = CudaHealthCheck( timeout=datetime.timedelta(seconds=60) ) # Use with HPWrapper for fault-tolerant training @HPWrapper( health_check=cuda_health_check, enabled=True ) def training_function(): # Your training code here pass

Observações

  • Usa threading para implementar proteção de tempo limite para sincronização de GPU

  • Projetado para detectar contextos CUDA corrompidos que poderiam impedir a retomada bem-sucedida do treinamento

  • Deve ser usado como parte do pipeline de tolerância a falhas em cenários de treinamento distribuídos

HPAgentK8sAPIFactory

class hyperpod_checkpointless_training.inprocess.train_utils.HPAgentK8sAPIFactory()

Classe de fábrica para criar instâncias HPAgentk8SAPI que se comunicam com HyperPod a infraestrutura para coordenação de treinamento distribuído.

Essa fábrica fornece uma maneira padronizada de criar e configurar objetos HPAgentk8SAPI que lidam com a comunicação entre os processos de treinamento e o plano de controle. HyperPod Ele encapsula a criação do cliente de soquete subjacente e da instância da API, garantindo uma configuração consistente em diferentes partes do sistema de treinamento.

Métodos

__call__()

Crie e retorne uma instância HPAgentk8SAPI configurada para comunicação. HyperPod

Devoluções:

  • HPAgentk8sAPI — Instância de API configurada para comunicação com a infraestrutura HyperPod

Exemplo

from hyperpod_checkpointless_training.inprocess.train_utils import HPAgentK8sAPIFactory from hyperpod_checkpointless_training.inprocess.wrap import HPWrapper from hyperpod_checkpointless_training.inprocess.health_check import CudaHealthCheck # Create the factory hp_api_factory = HPAgentK8sAPIFactory() # Use with HPWrapper for fault-tolerant training hp_wrapper = HPWrapper( hp_api_factory=hp_api_factory, health_check=CudaHealthCheck(), abort_timeout=60.0, enabled=True ) @hp_wrapper def training_function(): # Your distributed training code here pass

Observações

  • Projetado para funcionar perfeitamente com HyperPod a Kubernetes-based infraestrutura. É essencial para o tratamento e recuperação coordenados de falhas em cenários de treinamento distribuídos

CheckpointManager

class hyperpod_checkpointless_training.nemo_plugins.checkpoint_manager.CheckpointManager( enable_checksum=False, enable_offload=False)

Gerencia pontos de verificação na memória e recuperação ponto a ponto para tolerância a falhas sem pontos de verificação em treinamento distribuído.

Essa classe fornece a funcionalidade principal para o treinamento HyperPod sem pontos de verificação, gerenciando pontos de verificação do NeMo modelo na memória, validando a viabilidade da recuperação e orquestrando a transferência de pontos de verificação ponto a ponto de verificação ponto a ponto entre classificações saudáveis e fracassadas. Ele elimina a necessidade de disco I/O durante a recuperação, reduzindo significativamente o tempo médio de recuperação (MTTR).

Parâmetros

  • enable_checksum (bool, opcional) — Habilite a validação da soma de verificação do estado do modelo para verificações de integridade durante a recuperação. Padrão: False

  • enable_offload (bool, opcional) — Ative o descarregamento do ponto de verificação da GPU para a memória da CPU para reduzir o uso da memória da GPU. Padrão: False

Atributos.

  • global_step (int ou None) — Etapa de treinamento atual associada ao ponto de verificação salvo

  • rng_states (list or None) — Estados geradores de números aleatórios armazenados para recuperação determinística

  • checksum_manager (MemoryChecksumManager) — Gerenciador para validação da soma de verificação do estado do modelo

  • parameter_update_lock (ParameterUpdateLock) — Bloqueio para coordenar atualizações de parâmetros durante a recuperação

Métodos

save_checkpoint(trainer)

Salve o ponto de verificação do NeMo modelo na memória para uma possível recuperação sem sentido de verificação.

Parâmetros:

  • trainer (pytorch_lightning.Trainer) — instância do Lightning Trainer PyTorch

Observações:

  • Chamado por CheckpointlessCallback no final do lote ou durante o tratamento de exceções

  • Cria pontos de recuperação sem I/O sobrecarga de disco

  • Armazena estados completos do modelo, otimizador e agendador

delete_checkpoint()

Exclua o ponto de verificação na memória e execute operações de limpeza.

Observações:

  • Limpa dados de pontos de verificação, estados RNG e tensores em cache

  • Executa a coleta de lixo e a limpeza do cache CUDA

  • Chamado após uma recuperação bem-sucedida ou quando o ponto de verificação não é mais necessário

try_checkpointless_load(trainer)

Tente uma recuperação sem sentido carregando o estado das classificações de pares.

Parâmetros:

  • trainer (pytorch_lightning.Trainer) — instância do Lightning Trainer PyTorch

Devoluções:

  • dict ou None — Ponto de verificação restaurado em caso de sucesso, Nenhum se for necessário retornar ao disco

Observações:

  • Principal ponto de entrada para recuperação sem necessidade de verificação

  • Valida a viabilidade de recuperação antes de tentar a transferência P2P

  • Sempre limpa os pontos de verificação na memória após a tentativa de recuperação

checkpointless_recovery_feasible(trainer, include_checksum_verification=True)

Determine se a recuperação sem necessidade de verificação é possível para o cenário de falha atual.

Parâmetros:

  • trainer (pytorch_lightning.Trainer) — instância do Lightning Trainer PyTorch

  • include_checksum_verification (bool, opcional) — Se deve incluir a validação da soma de verificação. Padrão: True

Devoluções:

  • bool — Verdadeiro se a recuperação sem ponto de verificação for viável, falso caso contrário

Critérios de validação:

  • Consistência global de etapas em níveis saudáveis

  • Réplicas saudáveis suficientes disponíveis para recuperação

  • Integridade da soma de verificação do estado do modelo (se habilitada)

store_rng_states()

Armazene todos os estados do gerador de números aleatórios para recuperação determinística.

Observações:

  • Captura estados RNG de Python NumPy, PyTorch CPU/GPU, e Megatron

  • Essencial para manter o determinismo do treinamento após a recuperação

load_rng_states()

Restaure todos os estados de RNG para uma continuação determinística da recuperação.

Observações:

  • Restaura todos os estados RNG armazenados anteriormente

  • Garante que o treinamento continue com sequências aleatórias idênticas

maybe_offload_checkpoint()

Descarregue o ponto de verificação da GPU para a memória da CPU se o descarregamento estiver ativado.

Observações:

  • Reduz o uso de memória da GPU em modelos grandes

  • Só é executado se enable_offload=True

  • Mantém a acessibilidade do ponto de verificação para recuperação

Exemplo

from hyperpod_checkpointless_training.inprocess.wrap import HPWrapper from hyperpod_checkpointless_training.nemo_plugins.checkpoint_manager import CheckpointManager # Use with HPWrapper for complete fault tolerance @HPWrapper( checkpoint_manager=CheckpointManager(), enabled=True ) def training_function(): # Training code with automatic checkpointless recovery pass

Validação: verifica a integridade do ponto de verificação usando somas de verificação (se habilitado)

Observações

  • Usa primitivas de comunicação distribuída para transferência P2P eficiente

  • Manipula automaticamente as conversões do tipo de tensor e o posicionamento do dispositivo

  • MemoryChecksumManager— Lida com a validação da integridade do estado do modelo

PEFTCheckpointManager

class hyperpod_checkpointless_training.nemo_plugins.checkpoint_manager.PEFTCheckpointManager( *args, **kwargs)

Gerencia pontos de verificação para PEFT (Parameter-Efficient Fine-Tuning) com base separada e manuseio do adaptador para uma recuperação otimizada sem pontos de verificação.

Esse gerenciador de pontos de verificação especializado se estende CheckpointManager para otimizar os fluxos de trabalho do PEFT, separando os pesos do modelo básico dos parâmetros do adaptador.

Parâmetros

Herda todos os parâmetros de CheckpointManager:

  • enable_checksum (bool, opcional) — Ative a validação da soma de verificação do estado do modelo. Padrão: False

  • enable_offload (bool, opcional) — Ative o descarregamento do ponto de verificação para a memória da CPU. Padrão: False

Atributos adicionais

  • params_to_save (set) — Conjunto de nomes de parâmetros que devem ser salvos como parâmetros do adaptador

  • base_model_weights (dict ou None) — Pesos do modelo básico em cache, salvos uma vez e reutilizados

  • base_model_keys_to_extract (list ou None) — Chaves para extrair tensores do modelo básico durante a transferência P2P

Métodos

maybe_save_base_model(trainer)

Salve os pesos do modelo básico uma vez, filtrando os parâmetros do adaptador.

Parâmetros:

  • trainer (pytorch_lightning.Trainer) — instância do Lightning Trainer PyTorch

Observações:

  • Só economiza os pesos do modelo básico na primeira chamada; as chamadas subsequentes são inoperantes

  • Filtra os parâmetros do adaptador para armazenar somente pesos congelados do modelo básico

  • Os pesos do modelo básico são preservados em várias sessões de treinamento

save_checkpoint(trainer)

Salve o ponto de verificação do modelo do adaptador NeMo PEFT na memória para uma possível recuperação sem sentido de verificação.

Parâmetros:

  • trainer (pytorch_lightning.Trainer) — instância do Lightning Trainer PyTorch

Observações:

  • Chama automaticamente maybe_save_base_model() se o modelo básico ainda não foi salvo

  • Filtra o ponto de verificação para incluir somente os parâmetros do adaptador e o estado de treinamento

  • Reduz significativamente o tamanho do ponto de verificação em comparação com os pontos de verificação do modelo completo

try_base_model_checkpointless_load(trainer)

Experimente a recuperação sem sentido dos pesos do modelo básico PEFT carregando o estado a partir de classificações de pares.

Parâmetros:

  • trainer (pytorch_lightning.Trainer) — instância do Lightning Trainer PyTorch

Devoluções:

  • dict ou None — Restaurou o ponto de verificação do modelo básico em caso de sucesso, Nenhum se for necessário um fallback

Observações:

  • Usado durante a inicialização do modelo para recuperar os pesos do modelo básico

  • Não limpa os pesos do modelo básico após a recuperação (preserva para reutilização)

  • Otimizado para cenários de recuperação somente de pesos de modelo

try_checkpointless_load(trainer)

Experimente a recuperação inútil dos pesos do adaptador PEFT carregando o estado a partir de classificações de pares.

Parâmetros:

  • trainer (pytorch_lightning.Trainer) — instância do Lightning Trainer PyTorch

Devoluções:

  • dict ou None — Restaurou o ponto de verificação do adaptador em caso de sucesso, Nenhum se for necessário um fallback

Observações:

  • Recupera somente parâmetros do adaptador, estados do otimizador e agendadores

  • Carrega automaticamente os estados do otimizador e do agendador após uma recuperação bem-sucedida

  • Limpa os pontos de verificação do adaptador após a tentativa de recuperação

is_adapter_key(key)

Verifique se a chave state dict pertence aos parâmetros do adaptador.

Parâmetros:

  • key (str ou tuple) — Chave de dicionário de estado a ser verificada

Devoluções:

  • bool — Verdadeiro se a chave for o parâmetro do adaptador, Falso se o parâmetro do modelo básico

Lógica de detecção:

  • Verifica se a chave está params_to_save definida

  • Identifica as chaves que contêm “.adapter”. substring

  • Identifica as chaves que terminam com “.adapters”

  • Para chaves de tupla, verifica se o parâmetro requer gradientes

maybe_offload_checkpoint()

Descarregue os pesos do modelo básico da GPU para a memória da CPU.

Observações:

  • Estende o método principal para lidar com o descarregamento de peso do modelo básico

  • Os pesos dos adaptadores geralmente são pequenos e não precisam ser descarregados

  • Define o sinalizador interno para rastrear o estado de descarga

Observações

  • Projetado especificamente para Parameter-Efficient Fine-Tuning cenários (LoRa, adaptadores etc.)

  • Lida automaticamente com a separação do modelo básico e dos parâmetros do adaptador

Exemplo

from hyperpod_checkpointless_training.inprocess.wrap import HPWrapper from hyperpod_checkpointless_training.nemo_plugins.checkpoint_manager import PEFTCheckpointManager # Use with HPWrapper for complete fault tolerance @HPWrapper( checkpoint_manager=PEFTCheckpointManager(), enabled=True ) def training_function(): # Training code with automatic checkpointless recovery pass

CheckpointlessAbortManager

class hyperpod_checkpointless_training.inprocess.abort.CheckpointlessAbortManager()

Classe de fábrica para criar e gerenciar composições de componentes abortados para verificar a tolerância a falhas sem sentido.

Essa classe de utilitário fornece métodos estáticos para criar, personalizar e gerenciar composições de componentes abortados usadas durante o tratamento de falhas em treinamentos inúteis HyperPod . Ele simplifica a configuração de sequências de interrupção que lidam com a limpeza de componentes de treinamento distribuídos, carregadores de dados e recursos específicos da estrutura durante a recuperação de falhas.

Parâmetros

Nenhum (todos os métodos são estáticos)

Métodos estáticos

get_default_checkpointless_abort()

Obtenha a instância de composição de aborto padrão contendo todos os componentes de cancelamento padrão.

Devoluções:

  • Compose — Instância de aborto composta padrão com todos os componentes de aborto

Componentes padrão:

  • AbortTransformerEngine() — Limpa recursos TransformerEngine

  • HPCheckpointingAbort() — Lida com a limpeza do sistema de pontos de verificação

  • HPAbortTorchDistributed() — Aborta operações PyTorch distribuídas

  • HPDataLoaderAbort() — Pára e limpa os carregadores de dados

create_custom_abort(abort_instances)

Crie uma composição de aborto personalizada com somente as instâncias de aborto especificadas.

Parâmetros:

  • abort_instances (Abort) — Número variável de instâncias de aborto a serem incluídas na composição

Devoluções:

  • Compose — Nova instância de aborto composta contendo somente os componentes especificados

Aumenta:

  • ValueError— Se nenhuma instância de aborto for fornecida

override_abort(abort_compose, abort_type, new_abort)

Substitua um componente de cancelamento específico em uma instância do Compose por um novo componente.

Parâmetros:

  • abort_compose (Compose) — A instância original do Compose a ser modificada

  • abort_type (type) — O tipo de componente de aborto a ser substituído (por exemplo,) HPCheckpointingAbort

  • new_abort (Abort) — A nova instância de aborto a ser usada como substituta

Devoluções:

  • Compose — Nova instância do Compose com o componente especificado substituído

Aumenta:

  • ValueError— Se abort_compose não tiver o atributo 'instances'

Exemplo

from hyperpod_checkpointless_training.inprocess.wrap import HPWrapper from hyperpod_checkpointless_training.nemo_plugins.callbacks import CheckpointlessCallback from hyperpod_checkpointless_training.inprocess.abort import CheckpointlessFinalizeCleanup, CheckpointlessAbortManager # The strategy automatically integrates with HPWrapper @HPWrapper( abort=CheckpointlessAbortManager.get_default_checkpointless_abort(), health_check=CudaHealthCheck(), finalize=CheckpointlessFinalizeCleanup(), enabled=True ) def training_function(): trainer.fit(...)

Observações

  • Configurações personalizadas permitem um controle refinado sobre o comportamento de limpeza

  • As operações de interrupção são essenciais para a limpeza adequada dos recursos durante a recuperação de falhas

CheckpointlessFinalizeCleanup

class hyperpod_checkpointless_training.inprocess.abort.CheckpointlessFinalizeCleanup()

Executa uma limpeza abrangente após a detecção de falhas para se preparar para a recuperação em processo durante o treinamento sem necessidade de verificação.

Esse manipulador de finalização executa operações de limpeza específicas da estrutura, incluindo Megatron/TransformerEngine aborto, limpeza de DDP, recarregamento de módulo e limpeza de memória, destruindo referências de componentes de treinamento. Ele garante que o ambiente de treinamento seja redefinido adequadamente para uma recuperação bem-sucedida durante o processo, sem exigir o encerramento total do processo.

Parâmetros

Nenhum

Atributos.

  • treinador (pytorch_lightning.Trainer ou None) — Referência à instância do treinador do Lightning PyTorch

Métodos

__call__(*a, **kw)

Execute operações de limpeza abrangentes para a preparação da recuperação em andamento.

Parâmetros:

  • a — Argumentos posicionais variáveis (herdados da interface Finalize)

  • kw — Argumentos de palavras-chave variáveis (herdados da interface Finalize)

Operações de limpeza:

  • Limpeza do Megatron Framework — Chamadas abort_megatron() para limpar recursos Megatron-specific

  • TransformerEngine Limpeza — Chamadas abort_te() para limpar recursos TransformerEngine

  • Limpeza de RoPE — Chamadas cleanup_rope() para limpar recursos de incorporação de posições rotativas

  • Limpeza de DDP — Chamadas cleanup_ddp() para limpar recursos DistributedDataParallel

  • Recarregamento de módulo — Chamadas reload_megatron_and_te() para recarregar módulos da estrutura

  • Limpeza do módulo Lightning — Opcionalmente, limpa o módulo Lightning para reduzir a memória da GPU

  • Limpeza de memória — Destrói as referências de componentes de treinamento à memória livre

register_attributes(trainer)

Registre a instância do treinador para uso durante as operações de limpeza.

Parâmetros:

  • trainer (pytorch_lightning.Trainer) — Instância do Lightning Trainer para registrar PyTorch

Integração com CheckpointlessCallback

from hyperpod_checkpointless_training.nemo_plugins.callbacks import CheckpointlessCallback from hyperpod_checkpointless_training.inprocess.wrap import HPWrapper # The strategy automatically integrates with HPWrapper @HPWrapper( ... finalize=CheckpointlessFinalizeCleanup(), ) def training_function(): trainer.fit(...)

Observações

  • As operações de limpeza são executadas em uma ordem específica para evitar problemas de dependência

  • A limpeza de memória usa a introspecção da coleta de lixo para encontrar objetos-alvo

  • Todas as operações de limpeza são projetadas para serem idempotentes e seguras para serem repetidas.

CheckpointlessMegatronStrategy

class hyperpod_checkpointless_training.nemo_plugins.megatron_strategy.CheckpointlessMegatronStrategy(*args, **kwargs)

NeMo Estratégia Megatron com recursos integrados de recuperação sem pontos de verificação para treinamento distribuído tolerante a falhas.

Observe que o treinamento inútil requer pelo menos 2 num_distributed_optimizer_instances para que haja replicação otimizada. A estratégia também cuida do registro de atributos essenciais e da inicialização do grupo de processos.

Parâmetros

Herda todos os parâmetros de MegatronStrategy:

  • Parâmetros de NeMo MegatronStrategy inicialização padrão

  • Opções de configuração de treinamento distribuído

  • Configurações de paralelismo do modelo

Atributos.

  • base_store (torch.distributed.TcpStore ou None) — Armazenamento distribuído para coordenação de grupos de processos

Métodos

setup(trainer)

Inicialize a estratégia e registre os componentes de tolerância a falhas com o treinador.

Parâmetros:

  • trainer (pytorch_lightning.Trainer) — instância do Lightning Trainer PyTorch

Operações de configuração:

  • Configuração principal — Chama a MegatronStrategy configuração principal

  • Registro de injeção de falhas — Registra HPFaultInjectionCallback ganchos, se presentes

  • Finalizar registro — Registra o treinador com os manipuladores de finalização de limpeza

  • Registro de aborto — Registra o treinador com manipuladores de abortos que o suportam

setup_distributed()

Inicialize o grupo de processos usando TCPstore com prefixo ou conexão sem raiz.

load_model_state_dict(checkpoint, strict=True)

Carregue o ditado de estado do modelo com compatibilidade de recuperação inútil.

Parâmetros:

  • checkpoint (Mapping [str, Any]) — Dicionário de pontos de verificação contendo o estado do modelo

  • strict (bool, optional) — Se deve ser rigorosamente aplicada a correspondência de chaves de ditado estadual. Padrão: True

get_wrapper()

Obtenha a HPCallWrapper instância para coordenação de tolerância a falhas.

Devoluções:

  • HPCallWrapper— A instância do invólucro conectada ao treinador para tolerância a falhas

is_peft()

Verifique se o PEFT (Parameter-Efficient Fine-Tuning) está ativado na configuração de treinamento verificando os retornos de chamada do PEFT

Devoluções:

  • bool — Verdadeiro se o retorno de chamada PEFT estiver presente, falso caso contrário

teardown()

Substitua a desmontagem nativa PyTorch do Lightning para delegar a limpeza aos manipuladores de abortos.

Exemplo

from hyperpod_checkpointless_training.inprocess.wrap import HPWrapper # The strategy automatically integrates with HPWrapper @HPWrapper( checkpoint_manager=checkpoint_manager, enabled=True ) def training_function(): trainer = pl.Trainer(strategy=CheckpointlessMegatronStrategy()) trainer.fit(model, datamodule)

CheckpointlessCallback

class hyperpod_checkpointless_training.nemo_plugins.callbacks.CheckpointlessCallback( enable_inprocess=False, enable_checkpointless=False, enable_checksum=False, clean_tensor_hook=False, clean_lightning_module=False)

Retorno de chamada Lightning que integra o NeMo treinamento ao sistema de tolerância a falhas do treinamento sem pontos de verificação.

Esse retorno de chamada gerencia o rastreamento de etapas, o salvamento de pontos de verificação e a coordenação da atualização de parâmetros para recursos de recuperação em andamento. Ele serve como o principal ponto de integração entre os ciclos de treinamento do PyTorch Lightning e os mecanismos de treinamento HyperPod inúteis, coordenando as operações de tolerância a falhas em todo o ciclo de vida do treinamento.

Parâmetros

  • enable_inprocess (bool, opcional) — Habilite os recursos de recuperação em processo. Padrão: False

  • enable_checkpointless (bool, opcional) — Ative a recuperação sem ponto de verificação (obrigatório). enable_inprocess=True Padrão: False

  • enable_checksum (bool, opcional) — Habilita a validação da soma de verificação do estado do modelo (obrigatório). enable_checkpointless=True Padrão: False

  • clean_tensor_hook (bool, opcional) — Limpe os ganchos de tensor de todos os tensores da GPU durante a limpeza (operação cara). Padrão: False

  • clean_lightning_module (bool, opcional) — Ative a limpeza do módulo Lightning para liberar memória da GPU após cada reinicialização. Padrão: False

Atributos.

  • tried_adapter_checkpointless (bool) — Sinaliza para rastrear se a restauração sem ponto de verificação do adaptador foi tentada

Métodos

get_wrapper_from_trainer(trainer)

Obtenha a HPCallWrapper instância do treinador para coordenar a tolerância a falhas.

Parâmetros:

  • trainer (pytorch_lightning.Trainer) — instância do Lightning Trainer PyTorch

Devoluções:

  • HPCallWrapper— A instância do wrapper para operações de tolerância a falhas

on_train_batch_start(trainer, pl_module, batch, batch_idx, *args, **kwargs)

Chamado no início de cada lote de treinamento para gerenciar o rastreamento e a recuperação de etapas.

Parâmetros:

  • trainer (pytorch_lightning.Trainer) — instância do Lightning Trainer PyTorch

  • pl_module (pytorch_lightning). LightningModule) — Módulo Lightning sendo treinado

  • lote — Dados atuais do lote de treinamento

  • batch_idx (int) — Índice do lote atual

  • args — Argumentos posicionais adicionais

  • kwargs — Argumentos adicionais de palavras-chave

on_train_batch_end(trainer, pl_module, outputs, batch, batch_idx)

Libere o bloqueio de atualização de parâmetros no final de cada lote de treinamento.

Parâmetros:

  • trainer (pytorch_lightning.Trainer) — instância do Lightning Trainer PyTorch

  • pl_module (pytorch_lightning). LightningModule) — Módulo Lightning sendo treinado

  • saídas (STEP_OUTPUT) — Saídas da etapa de treinamento

  • lote (Qualquer) — Dados atuais do lote de treinamento

  • batch_idx (int) — Índice do lote atual

Observações:

  • O tempo de liberação da trava garante que a recuperação sem necessidade de verificação possa prosseguir após a conclusão das atualizações dos parâmetros

  • Só é executado quando ambos enable_inprocess e enable_checkpointless são verdadeiros

get_peft_callback(trainer)

Recupere o retorno de chamada PEFT da lista de retorno de chamada do treinador.

Parâmetros:

  • trainer (pytorch_lightning.Trainer) — instância do Lightning Trainer PyTorch

Devoluções:

  • PEFT ou None — instância de retorno de chamada PEFT se encontrada, caso contrário, None

_try_adapter_checkpointless_restore(trainer, params_to_save)

Tente uma restauração inútil dos parâmetros do adaptador PEFT.

Parâmetros:

  • trainer (pytorch_lightning.Trainer) — instância do Lightning Trainer PyTorch

  • params_to_save (set) — Conjunto de nomes de parâmetros para salvar como parâmetros do adaptador

Observações:

  • Só é executado uma vez por sessão de treinamento (controlado por tried_adapter_checkpointless bandeira)

  • Configura o gerenciador de pontos de verificação com informações de parâmetros do adaptador

Exemplo

from hyperpod_checkpointless_training.nemo_plugins.callbacks import CheckpointlessCallback from hyperpod_checkpointless_training.nemo_plugins.checkpoint_manager import CheckpointManager import pytorch_lightning as pl # Create checkpoint manager checkpoint_manager = CheckpointManager( enable_checksum=True, enable_offload=True ) # Create checkpointless callback with full fault tolerance checkpointless_callback = CheckpointlessCallback( enable_inprocess=True, enable_checkpointless=True, enable_checksum=True, clean_tensor_hook=True, clean_lightning_module=True ) # Use with PyTorch Lightning trainer trainer = pl.Trainer( callbacks=[checkpointless_callback], strategy=CheckpointlessMegatronStrategy() ) # Training with fault tolerance trainer.fit(model, datamodule=data_module)

Gerenciamento de memória

  • clean_tensor_hook: remove os ganchos do tensor durante a limpeza (caro, mas completo)

  • clean_lightning_module: libera memória da GPU do módulo Lightning durante as reinicializações

  • Ambas as opções ajudam a reduzir o consumo de memória durante a recuperação de falhas

  • Coordena com ParameterUpdateLock para rastreamento seguro de atualização de parâmetros

CheckpointlessCompatibleConnector

class hyperpod_checkpointless_training.nemo_plugins.checkpoint_connector.CheckpointlessCompatibleConnector()

PyTorch Conector de ponto de verificação Lightning que integra a recuperação sem ponto de verificação com o carregamento tradicional de pontos de verificação baseado em disco.

Esse conector amplia o PyTorch Lightning _CheckpointConnector para fornecer uma integração perfeita entre a recuperação sem ponto de verificação e a restauração padrão do ponto de verificação. Ele tenta primeiro a recuperação sem ponto de verificação e, em seguida, volta ao carregamento do ponto de verificação baseado em disco se a recuperação sem ponto de verificação não for viável ou falhar.

Parâmetros

Herda todos os parâmetros de _ CheckpointConnector

Métodos

resume_start(checkpoint_path=None)

Tente pré-carregar o ponto de verificação com prioridade de recuperação sem ponto de verificação.

Parâmetros:

  • checkpoint_path (str ou None, opcional) — Caminho para o ponto de verificação do disco para fallback. Padrão: None

resume_end()

Conclua o processo de carregamento do ponto de verificação e execute as operações pós-carregamento.

Observações

  • PyTorch Amplia a _CheckpointConnector classe interna do Lightning com suporte de recuperação sem necessidade de verificação

  • Mantém total compatibilidade com os fluxos de trabalho padrão do PyTorch Lightning Checkpoint

CheckpointlessAutoResume

class hyperpod_checkpointless_training.nemo_plugins.resume.CheckpointlessAutoResume()

Estende NeMo AutoResume com configuração atrasada para permitir a validação de recuperação sem pontos de verificação antes da resolução do caminho do ponto de verificação.

Essa classe implementa uma estratégia de inicialização em duas fases que permite que a validação de recuperação sem ponto de verificação ocorra antes de voltar ao carregamento tradicional de pontos de verificação baseado em disco. Ele atrasa condicionalmente a AutoResume configuração para evitar a resolução prematura do caminho do ponto de verificação, permitindo primeiro validar se a recuperação ponto CheckpointManager a ponto sem ponto de verificação é viável.

Parâmetros

Herda todos os parâmetros de AutoResume

Métodos

setup(trainer, model=None, force_setup=False)

Atrasar condicionalmente a AutoResume configuração para permitir a validação de recuperação sem necessidade de verificação.

Parâmetros:

  • trainer (pytorch_lightning.Trainer ou lightning.fabric.Fabric) — Lightning trainer ou instância de Fabric PyTorch

  • model (opcional) — Instância de modelo para configuração. Padrão: None

  • force_setup (bool, opcional) — Se verdadeiro, ignore o atraso e execute a configuração imediatamente. AutoResume Padrão: False

Exemplo

from hyperpod_checkpointless_training.nemo_plugins.resume import CheckpointlessAutoResume from hyperpod_checkpointless_training.nemo_plugins.megatron_strategy import CheckpointlessMegatronStrategy import pytorch_lightning as pl # Create trainer with checkpointless auto-resume trainer = pl.Trainer( strategy=CheckpointlessMegatronStrategy(), resume=CheckpointlessAutoResume() )

Observações

  • AutoResume Classe NeMo Extends com mecanismo de atraso para permitir uma recuperação sem necessidade de verificação

  • Funciona em conjunto com o fluxo CheckpointlessCompatibleConnector de trabalho de recuperação completo