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á.
Detecção de trabalhos suspensos
Os trabalhos distribuídos do Ray Train podem ser interrompidos sem produzir um erro. Um único trabalhador falha silenciosamente e todos os outros trabalhadores bloqueiam a próxima operação coletiva, esperando indefinidamente. As GPUs permanecem alocadas com os pesos do modelo carregados, mas não produzem nenhuma computação útil. Como não há mensagem de erro ou falha, a paralisação geralmente passa despercebida por horas até que alguém verifique o progresso do trabalho manualmente.
HyperPod a detecção de trabalhos suspensos monitora continuamente os padrões de utilização da GPU e treina a atividade dos trabalhadores em todo o cluster para identificar trabalhos que pararam de progredir. Quando uma parada é detectada, o sistema a apresenta em minutos, em vez de horas, para que você possa recuperar a tarefa ou liberar a capacidade para outras tarefas.
Como funciona
Por padrão, todos os trabalhadores do Ray Train HyperPod são monitorados usando os padrões da plataforma, sem a necessidade de alterações no código. A plataforma correlaciona os padrões de utilização da GPU com o treinamento da atividade de produção do trabalhador para distinguir entre um trabalho que está ocioso porque está paralisado e um que está ocioso porque está sendo executado ou verificado. I/O Quando uma paralisação é detectada, uma notificação é entregue ao seu painel do HyperPod Observability Grafana e. CloudWatch Para obter mais informações, consulte Visualização de eventos de detecção.
A ação padrão é notificar: HyperPod registra o evento de detecção, mas não encerra o trabalho. Para ativar a recuperação automática, configure regras personalizadas com a cancel ação, conforme descrito na seção a seguir.
Quando você configura regras de detecção personalizadas, elas substituem a detecção padrão desse trabalho. A ação que você especifica em sua configuração personalizada se aplica a todas as detecções de suas regras personalizadas. A detecção padrão continua sendo executada para qualquer trabalho que não configure regras personalizadas.
Configurando regras de detecção personalizadas
Para obter mais controle sobre o comportamento de detecção, você pode definir regras de padrão de registro com tempos limite e ações configuráveis. As regras personalizadas permitem que você detecte paralisações específicas do domínio (por exemplo, nenhuma nova linha de registro da etapa de treinamento por 10 minutos) ou condições de erro (por exemplo, OOM) e escolha se HyperPod deve notificar ou cancelar automaticamente o trabalhador suspenso.
Siga estas etapas para ativar as regras de detecção personalizadas.
-
Adicione a variável de ambiente IP do host ao seu RayCluster manifesto
Adicione a seguinte variável de ambiente em seu YAML
headGroupSpeceworkerGroupSpecsem seu RayCluster YAML. Isso permite que a biblioteca Python em execução dentro do contêiner de treinamento se comunique com o serviço de monitoramento de tarefas no host.spec: headGroupSpec: template: spec: containers: - name: ray-head env: - name: HYPERPOD_JMA_HOST valueFrom: fieldRef: fieldPath: status.hostIP workerGroupSpecs: - template: spec: containers: - name: ray-worker env: - name: HYPERPOD_JMA_HOST valueFrom: fieldRef: fieldPath: status.hostIPnota
Essa variável de ambiente só é necessária para regras de detecção personalizadas. A detecção padrão funciona sem ela.
-
Instale a biblioteca do kit de ferramentas na imagem do contêiner de treinamento
Adicione o pacote https://pypi.org/project/toolkit-for-ray-on-sagemaker-ai/
toolkit-for-ray-on-sagemaker-ai do site PyPI à imagem do seu contêiner de treinamento. A biblioteca está pré-instalada nas imagens SageMaker de distribuição. pip install toolkit-for-ray-on-sagemaker-ai -
Adicione monitoramento à sua função de treinamento
SageMakerLogMonitoring.start()Entre em contato com sua função de treinamento antes de fazer qualquer trabalho significativo. Isso garante que o monitoramento esteja ativo desde o início do treinamento e possa detectar travamentos que ocorrem durante o carregamento do modelo ou na primeira passagem para frente.from toolkit_for_ray_on_sagemaker_ai.log_monitoring import ( SageMakerLogMonitoring, LogMonitorConfig, ) from ray.train import RunConfig, FailureConfig, ScalingConfig from ray.train.torch import TorchTrainer def train_func(): # Start monitoring BEFORE any meaningful work SageMakerLogMonitoring(config=LogMonitorConfig( enabled=True, rules=[ { "name": "training_progress", "type": "log_pattern", "enabled": True, "log_pattern": "(Epoch|Step|Iteration) \\d+", "timeout_minutes": 10, "start_timeout_minutes": 30, "stop_pattern": "Training complete", "fault_on_match": False, }, { "name": "oom_detection", "type": "log_pattern", "enabled": True, "log_pattern": "CUDA out of memory|OutOfMemoryError|OOM", "fault_on_match": True, }, ], action="cancel", )).start() # ... your training loop for epoch in range(num_epochs): print(f"Epoch {epoch}") # This output is what the rule monitors train_one_epoch(model, dataloader) print("Training complete") # Matches stop_pattern, deactivates the rule # Configure FailureConfig so Ray Train automatically restarts all workers # when the cancel action terminates a hung worker. trainer = TorchTrainer( train_func, scaling_config=ScalingConfig(num_workers=4, use_gpu=True), run_config=RunConfig( failure_config=FailureConfig(max_failures=3), ), )Quando a
cancelação encerra um trabalhador suspenso, a documentação do Ray Train FailureConfigna documentação do Ray detecta a falha do trabalhador e reinicia todos os trabalhadores a partir do último ponto de verificação. max_failuresDefina o número de tentativas de recuperação automática que você deseja antes que o trabalho falhe permanentemente. Sem issoFailureConfig, a demissão de um único trabalhador falha em todo o trabalho.Como o Ray Train restaura a partir do último ponto de verificação salvo na reinicialização, nenhum progresso do treinamento é perdido além do trabalho desde o ponto de verificação mais recente. Se seu código de treinamento salvar pontos de verificação periodicamente (por exemplo, em cada limite de época), o trabalho será retomado automaticamente do último estado salvo.
Campos de regras
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name |
string | Sim | Human-readable identificador para a regra. |
type |
string | Sim | Tipo de regra: . Use log_pattern para detecção baseada em registros. |
enabled |
bool | Não | Se essa regra está ativa. O padrão é false. |
log_pattern |
string | Sim | Padrão Regex a ser compatível com o stdout do trabalhador (sintaxe RE2, máximo de 256 caracteres). |
timeout_minutes |
flutuação | Não | Máximo de minutos entre correspondências consecutivas de padrões antes de declarar um bloqueio. |
start_timeout_minutes |
flutuação | Não | Máximo de minutos a partir do início do trabalho para a primeira correspondência de padrões. Útil para permitir o tempo de inicialização (carregamento do modelo, download de dados). Se o padrão não aparecer nessa janela, a tarefa será considerada suspensa. |
stop_pattern |
string | Não | Regex que desativa essa regra quando combinada (por exemplo,). "Training complete" |
fault_on_match |
bool | Não | Setrue, declara um bloqueio imediatamente quando o padrão coincide. Use para padrões de erro como OOM. Quandotrue, não timeout_minutes é necessário. |
metric_evaluation_data_points |
int | Não | Número de ciclos de avaliação consecutivos que devem confirmar a condição antes de declarar uma suspensão. O padrão é 1. |
Ações
| Ação | Description |
|---|---|
notify |
Emita um evento de detecção para o CloudWatch Grafana, mas não realize nenhuma ação automática. Esse é o padrão. |
cancel |
Encerre o processo de suspensão do trabalhador. O Ray Train embutido FailureConfig reinicia todos os trabalhadores a partir do último ponto de verificação. Para usar essa ação, configure FailureConfig com novas tentativas suficientes em seuRunConfig. |
Optar por não ser detectado
Para desativar toda a detecção de tarefas suspensas para uma tarefa específica, incluindo a detecção padrão e quaisquer regras personalizadas:
from toolkit_for_ray_on_sagemaker_ai.log_monitoring import ( SageMakerLogMonitoring, LogMonitorConfig, ) def train_func(): SageMakerLogMonitoring(config=LogMonitorConfig(enabled=False)).start() # ... training continues with no monitoring
Visualização de eventos de detecção
Quando um trabalho suspenso é detectado, o evento aparece nos seguintes locais:
-
CloudWatch Registros: grupo de registros
/aws/sagemaker/Clusters/, fluxo de registroscluster-name/cluster-idSageMakerHangJobDetectionEvents/. Pesquiseinstance-group-name/instance-idHANG_DETECTEDpara encontrar eventos de detecção. -
Grafana: Se o complemento HyperPod Observability estiver instalado, os eventos de detecção aparecerão no painel do Ray Train, abaixo do painel de detecção de trabalhos suspensos. Para obter mais informações, consulte Observabilidade.
Cada evento de detecção inclui o ID do trabalho, a evidência que acionou a detecção e a ação tomada (notifyoucancel).